澄清外键,SQL

时间:2015-11-05 06:18:24

标签: sql database-design foreign-keys

如果我这样做,以便我的关系A中的一个属性引用另一个关系B的外键,A中的属性是否必须是A的主键(或A的主键的一部分)?

另外,我的理解是,为了引用属性,引用的属性必须是键或唯一。我是否正确断言我们无法引用主键的一部分(即如果主键有两个属性,我们需要引用它们或两者都没有,因为它本身的两个属性都不保证是唯一的)? / p>

2 个答案:

答案 0 :(得分:1)

外键必须引用某些类别的唯一键,无论它是否为主键。您不能仅引用复合唯一键的一部分,除非它本身就是一个唯一键。

引用字段可以是唯一键(使关系为1:0..1关系,但不一定是一个。

答案 1 :(得分:0)

是的,你理解正确。假设您存储的信息是关于在狗窝里洗狗的信息,而且您有两张桌子(tbl_dog,tbl_DogsWashed)。

tbl_Dog有列(DogId,DogsName,Breed,OwnersIdentityNumber)

tbl_DogsWashed有列(DogsWashedId,DogsName)

如果您使用狗的名字将两张桌子连在一起,那么您可能会冒两个同名的狗用洗涤的风险。

相反,tbl_Dog将具有列(DogsWashedId,DogId),您将使用DogsName,Breed,OwnersIdentityNumber等查找DogId,并使用来自tbl_Dog的主键填充tbl_DogsWashed表。