# 前言
以本篇记录学习数据库第六章,关系数据理论章节的内容
# 问题的提出
# 关系模式的表示
关系模式主要由五部分组成,一个五元组:R (U,D,DOM,F).
- R 是关系名
- U 是一组属性
- D 为属性组中的属性的域
- DOM 为属性到域的映射
- F 为属性组 U 上的一组数据的依赖
注:
- 由于 D,DOM 与模式设计关系不大,因此本章堪为三元组 R<U,F>
- 当且仅当 U 上的一个关系 r 满足 F 时,r 称为关系模式 R<U,F> 的一个关系
- 作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个关系的关系模式就属于
第一范式
数据依赖:
是一个关系内部属性与属性之间的一种约束条件,是通过属性间的值的相等与否体现出来的数据间的相互关系
数据依赖的主要类型
- 函数依赖(简记 FD)
- 多值依赖(简记 MVD)
函数依赖的缺点
- 数据冗余
- 更新异常
- 插入异常
- 删除异常
一个好的模式应该尽量减少或避免以上的缺点
# 规范化
# 函数依赖
设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于x”,记作X+Y。
对于X中的全部属性的集合才能退出Y的称为Y的完全函数依赖,对于X中只要取部分就可以唯一确定Y的叫做部分完全依赖
函数依赖具有传递性,如果X,Y是非平凡函数依赖,且Y函数决定于Z,则可称Z对X传递函数依赖
# 码
码的关系模型中的一个重要概念
定义:
- 可以唯一确定一个元组的属性或属性组叫做候选码(该属性是主其他属性的完全依赖)
- 与上一个定义相对应的码是超码,该属性组是其他属性的部分完全依赖
- 当一个关系模型中有多个候选码的时候选择其中一个作为主码
主属性与非主属性
主属性
是包含再任何一个候选码
中的属性非主属性
不包含在任何码中的属性(除了主属性都属于非主属性)
全码
一个表的全部属性是码就叫全码
外码
, 关系模式 R 中属性或属性组 X 并非 R 的码,但 X 是另一个关系模式的码,则称 X 是 R 的外部码 (Foreign key) 也称外码
# 范式
范式是符合某一种级别的关系模式的集合
。关系数据库中的关系必须满足一定的要求,满足不同程度的要求为不同的范式(简单的理解,范式就是一种规则)
范式的要求由低到高分为第一范式,第二范式,第三范式,BC 范式,第四范式,第五范式(其中 BC 范式是第三范式的一个补充完善,到底 BC 范式要求一般就称该数据库是比较优化的)
规范化是指一个低级的范式的关系模型,通过模式分解变为高级别的范式
# 1NF
每一个属性都是最小单元不可再分的属性
# 2NF
首先要满足第一范式,并且每一个非主属性都 完全函数依赖于任意一个候选码
,称为第二范式
# 3NF
首先满足第一和第二范式,若 R 中不存在这样的码 X,属性组 Y 以及非主属性 Z,三者 不存在传递函数依赖
# BCNF
对第三范式的一个修改,或是说是一种扩充。
首先满足第一范式,当 X 函数依赖于 Y 这 X 必定含有码 (每一个决定因素都包含码)
性质:
- 所有的非主属性都完全函数依赖于每个候选码
- 所有主属性都完全函数依赖于每一个不包含它的候选码
- 没有任何属性完全函数依赖于非码的任意一组属性
# 多值依赖
与函数依赖相对应,一个属性无法唯一确定另一个属性
这样的缺点:
- 数据的冗余度大
- 增加操作复杂度
- 删除操作复杂
- 修改操作复杂
设 R (U) 是属性 U 上的一个关系模式,X,Y,Z 是 U 的子集,并且 Z=U-X-Y。关系模式 R (U) 中多值依赖 X->->Y 成立,当且仅当 R (U) 的任一关系 r,给定的一对 (x,z) 值,有一组 Y 的值,这组值仅仅决定于 x 值而与 z 无关。
X->->Y, 而 Z 为空,这称为平凡的多值依赖否则为非平凡
# 4NF
属于第一范式,对于 R 的每个非平凡多值依赖 X->->Y (Y 不包含于 X),X 都含有码,则称为 4NF
# 模式的分解
无损连接性,保持函数依赖