SQL小小知识点:超键,候选键,主键,外键基本概念


超键

定义:在关系模式中,可以唯一标识一个元组的属性集称为超键(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的外键,他把两个表关联起来了。


文章作者: AllenMirac
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AllenMirac !
  目录