3

我有两个表 Catalog 和 CatalogIndex

目录有以下列

DN
PID
PURL
Desc

其中 DN、PID 两列是该表的复合主键的一部分。

CatalogIndex 具有以下列

PID
PItem
PVal

PID 和 PItem 是 CatalogIndex 表的复合主键的一部分。

我想在引用目录表中的 PID 的 PID 列上向 CatalogIndex 添加一个外键。

我正在使用 SQL Server 2008

谢谢

4

2 回答 2

7

不能只引用复合主键的一部分(复合 PK 的众多缺点之一 - 引用它们真的很麻烦)。

您需要引用密钥,整个密钥,除了密钥之外什么都没有(所以帮助你 Codd :-))。

唯一的其他选择是UNIQUE INDEX在您希望引用的那些列上创建一个新的(如果它们本身确实是唯一的),然后使用该唯一索引来引用该列子集。

于 2011-03-16T10:26:04.173 回答
0

您可能需要一个更规范化的架构,其中包含一个单独的表,该表在 PID 列上有一个 PK。您的请求是一种气味,表明数据库设计不完善。

于 2011-03-16T19:29:56.290 回答