第六章 关系数据理论
6.1问题提出
(1)提出问题
利用关系数据库的规范化理论,针对具体问题,构造数据模式。
(2)三元组:R<U,F>
由于二维表每个分量必须是不可分开的数据项,所以满足条件的关系模式就属于第一范式(1NF)。
(3)数据依赖
是一个关系内部属性与属性之间的一种约束关系。
主要有:函数依赖和多值依赖。
(4)此种关系模式存在的问题:
***数据冗余:浪费大量的存储空间:每一个系主任的姓名重复出现
***更新异常:更新数据时,维护代价大:某系更换系主任后,须修改有关的每一个元组。
***插入异常:如果一个系刚成立,尚无学生,则无法把这个系及其系主任存入数据库。
***删除异常:如果某个系的学生全部毕业了, 则在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。
(5)结论
由于某些数据依赖引起的插入异常、删除异常和更新异常,数据冗余。
可以用规范化理论消除。
----->简单说,就是’‘拆’
6.2规范化
6.2.1函数依赖
(1)函数依赖定义
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
函数依赖:若对于R(U)的任意一个可能的关系r,r 中不可能存在:两个元组在X上的属性值相等,而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
【注】:
若X→Y,并且Y→X, 则记为X←→Y。
若Y不函数依赖于X, 则记为X→Y。
X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
(2)完全函数依赖,部分函数依赖:在R(U)中,
如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X完全函数依赖,记作X → Y。
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X → Y
【例】
SC(Sno, Cno, Grade)中有:
(Sno, Cno) → Grade
(Sno, Cno)→Sno
(Sno, Cno) →Cno
(3)传递函数依赖
在R(U)中,如果X→Y(Y⊈X),Y↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖:X → Z。
【注】: 如果Y→X, 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。
6.2.2码
1.候选码,超码定义
X
→
F
Y
X \overset F \rightarrow Y
X→FY
设K为R<U,F>中的属性或属性组合。若
K
→
F
U
K \overset F \rightarrow U
K→FU,则K称为R的一个候选码
如果U部分函数依赖于K,即
K
→
P
U
K \overset P \rightarrow U
K→PU,则K称为超码 。
【注】候选码是最小的超码,即K的任意真子集都不是候选码;
若关系模式R有多个候选码,则选定其中的一个做为主码。
包含在任何一个候选码中的属性 ,称为主属性
不包含在任何码中的属性称为非主属性
6.2.3范式
1.某一关系模式R为第n范式,可简记为R∈nNF
2.**规范化:**一个低一级范式的关系模式,通过模式分解
可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
6.2.4 2NF
1.若关系模式R∈1NF,并且每一个非主属性都完全函数依赖
于任何一个候选码,则R∈2NF
2.一个关系模式不属于2NF:
插入异常
删除异常
修改复杂
可用投影分解将其分解。
【例】S-L-C(Sno,Sdept,Sloc,Cno,Grade), Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。
解决办法:拆分
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)
6.2.5 3NF
1.设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z (Y⊇ Z), 使得X→Y,Y→Z成立,Y ↛ X不成立,
则称R<U,F> ∈ 3NF。
6.2.6 BCNF
1.设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。
即每一个决定属性集都包含候选码,则R∈BCNF。
可参考书上例题6.5~6.8
6.2.7 多值依赖
1.设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
【例】
Teaching(C, T, B)
Teaching∈BCNF ,对于C的每一个值,T有一组值与之对应,而不论B取何值。
所以T多值依赖于C,即C→→T。
2.若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖,否则称X→→Y为非平凡的多值依赖。
6.2.8 4NF
关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
6.3候选码求解
1.闭包(记作X+ )就是由一个属性直接或间接推导出的所有属性的集合。
L类 仅出现在函数依赖左部的属性。
R 类 仅出现在函数依赖右部的属性。
N 类 在函数依赖左右两边均未出现的属性。
LR类 在函数依赖左右两边均出现的属性。
2.定理及其推论
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属性;则X必为R的唯一候选码。
【例】设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B →D,AD →B,AC →D},求R的所有候选码。
L类:A,C;且(AC)+=ABCD,故AC是R的唯一候选码。
3.定理
(1)对于给定的关系模式R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选码中。
因为在右侧的不能推导出其他元素,可以由其他元素推导得到。
(2)对于给定的关系模式R及其函数依赖集F,若X(X∈R)是N类属性,则X必包含在R的任一候选码中。
(3)对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。
【例】R<U,F>,U=(A,B,C,D,E,G),
F={AB→C,CD→E,E→A,A→G},求候选码。
解:(1) L=(B,D), R=(G), LR=(A,C,E ), N=NULL;
(2) L∪N=(B,D), (BD)+=BD;
所以可以得到候选码为:ABD,BCD,BDE。
还没搞懂的题:设关系模式 U=(A , B , C , D , E , F ),函数依赖集F={A→BC , BC→A , BCD→EF , E→C}, 求 R 的候选码。
【答案】
(1) L=(D), R=(F), LR=(A , B , C , E ), N=空;
(2) L∪N=(D) , D+=D;
(3)因为 (DA)+=DABCEF=U, (DB)+=DB ,(DC)+=DC, (DE)+=DEC, 所以 DA 是候选码;
(4)因为 (DBC)+=DBCAEF=U, (DBE)+=DBECAF=U, (DCE)+=DCE, 所以DBC、DBE 是候选码;
(5) U 的候选码有 DA、DBC、DBE
比较特殊,候选码有三个,且如何推导得出DBE???
难道是因为E→C且C→E?如何得出?
4.应当确定一个合适的,能够反映现实世界的模式,而不是说规范化程度越高越好。
总结:对于范式概念理解方面以及题目练习还是不熟练。
完。