主键和候选键都是用于从表中访问元组的属性,这些键(主键和候选键)也可用于在两个表之间创建关系。

主键

主键是一组属性(或属性),用于唯一标识关系或表中的元组。主键是最小的超级键,所以在任何关系中都只有一个主键。例如,

Student{ID, F_name, M_name, L_name, Age}

这里只有 ID 可以作为主键,因为姓名、年龄和地址可以相同,但 ID 不能相同。

候选键

候选键是唯一标识关系或表中的元组的一组属性(或属性)。众所周知,主键是最小的超级键,因此在任何关系中都只有一个主键,但可以出现多个候选键。候选键的属性可以包含一个与主键不同的 NULL 值。例如,

Student{ID, First_name, Last_name, Birthday}

这里我们可以看到两个候选键 ID{First_name, Last_name, Birthday}。所以在这里,存在多个候选键,它们可以唯一地标识一个关系中的一个元组。

主键和候选键之间的比较区别:

编号 主键 候选键
1 主键是最小的超级键。因此,关系中只有一个主键。 在关系中可以有多个候选键。
2 主键的任何属性都不能包含NULL值。 在候选键中,任何属性都可以包含 NULL 值。
3 主键可以是可选的,以指定任何关系。 但是没有候选键就不能指定任何关系。
4 主键指定关系的重要属性。 候选指定可以作为主键的键。
5 确认主键是候选键。 但它没有确认候选键可以是主键。