关系模式及范式
关系模式由五部分组成,是一个五元组:
- 关系名
是符号化的元组语义 为一组属性 为属性组 中的属性所来自的域 为属性到域的映射 为属性组 上的一组数据依赖
由于
作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。
数据依赖的主要类型:
- 函数依赖(Functional Dependency,简记为 FD)
- 多值依赖(Multi-Valued Dependency,简记为 MVD)
范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。
各种范式之间存在联系:
一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。
函数依赖
设
在关系模式
- 如果
,但 ,则称 是非平凡的函数依赖。 - 若
,但 , 则称 是平凡的函数依赖。
对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖。
在
在
设
课程幻灯片
ch33-函数依赖与码
中码 1
这一页对超码的定义存在逻辑矛盾:在《数据库系统概论(第五版)》(2014 年 9 月第 1 次印刷,以下简称 14 版)中对超码的定义如下:
而在《数据库系统概论(第五版)》(2021 年 11 月第 21 次印刷,以下简称 21 版)中对超码的定义如下:
课程幻灯片中定义与 14 版定义相同,与 21 版定义相左。
14 版定义中存在逻辑问题:
完全函数依赖于候选码, 部分函数依赖于超码,那么候选码就不可能是最小的超码,因为完全函数依赖和部分函数依赖是互斥关系。 21 版定义逻辑自洽,因此我认为课程幻灯片不应采用 14 版定义,而应采用 21 版定义。
勘误地址(Moodle 访问):http://219.219.120.72/mod/forum/view.php?id=7066
关系模式
1NF
如果一个关系模式
第一范式是对关系模式的最起码的要求。 不满足第一范式的数据库模式不能称为关系数据库。
2NF
若关系模式
性质:不存在(某非主属性)部分依赖(于某一候选码)。
实例
下面是一个例子,该关系不是 2NF。其中
存在的问题
- 无法添加未选课的学生;
- 删除学生的最后一门课时,学生其他信息也被删除;
- 转系(同时还要转宿舍)修改成本高;
- 系别和住所信息多次存储。
解决方案
这一解决方案消除了问题 1、2 和 4。
3NF
设关系模式
性质:不存在(某非主属性)传递依赖、部分依赖(于某一候选码)
解决方案
在 2NF 的解决方案中,存在传递依赖
解决方案为把 S-L 分解为 S-D 和 D-L。分解后的关系不再存在传递依赖,消除了问题 3。
BCNF
BCNF(Boyce Codd Normal Form)由 Boyce 和 Codd 提出,比 3NF 更进了一步。通常认为 BCNF 是修正的第三范式,有时也称为扩充的第三范式。
设关系模式
性质:
- 所有非主属性都完全函数依赖于每个候选码(2NF 性质)
- 所有主属性都完全函数依赖于每个不包含它的候选码(3NF 性质)
- 每一个决定属性集都包含候选码(亦即没有任何属性完全函数依赖于非码的任何一组属性)
一个模式中的关系模式如果都属于 BCNF,那么在函数依赖范畴内,它已实现了彻底的分离,已消除了插入和删除的异常。
实例
关系模式
左边的关系不满足 BCNF,右边的关系满足 BCNF。