数据库原理与应用 第 2 章 · 第四节
课程 › 第 2 章 › 第四节 候选码主码外码 版式
第 2 章 关系数据库 · 第四节

关系的码

候选码、超码、主码、主属性和外码
本 节 知 识 点
  1. 12候选码
  2. 13主码与主属性
  3. 14外码
12
第 2 章 · 第四节 · 课件第 29、30 页合并重做

候选码

能唯一标识元组,并且去掉任何一个属性就不唯一。

2.3 关系的码和关系的完整性课件第 29、30 页合并

候选码

关系中能唯一标识一个元组的属性集 K,如果同时满足下面两个条件,就叫做候选码。
条件含义
唯一性任意两个元组在 K 上的值都不相同
最小性K 中去掉任何一个属性,就不再满足唯一性
例
关系候选码说明
课程(课程号,课程名,课时)课程号课程号能唯一标识每一门课程
授课(教师号,课程号)教师号 + 课程号两个属性合起来才能区分每一条授课记录
选课(学号,课程号,成绩)学号 + 课程号去掉其中任何一个,都不能唯一标识选课记录

一个关系可以有多个候选码。学生的学号唯一,每人的手机号也不同,两者都是候选码。(学号, 姓名) 也唯一,但它不是最小的,叫做超码。

试一试这组属性是不是候选码

学生(学号,手机号,姓名,专业),姓名可能重名,每人的手机号不同
属性集
条件是否满足
13
第 2 章 · 第四节 · 课件第 31、32 页合并重做

主码与主属性

从候选码中选一个作主码,候选码中的属性是主属性。

2.3 关系的码和关系的完整性课件第 31、32 页合并

主码与主属性

主码
  • 一个关系有多个候选码时,选定其中一个作为查询、插入或删除元组的操作变量,这个候选码叫做主码
  • 主码也称为主关键字、主键,后面各章统一称为主码
  • 通常选稳定、简短的候选码。例如学生表选学号作主码,手机号另外保证唯一
  • 每个关系有且只有一个主码
主属性与非主属性
  • 主属性:包含在任何一个候选码中的属性
  • 非主属性:不包含在任何候选码中的属性
关系候选码主属性非主属性
学生(学号,手机号,姓名,专业)学号,手机号学号、手机号姓名、专业
选课(学号,课程号,成绩)学号 + 课程号学号、课程号成绩

练一练

选课(学号,课程号,成绩)中,哪一个是非主属性?
  1. A学号
  2. B课程号
  3. C成绩
答案 C

候选码是(学号,课程号),学号和课程号都是主属性。成绩不在候选码中,是非主属性。

14
第 2 章 · 第四节 · 课件第 33、34 页合并重做

外码

外码是另一个关系的主码,把两个关系联系起来。

2.3 关系的码和关系的完整性课件第 33、34 页合并

外码

如果关系 R2 的一个或一组属性 X 不是 R2 的主码,而是另一个关系 R1 的主码,那么 X 叫做 R2 的外码。R2 叫做参照关系,R1 叫做被参照关系。
例:学生表 s、课程表 c 与选课表 sc
关系主码外码
学生 s(被参照关系)sno
课程 c(被参照关系)cno
选课 sc(参照关系)sno + cnosno 参照 s,cno 参照 c
  • 被参照关系的主码和参照关系的外码,必须定义在同一个域上
  • 外码的值要么在被参照关系的主码中能找到,要么为空
  • 例如 sc 中有一行 (s9, c1, 80),学生表中却没有 s9,这样的数据就不正确

重 点

外码把两张表联系起来,第 5 章用 FOREIGN KEY 定义它。

保山学院·人工智能教研室·曹鼎鼎