-1

我有一个拥有这么多属性的实体,客户想稍后添加更多属性,也可能删除一些属性,他可以随时添加或删除

所以我做了这个 我做了什么

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

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

你会如何解决这个问题?

  • 笔记:

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

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

编辑:关于attributeValues 我忘了提到的一点是我需要选择已经插入的旧值或添加新值

4

1 回答 1

1

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

是的。这是实体属性值设计的缺陷之一。实际上; 这是较小的陷阱之一;等到您必须编写一些报告或运行复杂的查询。

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

通常,EAV 设计仅适用于可能的属性值数量较多而实际值数量较少的情况。典型的例子是医疗病人记录,病人可能出现的症状数量非常多,但实际症状的数量可能相对较少。

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

于 2012-05-07T05:14:38.603 回答