主键与候选键的区别
主键和候选键都是用于从表中访问元组的属性,这些键(主键和候选键)也可用于在两个表之间创建关系。
主键
主键是一组属性(或属性),用于唯一标识关系或表中的元组。主键是最小的超级键,所以在任何关系中都只有一个主键。例如,
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 | 确认主键是候选键。 | 但它没有确认候选键可以是主键。 |