我有一个拥有这么多属性的实体,客户想稍后添加更多属性,也可能删除一些属性,他可以随时添加或删除
所以我做了这个
但现在当我需要添加或删除时,我需要更改 3 个表并添加约束
- 我知道这不是一个好的解决方案,但不知道该怎么做
你会如何解决这个问题?
笔记:
属性超过 40,可能是以太数字或字符串
我可能不会经常删除属性
编辑:关于attributeValues 我忘了提到的一点是我需要选择已经插入的旧值或添加新值
我有一个拥有这么多属性的实体,客户想稍后添加更多属性,也可能删除一些属性,他可以随时添加或删除
所以我做了这个
但现在当我需要添加或删除时,我需要更改 3 个表并添加约束
你会如何解决这个问题?
笔记:
属性超过 40,可能是以太数字或字符串
我可能不会经常删除属性
编辑:关于attributeValues 我忘了提到的一点是我需要选择已经插入的旧值或添加新值
现在当我需要添加或删除时,我需要更改 3 个表并添加约束
是的。这是实体属性值设计的缺陷之一。实际上; 这是较小的陷阱之一;等到您必须编写一些报告或运行复杂的查询。
但是,如果这是客户想要的...
通常,EAV 设计仅适用于可能的属性值数量较多而实际值数量较少的情况。典型的例子是医疗病人记录,病人可能出现的症状数量非常多,但实际症状的数量可能相对较少。
请注意,您设计中最左边的表格是错误的;attribute1
而不是像,之类的字段,attribute2
在最左边的表和中间的表之间应该有一个链接表,创建一个多对多的关系。