导图社区 数据库系统概论:第六章 关系数据库理论
对《数据库系统概论》(第5版)第六章的学习总结,重点在于范式的定义和等级提升的方式。数据依赖:是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
编辑于2024-07-29 18:19:54第六章 关系数据库理论 --> 依赖 <--> 互相依赖 -/-> 不依赖 -F-> 完全函数依赖 -P-> 部分函数依赖 -传递-> 传递依赖
6.1 问题的提出
数据依赖
是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
最重要的数据依赖
函数依赖(FD)
多值依赖(MVD)
规范化理论
正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖。
6.2 规范化
6.2.1 函数依赖
定义6.1
设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U) 的任意一个可能的关系r,r中不存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
不可能把子集的范围换了,属性的值就变了。
说明
函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
函数依赖和别的数据之间关系一样,是语义范畴的概念,我们可以根据数据的语义来确 定函数依赖。
数据库设计者可以对现实世界作强制的规定。
若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素。
若X-->Y,并且Y → X,则记为X<-->Y。
若Y不函数依赖于X,则记为X -/-> Y。
平凡函数依赖与非平凡函数依赖
定义
在关系模式R(U)中,对于U的子集X和Y,如果X --> Y,但Y ⊈ X,则称X --> Y是非平凡函数依赖。若Y ⊆X,则称X --> Y是平凡函数依赖。
集合一定能够确定自己的子集。
例如
非平凡
(Sno,Cno) --> Grade
平凡
(Sno,Cno) --> Sno (Sno,Cno) --> Cno
完全函数依赖与部分函数依赖
定义6.2
在关系模式R(U)中,如果X --> Y,并且对于X的任何一个真子集X’,都有(缺少1个就不依赖)X’ -/-> Y,则称Y完全函数依赖于X,记作X -F-> Y 。若X --> Y ,但Y不完全函数依赖于X,则称Y部分函数依赖于 X,记作X -P-> Y。
x中缺少一个元素都不行。
例如
完全依赖
(Sno,Cno) -F-> Grade
部分依赖
(Sno,Cno) -P-> Sno (Sno,Cno) -P-> Cno
传递函数依赖
定义6.3
在R(U)中,如果X→Y(Y⊈X),Y -/-> X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖。 记为:X -传递-> Z。
前提的两个都是非平凡函数依赖
6.2.2 码(候选码)
定义6.4
设K为关系模式R<U,F>中的属性或属性组合。若K -F-> U,则K称为R的一个候选码。
U是完全函数依赖于K的
说明
若关系模式R有多个候选码,则选定其中的一个做为主码(Primary key)。
包含在任何一个候选码中的属性 ,称为主属性。
不包含在任何码中的属性称为非主属性或非码属性。
全码
整个属性组是码,最极端的情况
定义6.5
关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreign key),也称外码。
主码与外部码一起提供了表示关系间联系的手段。
6.2.3 范式
一个低一级范式的关系模式, 通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
种类
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)
各种范式之间存在联系
1NF ⊃ 2NF ⊃ 3NF ⊃ BCNF ⊃ 4NF ⊃ 5NF
某一关系模式R为第n范式,可简记为R∈nNF。
CSDN博客
https://blog.csdn.net/wenco1/article/details/88077279
6-2-3 1NF
定义
符合1NF的关系中的每个属性都不可再分
6.2.4 2NF
定义6.6
若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF。
消除了非主属性对码的部分函数依赖 ---> 非主属性对码是完全函数依赖 但是 可能存在非主属性对码的函数传递依赖(3NF消除) 和主属性对不包含它的码的部分函数依赖(BCNF消除)
说明
码只包含一个属性的关系模式如果属于1NF, 那么它一定属于2NF。
6.2.5 3NF
定义6.7
设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊈ Y), 使得X→Y,Y→Z 成立,Y -/-> X不成立,则称R<U,F > ∈ 3NF。
(存在,就∉3NF) 消除非主属性对码传递依赖,非主属性对码只有完全直接依赖
6.2.6 BCNF
定义6.8
设关系模式R<U,F >∈1NF,若X → Y 且Y ⊈ X时X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含所有候选码,则R∈BCNF。
性质
码是 超级整码 超级整码:拥有这三点性质,主码多一个属性不行,少一个属性也不行。BCNF不仅考虑了非主属性和码之间的关系,还考虑了主属性之间的联系
所有非主属性都完全函数依赖于每个候选码。
所有主属性都完全函数依赖于每个不包含它的候选码。
没有任何属性完全函数依赖于非码的任何一组属性。
6.2.7 多值依赖
例6.10
对于W的每一个值Wi,S有一个完整的集合与之对应而不问C取何值。所以W→→S。
定义6.9
设R(U)是属性集U上的一个关系模式。X,Y,Z 是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
随意“上下”交换属性Y值,元组值依然在关系中,这种交换依然存在,其性质就与Z无关了
等价定义
在R(U)的任一关系r中,如果存在元组t,s使得t[X]=s[X],那么就必然存在元组w,v∈r,(w,v可以与s,t相同), 使得w[X]=v[X]=t[X]=s[X],而 w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交换 s,t元组的Y值所得的两个新元组必在r中)则Y多值依赖于X,记为X→→Y。这里X,Y是U的子集,Z=U-X-Y。
平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=Ф,即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→→YZ(Y∪Z)。
(5)若X→→Y,X→→Z,则X→→Y∩Z。
(6)若X→→Y,X→→Z,则X→→Y - Z,X→→Z - Y
三者的条件都一样
多值依赖与函数依赖的区别
(1)多值依赖的有效性与属性集的范围有关
说明
若X→→Y在U上成立,则在W(XY ⊆ 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上的值满足定义6.l,则函数依赖X→Y在任何属性集 W(XY ⊆ W ⊆ U )上成立。
(2)若函数依赖X→Y在R (U)上成立,则对于任 何Y‘ ⊂ Y均有X→Y’ 成立。多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y’ ⊂ Y有 X→→Y’ 成立。
6.2.8 4NF
定义6.10
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X), X都含有码,则R<U,F>∈4NF。
4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。4NF所允许的非平凡多值依赖实际上是函数依赖。
对于Y可以任意的上下移动,在关系表中都有对应的元组值 但是X都含有码,与Z无关,X+Y+Z=U
如果一个关系模式是4NF, 则必为BCNF。
6.2.9 规范化小结
6.3 模式的分解
6.3.1 逻辑蕴含与最小函数依赖集
定义6.11
对于满足一组函数依赖F的关系模式 R <U,F>,其任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t、s,若 t[X]=s[X],则 t[Y]=s[Y]),则称F逻辑蕴涵X →Y。
相当于就只有两个属性,所有元组X能够完全确定Y
定义6.12
如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集或最小覆盖。
条件
F中任意函数依赖的右部仅含一个属性(F:函数依赖集)
F中不存在这样的函数依赖X→A,使得F与F-{X-->A等价}
F中的函数依赖均不能由F中其他函数依赖导出
F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X-->A}U{Z-->A}与F等价
F中各函数依赖左部均为最小属性集(不存在冗余属性)
6.3.2 关系模式的分解
关系模式的规范化过程是通过对关系模式的分解来实现的。
说明
把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的。
在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义。
将一个关系模式R<U,F>分解为若干个关系 模式R1<U1,F1>,R2<U2,F2>,... , Rn<Un,Fn> (其中U=U1∪U2∪... ∪Un ,且不存在Ui ⊆ Uj ,Fi为F在Ui上的投影),意味着相应地将存储在一个二维表t中的数据分散到若干个二维表t1,t2,... ,tn中去(其中ti是t在属性集Ui上的投影)。
说明
关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>, R2<U2,F2>, ...,Rn<Un,Fn>} 若R与R1、R2、...、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)。
具有无损连接性的分解保证不丢失信息。
无损连接性不一定能解决插入异常、删除异常、修改 复杂、数据冗余等问题。
设关系模式R<U,F>被分解为若干个关系模式 R1<U1,F1>,R2<U2,F2>,... ,Rn<Un,Fn> (其中U=U1∪U2∪... ∪Un ,且不存在Ui ⊆ Uj , Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preserve dependency)。
也就是说,F所逻辑蕴含的函数依赖没有因分解而被分开, 而是一起被分到某一个关系当中。
判断对关系模式的一个分解是否与原关系模式等价可以有三种不同的标准
1)分解具有无损连接性。
能够保证不丢失信息
2)分解要保持函数依赖。
可以减轻或解决各种异常情况
3)分解既要保持函数依赖,又要具有无损连接性。
说明
分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。
规范化理论提供了一套完整的模式分解算法,按 照这套算法可以做到
若要求分解具有无损连接性,那么模式分解一定能够达到4NF。
若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF。
BCNF还要看主属性之间的函数依赖关系
若要求分解既具有无损连接性,又保持函数依赖, 则模式分解一定能够达到3NF,但不一定能够达到BCNF。