我应该如何构建关系松散的 SQL 数据库
How should I architect my SQL db with loose relationships
我想这更像是一个哲学问题。我有一件商品有 4 种变体。这些变体将共享大约 80% 的列。有问题的项目是投资组合示例,变化是 photography/video/web/graphic。他们将共享客户、日期等列名称。
我的问题是,我应该为每个变体设置 1 个 table 还是为 1 个基础 table 和一个额外的 table 用于特定变体的列。我 "never" 需要同时拉下一个 photo/web 示例或者你有什么。
我不确定如何Google搜索它,尽管它相当基础
只要变体 ID 没有特定规则,只需创建一个媒体 table。
如果你决定让他们分开,我希望 table 有约会并且 client_id。
你们有 one-of 关系。关键问题是 other tables 将如何引用该实体。
共有三个选项:
- 所有引用均指向 parent 实体。例如,所有项目都有价格历史记录、类别或评论,并且参考仅针对 parent.
- 所有引用均参考 children。例如,照片中可能包含 objects,视频中可能包含制作者列表,等等。
- 参考可以是任何一个。
答案是什么? (1) 建议所有行都应该在一个 table 中,并为所有人共享一个 id。 (2) 建议每个变体的行应该在单个 table 中。
(3)有点难。我建议使用 parent table 和 80% 的列。然后 children tables 与其余的。 children table 的主键与 parent 的主键相同(是的,一个列可以既是主键又是外键)。
对于这种情况,您需要做一些工作来确保给定的 parent 实体恰好出现在一个 child table 中。这可以用外键和触发器来处理(在MySQL)。
我想这更像是一个哲学问题。我有一件商品有 4 种变体。这些变体将共享大约 80% 的列。有问题的项目是投资组合示例,变化是 photography/video/web/graphic。他们将共享客户、日期等列名称。
我的问题是,我应该为每个变体设置 1 个 table 还是为 1 个基础 table 和一个额外的 table 用于特定变体的列。我 "never" 需要同时拉下一个 photo/web 示例或者你有什么。
我不确定如何Google搜索它,尽管它相当基础
只要变体 ID 没有特定规则,只需创建一个媒体 table。
如果你决定让他们分开,我希望 table 有约会并且 client_id。
你们有 one-of 关系。关键问题是 other tables 将如何引用该实体。
共有三个选项:
- 所有引用均指向 parent 实体。例如,所有项目都有价格历史记录、类别或评论,并且参考仅针对 parent.
- 所有引用均参考 children。例如,照片中可能包含 objects,视频中可能包含制作者列表,等等。
- 参考可以是任何一个。
答案是什么? (1) 建议所有行都应该在一个 table 中,并为所有人共享一个 id。 (2) 建议每个变体的行应该在单个 table 中。
(3)有点难。我建议使用 parent table 和 80% 的列。然后 children tables 与其余的。 children table 的主键与 parent 的主键相同(是的,一个列可以既是主键又是外键)。
对于这种情况,您需要做一些工作来确保给定的 parent 实体恰好出现在一个 child table 中。这可以用外键和触发器来处理(在MySQL)。