SQL表包含几乎相同的字段?

时间:2019-07-13 19:35:40

标签: sql

我必须设计一个数据库来存储有关各种项目的信息。大多数信息将非常相似,例如“名称”,但每种类型的商品都有一些数量不同的独特属性,例如,一种商品具有“颜色”,而另一种商品则具有“重量”和“高度”。

我尝试为每个项目创建一个单独的表,但这使这些表几乎相同,并且从所有表中检索所有项都很麻烦。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

有几种解决方案。

(1)您可以仅列出所有可能的属性,并在不适用时将其设置为NULL

(2)您可以在具有主键的单个表中拥有所有公共属性。然后让每种其他类型的实体存储特定于该实体的列。

(3)每个实体可以有单独的表,而只需重复常见项即可。

(4)可以使用实体属性值(EAV)模型。那是一个具有实体ID,列名和列值的表。

(5)当您具有一个具有公共属性的中央表和一个具有附加属性的EAV表时,可以使用混合EAV模型。

(6)您可以将值存储为JSON,XML或类似的编码列。

可能还有其他选择。其中之一比其他更好吗?天哪,我想我已经在不同的情况下和不同的数据库中使用了它们。

因此,在特定情况下可能会采用“更好”的方式,但是您的问题并未提供做出此类判断的任何特定信息。