【发布时间】: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 *必须包含ID和Product_Code -
知道了,基本上,您需要 ID 和 Product_Code 出现在两个表中,Table1 和 Table2。如果复合主键是 ID 和 Product Code,对吧?
-
是的 - 您可以仅引用整个(主)密钥 - 不能引用它的一部分。这是一个全有或全无 - 没有引用,或者您必须在您的外键中包含引用表的主键中的所有列
-
这是有道理的。谢谢!
标签: sql-server foreign-keys primary-key