【发布时间】:2011-05-02 05:45:19
【问题描述】:
我们的数据库是基于 EAV(实体-属性-值)模型设计的。那些使用过 EAV 模型的人都知道为了灵活性而附带的所有废话。
我向我的客户询问了使用 EAV 模型(灵活性)的原因,他们的回答是:他们的实体会随着时间而变化。所以,今天他们可能有一个包含一些属性的表,但在一个月的时间内,可能会添加一些新属性,或者可能会重命名现有属性。他们需要生成报告以及时回到任何阶段,并根据该阶段实体的形状查询数据。
我知道这对于传统的关系模型是不可行的,但我个人认为 EAV 是反模式。是否有任何其他替代模型使我们能够捕获实体和实例更改的时间维度?
干杯, 莫什
【问题讨论】:
-
与其替换现有的东西,因为它确实满足特定需求,您应该考虑使用存储随时间变化的东西来扩充您的基本 EAV 模型。
-
我同意 RibaldEddie 的观点,这并不简单,但在属性定义中添加日期/版本可能比完全重构基于当前架构的所有代码更容易。
-
有没有机会解决这个问题?要么 cmets 和进度,要么投票和选择答案。谢谢。
标签: database database-design data-structures data-modeling entity-attribute-value