sql - 包含大部分相同字段的 SQL 表?
问题描述
我必须设计一个数据库来存储有关各种项目的信息。大多数信息与“名称”非常相似,但每种类型的项目都有一些独特的属性,在数量上有所不同,例如,一种具有“颜色”,而另一种具有“重量”和“高度”。
我试图为每个项目创建一个单独的表,但这使得这些表几乎相同,并且从所有表中检索所有项目很麻烦。有更好的方法吗?
解决方案
有几种解决方案。
(1) 您可以只列出所有可能的属性,并NULL
在它们不适用时保留它们。
(2) 您可以在一个带有主键的表中拥有所有公共属性。然后让其他类型的实体存储特定于实体的列。
(3) 您可以为每个实体有单独的表格,只需重复常见的项目。
(4) 您可以使用实体-属性-值 (EAV) 模型。那是一个带有实体 id、列名和列值的表。
(5) 您可以使用混合 EAV 模型,当您有一个具有公共属性的中央表和一个具有附加属性的 EAV 表时。
(6) 您可以将值存储为 JSON、XML 或类似的编码列。
可能还有其他选择。其中一个比其他更好吗?天哪,我想我已经在不同的情况下和不同的数据库中使用了它们。
因此,在特定情况下可能会有“更好”的方法,但您的问题并未提供任何具体信息来做出此类判断。
推荐阅读
- android - 在 android 中对音频(例如机器人声音、大型机器人声音)应用效果
- javascript - 派生数据是否应该由 NGRX 存储负责?
- c# - 面板控制和检查面板属性为空
- python-3.x - 如何使用 Mac 在 Pycharm 中将 .ARFF 文件转换为 CSV?
- swift - 如何在用户输入“readLine()”中使用二元运算符“%”?
- ios - 在存储的 Fetch Request 中使用自定义谓词时,变量替换的正确语法是什么?
- git - 使用 git subtree 推送到项目根目录
- java - ServerSoket checkOldImpl 方法有什么用?
- react-native - 将数组状态传递给另一个类反应原生
- apache-kafka - 具有不同数据格式的Kafka主题