我有一个拥有如此多属性的实体,而客户希望稍后添加更多,也可能会删除一些 他可以随时添加或删除
所以我这样做了
但现在当我需要添加或删除时,我需要更改3个表并添加约束
你会如何解决这个问题?
请注意:
属性超过40,可能是以太网数字或字符串
我可能不会经常删除属性
编辑:我忘了提及关于attributeValues的事情是我需要选择已插入的旧值或添加新的
答案 0 :(得分:1)
现在当我需要添加或删除时,我需要更改3个表并添加约束
是的。这是Entity Attribute Value设计的一个陷阱。其实;这是一个较小的陷阱;等到你必须写一些报告或运行一个复杂的查询。
但是,如果那是客户想要的......
通常,EAV设计仅在可能的属性值的数量很大时才适用,但实际值的数量很小。典型的例子是医疗患者记录,其中患者可能具有的症状数量非常大,但实际症状的数量可能相对较小。
请注意,您设计中最左侧的表格是错误的;而不是像attribute1
,attribute2
这样的字段,在最左边和中间表之间应该有一个链接表,创建多对多关系。