2011-03-16 101 views
2

引用一个专栏中,我有两个表目录和CatalogIndex如何创建一个外键复合主键

目录下面几列

DN 
PID 
PURL 
Desc 

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

CatalogIndex具有以下的列

PID 
PItem 
PVal 

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

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

我使用SQL Server 2008的

谢谢

回答

7

不能参考之用复合主键的部分(化合物PK的许多缺点之一 - 它变得非常凌乱引用它们) 。

你需要参考的钥匙,整个钥匙只有钥匙(所以帮你Codd :-))。

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

0

您可能需要一个更规范化的模式,使用一个单独的表在PID列上具有PK。您的请求是一种表示数据库设计不完善的气味。