【问题标题】:SQL Foreign Key RedundancySQL 外键冗余
【发布时间】:2013-07-20 07:21:49
【问题描述】:

这是关于外键冗余的问题

redundant foreign key?

一般:

表 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

谢谢 - 也欢迎对所有表格提出修改建议

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 2017-08-10
      • 2017-03-25
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多