超键
定义:在关系模式中,可以唯一标识一个元组的属性集称为超键(Super Key)。
举个栗子:student(Sno, Sname, Sage, Ssex)
在这个结构中,只有包含Sno的属性集合才能是超键,因为如果不包含Sno,可能会出现同名,同姓的人,也可能出现同岁的人,所以在上面的关系模式中只有通过学号才能找到某个特定的学生。
因此上述关系模式中只有包含学号的属性集才能称之为超键:
例如:(Sno), (Sno, Sname), (Sno, Sname, Sage)等
候选键
定义:在关系模式中,能唯一标识元组并且不含多余属性的属性集称为候选键(Candidate Key)。
例如在上面提到的例子中,student(Sno, Sname, Sage, Ssex)
如果没有重名的学生,Sname也可以当成是候选键,这里可以看出候选键是一种特殊的超键,即把超键中多余的属性删除就可以叫做候选键。
所以上述关系中(Sno)(Sname)可以叫做候选键。
主键
定义:在关系模式中的若干个候选键中,随意指定一个作为关键字,此关键字即为主键(Primary Key)。
分析:student(Sno, Sname, Sage, Ssex)
主键很好理解,就在在候选键的基础上任意选择一个作为主键(理解这点就明白了什么可以当主键了),同时衍生出复合主键和联合主键 ,假设我们没有学号字段,如果可以通过姓名,年龄,性别一同找到某个特定的学生,那么就称(name, age, sex)为复合主键,全部由主键构成的称为联合主键。
因此上述关系模式中,姓名,和年龄也能唯一确定学生,那么主键有:
例:(Sno), (Sname),复合主键(Sname,Sage)
外键
定义:可以把一张表的数据与另一张表关联起来,这种列称为外键
(Foreign Key)。
分析:student(Sno, Sname, Sage, Ssex,SCredit), score(Sno, Tno, Sco)
外键是建立在两个关系模式中的,从上述定义中可用知道,某关系模式中主键一定是其候选键,那对于另一关系,只要原关系的主键只表示普通属性,那它就是另一属性的外键,上表中Sno就是score的外键,他把两个表关联起来了。