3.4.2 关系模式相关概念
本课核心知识点整理
关系模式的标准写法
关系模式描述的是表结构,常写成:
其中 R 是关系模式名,括号内是属性名。比如:
这不是一张具体装满数据的表,而是表结构的描述。具体某一时刻表中的所有行,才是这个关系模式的一个关系实例。
二维表视角下的基本术语
关系模型把数据组织成二维表,但考试喜欢换术语问:
| 关系术语 | 二维表直观理解 | 例子 |
|---|---|---|
| 关系模式 | 表结构 | 学生(学号, 姓名, 专业号) |
| 关系 | 某个时刻的表内容 | 学生表当前所有记录 |
| 属性 | 列 | 学号、姓名 |
| 元组 | 行/一条记录 | 学号为 001 的学生记录 |
| 域 | 属性取值范围 | 性别取值、成绩范围 |
| 分量 | 元组在某属性上的值 | 001 这行的姓名值 |
字幕中提到“目”或“度”:关系模式中属性的个数称为目或度。如果 R(A,B,C) 有 3 个属性,则它是 3 目关系。水平方向的一行是元组,表示一个实体实例或一个业务事实。
键的层次
键是后面规范化理论的入口。不要把“唯一”与“最小唯一”混在一起。
| 概念 | 定义 | 关键判断 |
|---|---|---|
| 超键 | 能唯一标识元组的属性集 | 可以有冗余属性 |
| 候选键/候选码 | 能唯一标识元组且最小的属性集 | 唯一性 + 最小性 |
| 主键/主码 | 从候选键中选定的一个 | 数据库主要标识 |
| 主属性 | 出现在任一候选键中的属性 | 和“主键中的属性”不完全等价 |
| 非主属性 | 不出现在任何候选键中的属性 | 范式判断常用 |
| 外键 | 引用另一个关系候选键/主键的属性 | 表达关系之间的参照 |
例如 学生(学号, 身份证号, 姓名, 专业号) 中,学号和身份证号都可能唯一标识学生,因此都可作为候选键。若选学号作为主键,身份证号仍然是候选键,不会因为没被选为主键而失去唯一标识能力。
候选键为什么强调“最小”
如果 学号 已经能唯一标识学生,那么 {学号, 姓名} 也能唯一标识学生,但它不是候选键,因为姓名是冗余属性。候选键必须去掉任何一个属性后都不能保持唯一标识。
可以用集合语言理解:
其中 K -> R 表示属性集 K 能决定关系模式中的全部属性。后面讲函数依赖时,这个符号会成为主力工具。
完整性约束的前置理解
关系模式不仅有列名,还要带约束。常见完整性约束包括:
| 约束 | 含义 | 例子 |
|---|---|---|
| 实体完整性 | 主键不能取空值 | 学号不能为空 |
| 参照完整性 | 外键值必须引用已存在对象或为空 | 学生表的专业号应在专业表中存在 |
| 用户定义完整性 | 业务规定的取值约束 | 成绩在 0 到 100 之间 |
这些约束之所以放在关系模型里,是因为数据库不仅要“存数据”,还要防止系统存入语义上不成立的数据。
做题路线
- 看到“一行记录”,答元组;看到“一列”,答属性;看到“取值范围”,答域。
- 求候选键时先找能唯一标识的属性集,再删除冗余属性验证最小性。
- 主键只是被选中的候选键,候选键可以不止一个。
- 外键不是“另一张表的主键本身”,而是本关系中用于引用其他关系的属性。
例题
关系中的一行记录称为:
候选键的判断标准是:
自查要点
- 关系、属性、元组分别对应表中的什么?
- 候选键为什么强调“最小”?
- 外键表达的是什么关系?