我想这更像是一个哲学问题。我有一件商品有 4 种变化。这些变体将共享大约 80% 的列。该项目是一个作品集示例,其变体是摄影/视频/网络/图形。他们将共享列名称,例如客户、日期等。
我的问题是,我应该为每个变体准备 1 个表,还是为 1 个基表和一个用于特定变体列的附加表。我“永远”不需要同时拉下照片/网络示例或其他什么。
尽管它相当基本,但我不确定如何在 Google 上搜索它
最佳答案
你们之间是一对一的关系。关键问题是其他表如何引用该实体。
共有三个选项:
- 所有引用均指向父实体。例如,所有商品都有价格历史记录、类别或评论,并且引用仅针对父级。
- 所有引用内容均针对 child 。例如,照片中可能包含对象,视频可能包含制作者列表,等等。
- 引用文献可以是其中任何一个。
答案是什么? (1) 建议所有行都应位于一个表中,并为所有人共享一个 id。 (2) 建议每个变体的行应位于一个表中。
(3) 有点困难。我会推荐一个包含 80% 列的父表。然后 children 和剩下的人一起坐 table 。子表的主键与父表的主键相同(是的,一列可以既是主键又是外键)。
对于这种情况,您需要做一些工作来确保给定的父实体恰好出现在一个子表中。这可以通过外键和触发器(在 MySQL 中)来处理。
关于mysql - 我应该如何构建具有松散关系的 SQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49330670/