主键和超级键的区别

主键和超级键的区别

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_NoStud_phone 。可以选择 Stud_No 作为主键(许多候选键中只有一个)。

超级键和主键的区别:

编号 超级键 主键
1 超级键是一个属性(或属性集),用于唯一标识关系中的所有属性。 主键是用于唯一标识关系中所有属性的最小属性集(或属性集)。
2 所有超级键不能是主键。 主键是最小的超级键。
3 各种超级键共同构成选择候选键的标准。 可以选择任何最小的候选键作为主键。
4 在一个关系中,超级键的数量多于主键的数量。 在关系中,主键的数量少于超级键的数量。
5 超级键的属性可以包含 NULL 值。 主键的属性不能包含 NULL 值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程