主键和超级键的区别
1. 超级键
超级键是一个属性(或一组属性),用于唯一标识关系中的所有属性。所有的超级键都不能是候选键,但反之亦然。在一个关系中,超级键的数量多于候选键的数量。
例子:
我们有一个给定的关系 R(A, B, C, D, E, F),我们将通过以下给定的依赖关系检查是否是超级键:
功能依赖 超级键
AB->CDEF 是
CD->ABEF 是
CB->DF 否
D->BC 否
通过使用键 AB,我们可以识别表的其余属性 (CDEF)。同样的关键 CD。但是,通过使用密钥 CB,我们只能识别 D 和 F,而不是 A 和 E。同样,密钥 D。
2. 主键
候选键是唯一标识关系或表中的元组的一组属性(或属性)。可以有多个候选键,其中一个可以被选为主键。
例子:
student{Stud_No,Stud_name,Stud_phone,
Stud_state, Stud_country, Stud_age}
这里我们可以看到两个候选键 Stud_No
和 Stud_phone
。可以选择 Stud_No
作为主键(许多候选键中只有一个)。
超级键和主键的区别:
编号 | 超级键 | 主键 |
---|---|---|
1 | 超级键是一个属性(或属性集),用于唯一标识关系中的所有属性。 | 主键是用于唯一标识关系中所有属性的最小属性集(或属性集)。 |
2 | 所有超级键不能是主键。 | 主键是最小的超级键。 |
3 | 各种超级键共同构成选择候选键的标准。 | 可以选择任何最小的候选键作为主键。 |
4 | 在一个关系中,超级键的数量多于主键的数量。 | 在关系中,主键的数量少于超级键的数量。 |
5 | 超级键的属性可以包含 NULL 值。 |
主键的属性不能包含 NULL 值。 |