# 超键、候选键、主键、外键

  • 超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键。
  • 候选键(candidate key):不含有多余属性的超键叫做候选键,即最小的超键,没有冗余元素
  • 主键(primary key):数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合叫做主键。一个数据列只能有一个主键,且主键的取值不能为空
  • 外键(foreign key):在一个表中,存在另一个表的主键,就叫做这个表的外键

假如有以下两个表:

学生表(学号,身份证号,姓名,性别,老师编号);老师表(老师编号,姓名,性别)。

超键:因为超键的定义是关系中能够唯一标识的属性,所以对于学生表来说,学号身份证号是可以表示学生的(都是唯一的),所以超键就是含有学号身份证号的任意组合。比如:(学号)(学号,姓名)(身份证号,性别)等等。

候选键:候选键属于超键,是最小的超键,所以对于学生表而言的候选键为:学号身份证号

主键:主键就是候选键中的一个(当然有时候选键只有一个),是人为规定的。例如,我们通常设置学号为主键。

外键:外键就是两个表之间的连接。例如,在学生表中有一个字段是老师编号,而老师编号又是老师表中的主键,那么老师编号这个字段就是学生表中的外键。