我必须设计一个数据库来存储有关各种项目的信息。大多数信息将非常相似,例如“名称”,但每种类型的商品都有一些数量不同的独特属性,例如,一种商品具有“颜色”,而另一种商品则具有“重量”和“高度”。
我尝试为每个项目创建一个单独的表,但这使这些表几乎相同,并且从所有表中检索所有项都很麻烦。有更好的方法吗?
答案 0 :(得分:0)
有几种解决方案。
(1)您可以仅列出所有可能的属性,并在不适用时将其设置为NULL
。
(2)您可以在具有主键的单个表中拥有所有公共属性。然后让每种其他类型的实体存储特定于该实体的列。
(3)每个实体可以有单独的表,而只需重复常见项即可。
(4)可以使用实体属性值(EAV)模型。那是一个具有实体ID,列名和列值的表。
(5)当您具有一个具有公共属性的中央表和一个具有附加属性的EAV表时,可以使用混合EAV模型。
(6)您可以将值存储为JSON,XML或类似的编码列。
可能还有其他选择。其中之一比其他更好吗?天哪,我想我已经在不同的情况下和不同的数据库中使用了它们。
因此,在特定情况下可能会采用“更好”的方式,但是您的问题并未提供做出此类判断的任何特定信息。