首页 > 解决方案 > 包含大部分相同字段的 SQL 表?

问题描述

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

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

标签: sql

解决方案


有几种解决方案。

(1) 您可以只列出所有可能的属性,并NULL在它们不适用时保留它们。

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

(3) 您可以为每个实体有单独的表格,只需重复常见的项目。

(4) 您可以使用实体-属性-值 (EAV) 模型。那是一个带有实体 id、列名和列值的表。

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

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

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

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


推荐阅读