1

这是关于外键冗余的问题

多余的外键? <- 类似问题

一般来说:

表 C中的外键引用表 B 中的主键表 C中的外键引用 A中的B中的键引用表 A 中的主

由于 C 通过 B 连接到 A,因此 C -> A 的外键是否必要?

具体:3张表

供应商信息表 A

供应商 ID - PK

人员联系信息(供供应商) 表 B

零件编号 - PK
收到日期 - PK
供应商 ID - FK

部分 Rprt 表 C

零件编号 - PK 和 FK
日期 - PK 和 FK
供应商 ID - FK

谢谢 - 也欢迎对所有表进行返工的建议

4

1 回答 1

2

如果您假设一个人的供应商始终是该零件所代表的供应商,则该密钥在技术上将是多余的。请记住,事情会随着时间而改变。据推测,供应商可能会合并,人们可能会更改他们关联的供应商,并且与零件关联的供应商可能会发生变化。

然而,数据结构看起来并没有正确规范化。我认为您会想要一张person仅包含有关此人的信息的表格。我不明白零件和人之间的关系。

所以,我认为你应该重新设计你的数据结构。我建议您从您确定的实体开始——供应商、人员和零件。如有必要,然后为它们创建关联表。很有可能每个人都应该只有一个SupplierId,每个部分都应该有一个SupplierId,并且对关系进行建模。如果零件和人之间存在关系,那么您可能只需要PersonId零件中的一个字段就可以满足这一点。

于 2013-07-19T23:21:49.420 回答