第六章关系数据理论
作者:互联网
第六章关系数据理论
6.1_问题的提出(略)
6.2_规范化
6.2.1_函数依赖
1.函数依赖
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y
2.平凡函数依赖与非平凡函数依赖
- 非平凡的函数依赖:如果X→Y,但Y⊄ X,则称X→Y是非平凡的函数依赖
- 平凡的函数依赖:若X→Y,但Y ⊆ X, 则称X→Y是平凡的函数依赖
3.完全函数依赖与部分函数依赖
- 在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’推不出Y, 则称Y对X完全函数依赖,记作X -F-> Y(即缺了属性集合X中的任何一个属性都不能唯一确定Y)
- 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X-P-> Y。
4.传递函数依赖
6.2.2_码
6.2.3_范式
关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式
第一范式(1NF):如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF
6.2.4_2NF
第二范式(2NF):若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。
6.2.5_3NF
第三范式(3NF):关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z Y), 使得X→Y,Y→Z成立, Y → X,则称R<U,F> ∈ 3NF。(若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码)
6.2.6_BCNF
6.2.7_多值依赖
6.2.8_4NF
6.2.9_规范化小结
6.3_Armstrong公理系统
6.3.1_函数依赖闭包
与编译原理的闭包思想一样
6.3.2_最小依赖集
定义:
(1) F中任一函数依赖的右部仅含有一个属性。
(2) F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。(函数依赖冗余)
(3) F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。 (左部属性冗余)
求解方法:(分别对应定义中的三个条件)
(1)逐一检查F中各函数依赖FDi:X→Y,若Y=A1A2 …Ak,k > 2,则用 { X→Aj |j=1,2,…, k} 来取代X→Y。
(2)逐一检查F中各函数依赖FDi:X→A,令G=F-{X→A}, 若A∈XG+, 则从F中去掉此函数依赖。
(3)逐一取出F中各函数依赖FDi:X→A,设X=B1B2…Bm,逐一考查Bi (i=l,2,…,m),若A ∈(X-Bi )F+ , 则以X-Bi 取代X。
6.3.3_转换为3NF的保持函数依赖的分解
【例】 关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}
算法一:将关系R转化3NF的保持函数依赖的分解
第一步:首先计算处F的最小函数依赖集,得到F‘={A→BC,AD→E,E→D}。
第二步:观察U中是否有属性不再F’中的出现,如果有,则这个属性组成一对关系R,并在原来的U中删除这些属性。而例子中U的属性都出现在F中,则可以跳过这一步。
第三步:对F‘中的函数依赖,把左边的相同分为一组,一组中出现的所有属性为一个关系。如F={A→B,A→C,……},左边都为A的分为一组,得出项的所有属性组为也给关系R{A,B,C,…}例题中左边都不相同,所以一个函数依赖组为一个关系得到转化为3NF的保持依赖分解1{A,B,C},R2{A,D,E},R3{E,D}。
算法二:将关系R转化为3NF的既有无损连接有保持函数依赖的分解
第一步:先将R转化为3NF的保持函数依赖的分解,由算法一的出R1{A,B,C},R2{A,D,E},R3{E,D}。
第二步:求出F的候选码(候选码求解算法)得出候选码X为AD和AE。
第三步:将候选码单独组成关系得R4{A,D}和R5{A,E},然后与保持函数依赖后得分解取并集。得R1{A,B,C},R2{A,D,E},R3{E,D},R4{A,D},R5{A,E}。。、
第四步:观察新组成得分解模式中,是否存在包含关系,有责去掉被包含得。如R3{E,D},R4{A,D},R5{A,E}都包含于R2{A,D,E},则删除,最终得到转化为3NF的既有无损链接有保持函数依赖的分解R1{A,B,C},R2{A,D,E}。
标签:3NF,依赖,函数,关系数据,理论,6.3,6.2,第六章,属性 来源: https://blog.csdn.net/qq_43907296/article/details/110841571