我有两个表Catalog和CatalogIndex
目录包含以下列
DN
PID
PURL
Desc
其中两列DN,PID是此表的复合主键的一部分。
CatalogIndex具有以下列
PID
PItem
PVal
PID和PItem是CatalogIndex表的复合主键的一部分。
我想在PID列上为CatalogIndex添加一个foriegn键,该列引用Catalog表中的PID。
我正在使用SQL Server 2008
谢谢
答案 0 :(得分:7)
你不能仅引用复合主键的一部分(复合PK的许多缺点之一 - 引用它们会非常混乱)。
你需要引用密钥,整个密钥以及密钥(所以请帮助你Codd :-))。
唯一的另一个选择是在你想引用的那些列上创建一个新的UNIQUE INDEX
(如果它们确实是唯一的),然后使用该唯一索引来引用该列的子集。 / p>
答案 1 :(得分:0)
您可能需要一个更规范化的架构,其中一个单独的表在PID列上具有PK。您的请求是一种气味,表明数据库设计不完善。