第5章 关系数据库理论
学习重点:
- 关系的形式定义;
- 数据以来的基本概念;
- 范式的概念;
- 第一、二、三、BC、四范式的定义;
- 规范化的含义和作用
学习难点:
低级别范式向高级别范式的转换方法
5.1 问题的提出
概念回顾
关系
关系是描述实体、属性、实体间的联系,从形式上看,它是一张二维表,是所设计属性的笛卡尔积的一个子集。
关系模式
用来定义关系
关系数据库
基于关系模型的数据库,利用关系来描述现实世界,从形式上看,它是由一组关系组成的。
关系数据库的模式
定义这组关系的关系模式的全体
关系模式的形式化定义
关系模式由五部分组成,即它是一个五元组
R:关系名
U:组成该关系的属性名集合
D:属性组U中属性所来自的域
DOM:属性向域的映像集合
F:属性间数据的依赖关系集合
数据依赖
完整性约束的表现形式
- 限定属性取值范围
- 定义属性值间的相互关联,这就是数据以来,它是数据库模式设计的关键
数据依赖
- 数据依赖是通过一个关系中属性间值的相等于否体现出来的数据间的相互关系
- 是现实世界属性间相互联系的抽象
- 是数据内在的性质
- 是语义的体现
数据依赖的类型
函数依赖和多值依赖
关系模式的简化定义
关系模式五元组可以简化为三元组
当且仅当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系。
5.2 规范化
规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据以来,以解决插入异常、删除异常、更新异常和数据冗余问题。
5.2.1 函数依赖
函数依赖
定义5.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。
X称为这个函数依赖的决定因素(Determinant)。
X→Y,但是Y不包含于X则称X→Y是非平凡的函数依赖。
X→Y,但Y包含于X则称X→Y是平凡的函数依赖。
(学号、课程号->学号)
函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件
函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。
定义5.2 在R(U)中,如果X决定Y并且对于X的任意一个真子集,都不能决定Y,则称Y对X完全函数依赖,记作X决F定Y,否则记作X决P定Y
定义5.3 在R(U)中,如果X决定Y,Y不决定X,Y决定Z,则称Z对X传递函数依赖。
5.2.2 码
定义5.4 设K为关系模式中的属性或属性组合。若K决F定U,则称K为R的一个候选码,若关系模式R有多个候选码,则选定其中一个做主码。
定义5.5 关系模式R中属性或属性组X并非R的码,但是X是另外一个关系模式的码,则称X是R的外码。
5.2.3 范式
范式是复合某一种级别的关系模式的集合
关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。
一个低一级的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
1NF
如果一个关系模式R的所有属性都是不可分的基本数据项,则称R属于第一范式
第一范式是对关系模式最起码的要求,不满足第一范式的数据库模式不能被称作关系数据库,但是仅满足第一范式的关系,不一定是一个好的关系模式。
2NF
若关系模式R属于第一范式,并且每个非主属性都完全函数依赖于R的码,则R属于第二范式。
采用投影分解法将一个第一范式的关系分解成多个第二范式的关系,可以一定程度上减轻第一范式中存在的关系模式问题。
将一个第一范式关系分解成多个第二范式的关系,并不能完全消除关系模式中的问题。
3NF
若关系模式中不存在这样的码X、属性组Y即非主属性Z,使得X决定Y,Y决定Z成立,则称属于第三范式。
若R∈3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。
如果R∈3NF,则R也是2NF。
采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。
将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。
BCNF
设关系模式属于第一范式,若X决定Y且Y不包含于X时X必含有码,则属于BC范式
每一个决定属性集(因素)都包含(候选)码;
R中的所有属性(主,非主属性)都完全函数依赖于码;
R∈3NF;
若R∈3NF,则R未必属于BCNF。
如果关系模式R∈BCNF,必定有R∈3NF
如果R∈3NF,且R只有一个候选码,则R必属于BCNF。
BC范式的关系模式所具有的性质
⒈ 所有非主属性对每一个码都是完全函数依赖。
⒉ 所有主属性对每一个不包含它的码,也是完全函数依赖。
⒊ 没有任何属性完全函数依赖于非码的任何一组属性。
多值依赖
设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=φ,则称X→→Y为平凡的多值依赖,否则称X→→Y为非平凡的多值依赖
多值依赖的性质
(1)多值依赖具有对称性
若X→→Y,则X→→Z,其中Z=U-X-Y
多值依赖的对称性可以用完全二分图直观地表示出来。
(2)多值依赖具有传递性
若X→→Y,Y→→Z, 则X→→Z-Y
(3)函数依赖是多值依赖的特殊情况。
若X→Y,则X→→Y。
(4)若X→→Y,X→→Z,则X→→Y Z。
(5)若X→→Y,X→→Z,则X→→Y∩Z。
(6)若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。
多值依赖与函数依赖的区别
多值依赖的有效性与属性集的范围有关。
若X→→Y在U上成立,则在W(X Y W U)上一定成立;反之则不然,即X→→Y在W(W U)上成立,在U上并不一定成立。
多值依赖的定义中不仅涉及属性组 X和 Y,而且涉及U中其余属性Z。
一般地,在R(U)上若有X→→Y在W(W U)上成立,则称X→→Y为R(U)的嵌入型多值依赖。
函数依赖X→Y的有效性仅决定于X,Y这两个属性集的值。
只要在R(U)的任何一个关系r中,元组在X和Y上的值满足定义5.1,则函数依赖X→Y在任何属性集W(X Y W U)上成立。
若函数依赖X→Y在R(U)上成立,则对于任何 包含于
均有X决定成立。
而多值依赖X→→Y若在R(U)上成立,不能断言对于任何 包含于有 X决定成立。
4NF
关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y X),X都含有码,则称R∈4NF。
4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。因为根据定义,对于每个非平凡的多值依赖X→→Y,X都包含有候选码,于是就有X→Y,所以4NF所允许的非平凡的多值依赖实际上是函数依赖。
显然,如果R∈4NF,则必为BCNF。