无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

数据库表 关系模式 外键、超键、候选键和主键 约束的区别 (图文详解1)

后端 Micheal 10个月前 (11-24) 200次浏览 已收录 0个评论 扫描二维码

数据库表 关系模式 外键、超键、候选键和主键 约束的区别 (图文详解)

超键

定义:在关系模式中,能唯一标识元组属性集称为超键(Super Key)

分析:t_student(id, name, age, sex)

  超键定义的核心在于能唯一标识元祖,并且还是属性集;一般情况我们要寻找一个学生,不管是姓名还是性别都不能准确找到,数据中都还可以存在同名同岁的学生,所有在上面的关系模式中只有通过学号才能找到某个特定的学生。

  因此上述关系模式中只有包含学号的属性集才能称之为超键:

  例:(id), (id, name), (id, name, age)等等

候选键

定义:在关系模式中,能唯一标识元组并且不含多余属性的属性集称为候选键(Candidate Key)

分析:t_student(id, name, age, sex)

  与超键定义的不同于能不含多余的属性;对上述例子,假设数据中没有任何一个学生的姓名是重复的,那么我们可以通过学号,也可以通过姓名唯一确定某个特定的学生,那么所有包含学号,姓名的属性集我们都可以称为超键,但不含多余属性的属性集,表示如果再删除属性就不再能称为键了,候选键即为特殊的超键

  因此上述关系模式中只有单独的学号,姓名属性集才能称为候选键:

  例:(id), (name)

主键

定义:在关系模式中的若干个候选键中,随意指定一个作为关键字,此关键字即为主键(Primary Key)

分析:t_student(id, name, age, sex)

  主键很好理解,就在在候选键的基础上任意选择一个作为主键,同时衍生出复合主键联合主键 ,假设我们没有学号字段,如果可以通过姓名,年龄,性别一同找到某个特定的学生,那么就称(name, age, sex)为复合主键,全部由主键构成的称为联合主键。

  因此上述关系模式中,姓名也能唯一确定学生,那么主键有:

  例:(id), (name)

外键

定义:关系模式R1的某个属性不是R1的候选键,而是关系模式R2中的候选键,那么这个属性集对于R1来说就是外键(Foreign Key)

分析:t_student(id, name, age, sex, class_id), t_classroom(id, class_name)

  外键是建立在两个关系模式中的,从上述定义中可以知道,某关系模式中主键一定是其候选键,那对于另一关系,只要原关系的主键只表示普通属性,那它就是另一属性的外键,上表中教室号就是学生表中的外键,其主要作用是为了保证数据的一致性完整性

关系图

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝
发表我的评论
取消评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

表情 贴图 加粗 删除线 居中 斜体 签到