我应该如何构建关系松散的 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 将如何引用该实体。

共有三个选项:

  1. 所有引用均指向 parent 实体。例如,所有项目都有价格历史记录、类别或评论,并且参考仅针对 parent.
  2. 所有引用均参考 children。例如,照片中可能包含 objects,视频中可能包含制作者列表,等等。
  3. 参考可以是任何一个。

答案是什么? (1) 建议所有行都应该在一个 table 中,并为所有人共享一个 id。 (2) 建议每个变体的行应该在单个 table 中。

(3)有点难。我建议使用 parent table 和 80% 的列。然后 children tables 与其余的。 children table 的主键与 parent 的主键相同(是的,一个列可以既是主键又是外键)。

对于这种情况,您需要做一些工作来确保给定的 parent 实体恰好出现在一个 child table 中。这可以用外键和触发器来处理(在MySQL)。