SQL外键冗余

时间:2013-07-19 23:13:16

标签: sql sql-server optimization foreign-keys primary-key

这是关于外键冗余的问题

redundant foreign key?< - 类似问题

一般情况:

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

引用主键

来自C的外键 - >因为C通过B连接到A?

所必需的

具体:3桌

供应商信息表A

供应商ID - PK

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

部分编号 - PK
收到日期 - PK
供应商ID - FK

部分Rprt表C

部分# - PK& FK
日期 - PK& FK
供应商ID - FK

谢谢 - 欢迎重新加工所有表格的建议

1 个答案:

答案 0 :(得分:2)

如果您认为某个人的供应商始终该部件所代表的供应商,那么该密钥在技术上将是多余的。请记住,事情会随着时间而改变。据推测,供应商可以合并,人们可以改变与之相关的供应商,与部件相关的供应商可能会发生变化。

但是,数据结构看起来不正确。我认为你会想要一个person表,其中只包含有关此人的信息。我不了解部分和人之间的关系。

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