【问题标题】:Have a relationship between one table with one primary key and another with two primary keys?一个具有一个主键的表和另一个具有两个主键的表之间是否存在关系?
【发布时间】:2020-03-10 04:38:32
【问题描述】:

我一般是问这个问题,但我会举一个例子来说明。

Table1 有以下列:

ID (Pk)
Order_Desc
Order_DT 

Table2 有以下列:

ID (PK)
Product_Code (PK)
Product_Desc 

我可以在 Table1 和 Table2 之间建立关系吗?如果是这样,您将如何在 SQL 中执行此操作而不会遇到错误?如果产品代码或 ID 不是主键,您能否创建关系?相反,它是一个外键?

【问题讨论】:

  • 您的table2 没有 有两个主键 - 它有 ONE 由 2 列组成的主键。任何关系表 NEVER 都有多个主键 - 这根本不可能。任何 FK 关系现在都必须包含 all 引用表的 PK 所具有的列 - 所以任何到 Table2 的 FK *必须包含 IDProduct_Code
  • 知道了,基本上,您需要 ID 和 Product_Code 出现在两个表中,Table1 和 Table2。如果复合主键是 ID 和 Product Code,对吧?
  • 是的 - 您可以引用整个(主)密钥 - 不能引用它的一部分。这是一个全有或全无 - 没有引用,或者您必须在您的外键中包含引用表的主键中的所有列
  • 这是有道理的。谢谢!

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


【解决方案1】:

您的 table2 没有 两个 主键 - 它有 ONE 由 2 列组成的主键。任何关系表 NEVER 都有多个主键 - 这根本不可能。

与该表的任何 FK 关系都必须包含 所有 列,即引用表的 PK 具有的 - 所以任何到 Table2 的 FK 必须包含 IDProduct_Code

这是一个全有或全无的命题 - 您的外键包含引用表主键的 所有 列 - 或者您无法建立 FK 关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多