2011-08-19 53 views
1

我有这样的:如果我有一个复杂的主键,是否有可能仅为其中的一列创建外键?

ID1 INTEGER PRI 
ID2 INTEGER PRI 
NAME VARCHAR 

现在我需要:

ID1_REF INTEGER REFERENCE TO ID1 
DESCRIPTION VARCHAR 

左右,一列是指主键的一列,不列2。关系数据库中甚至有可能吗?

+0

MySQL将使用该列创建另一个索引并创建指向它的FK,它不会重用该部分的PK。 –

+1

请详细说明一下。外键必须引用一个或多个唯一标识父记录的字段。如果您的父表需要两个字段来标识唯一性,那么当它引用的字段不唯一时,外键如何识别父记录? – Bueller

回答

1

不,你不能。 外键必须引用被引用表中的主键或另一个超级键(唯一标识该表中该行的属性/列集合,无论这是否是实际声明的主键)。 也值得阅读Wikipedia article

0

技术上你可以做任何你想做的事。但理论上这打破了主键和外键的主要概念。其实这只是一个术语问题。我不确定您的示例中的密钥是否可以称为外键。也许我们可以把它称为部分外键或其他东西。

相关问题