什么是最好的方式:实体有很多属性

时间:2012-05-07 05:10:19

标签: database-design entity

我有一个拥有如此多属性的实体,而客户希望稍后添加更多,也可能会删除一些 他可以随时添加或删除

所以我这样做了 what I did

但现在当我需要添加或删除时,我需要更改3个表并添加约束

  • 我知道这不是一个好的解决方案,但不知道该怎么办

你会如何解决这个问题?

  • 请注意:

  • 属性超过40,可能是以太网数字或字符串

  • 我可能不会经常删除属性

编辑:我忘了提及关于attributeValues的事情是我需要选择已插入的旧值或添加新的

1 个答案:

答案 0 :(得分:1)

  

现在当我需要添加或删除时,我需要更改3个表并添加约束

是的。这是Entity Attribute Value设计的一个陷阱。其实;这是一个较小的陷阱;等到你必须写一些报告或运行一个复杂的查询。

但是,如果那是客户想要的......

通常,EAV设计仅在可能的属性值的数量很大时才适用,但实际值的数量很小。典型的例子是医疗患者记录,其中患者可能具有的症状数量非常大,但实际症状的数量可能相对较小。

请注意,您设计中最左侧的表格是错误的;而不是像attribute1attribute2这样的字段,在最左边和中间表之间应该有一个链接表,创建多对多关系。