关系数据库设计理论(5) 关系模式的规范化
来源:互联网 发布:网络远程报考时间 编辑:程序博客网 时间:2024/04/19 11:55
一、范式
关系模式满足的确定约束条件称为范式,根据满足约束条件的级别不同,
范式由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF等。
不同的级别范式性质不同。
关系模式的规范化:把一个低一级的关系模式分解为高一级关系模式的过程。
二、概念
1、第一范式(1NF)
关系模式的所有域为简单域,其元素(即属性)不可再分,
是属性项而不是属性组。
例4.5.1:
例4.5.2:工资(工号,姓名,工资(基本工资,年绩津贴,煤电补贴))
△ 不满足1NF的关系称为非规范化关系。
△ 关系数据模型不能存储上两个例子(非规范化关系),
在关系数据库中不允许非规范化关系的存在。
△ 转化方法:
(1) A1,A2,A3,…,Ak1,Ak2,…,An
(2) 工资(工号,姓名,基本工资,津贴,奖金)
2、第二范式(2NF):
给定关系模式R及其上的函数依赖集F,
如果R的任何一个非主属性都完全依赖于它的每一个侯选关键字,
则称R是第二范式,简记为2NF。
△ 若关系模型H包含的每一关系模式都是2NF的,则称该关系模型是2NF的。
△ 2NF∈1NF
例4.5.3:
SCT(SNO,CNO,CN,GRADE,TNAME,BDATE,SALARY)
F={SNO,CNO→GRADE
CNO→CN,CNO→TNAME
TNAME→BDATE,TNAME→SALARY} 非2NF
存在问题:1.数据冗余;2.插入,删除异常 3.修改麻烦。
原因:非主属性部分依赖于侯选关键字,
关键字是一个元组区别其它元组的依赖,
同时也是一个元组赖以存在的依据。
分解为:SC (SNO,CNO,GRADE),CT(CNO,CN,TNAME,BDATE,SALARY)
例4.5.4:
R=(ABCD,{AB→C,C→D})
答案:R为2NF
3、第三范式(3NF)
给定关系模式R及其上的函数依赖集F,
如果R的任何一个非主属性都不传递依赖于它的任何一个侯选关键字,
则称R是第三范式,简记为3NF。
△ 若关系模型H包含的每一关系模式都是3NF的,则称该关系模型是3NF的。
△ 定理:一个3NF的关系(模式)必定是2NF的(3NF∈2NF∈1NF) 。
证明:如果一个关系(模式)不是2NF的,那么必有非主属性Aj,
候选关键字X和X的真子集Y存在,使得Y→Aj。由于Aj是非主属性,
故Aj-(XY)≠Φ,Y是X的真子集,所以YX,
这样在该关系模式上就存在非主属性Aj传递依赖候选关键字X(X→Y→Aj),
所以它不是3NF的,证毕。
例4.5.4:CT(CNO,TNAME,BDATE,SALARY)
解:不能存放不开课的教师,教师信息和课程数一样多。
原因:传递函数依赖
R={City,St,Zip}
F={(City,St)→Zip,Zip→City} 3NF
CT(CNO,TNAME, BDATE, SALARY)非3NF
分解为:C(CNO,CNAME,TNAME), T(TNAME,BDATE,SALARY) 3NF
4、BCNF(改进的3NF)
给定关系模式R及其上的函数依赖集F,如果R的任意两个子集X、Y,
当非平凡函数依赖X→Y为F所蕴涵,则决定因素X中
必含有侯选关键字或X为超关键字,则称R是Boyde/Codd范式,
简记为BCNF。
BCNF的内涵:
(1)非主属性对关键字完全函数依赖
(2)主属性对不含它的关键字完全函数依赖
(3)没有属性完全函数依赖于一组非主属性
(4)主属性不传递依赖于任何一个侯选关键字
(5)非主属性不传递依赖于任何一个侯选关键字
△ 定理: BCNF满足3NF (BCNF∈3NF∈2NF∈1NF)
反证法:
R∈BCNF,但R∈BCNF
设存在非主属性A,关键字X以及属性组Y,使得X→Y,Y→X,Y→A,
由BCNF有Y→A,则Y为关键字,于是有Y→X,这与YX矛盾。
例4.5.6:
R={S,T,J}
F={T→J,ST→J,SJ→T}非BCNF
C(CNO,CNAME,TNAME),T(TNAME,BDATE,SALARY) BCNF
分解为:ST(S,T), TJ(T,J)
5、总结:
3NF→BCNF:消除主属性对侯选关键字的部分和传递函数依赖
2NF→3NF :消除非主属性对侯选关键字的传递函数依赖
1NF→2NF :消除非主属性对侯选关键字的部分函数依赖
6、规范化的基本思想
逐步消除不合适的函数依赖,使数据库中的各个关系模式
达到某种程度的分离。
三、分解算法
1、分解的基本要求
分解后的关系模式与分解前的关系模式等价,
即分解必须具有无损联接和函数依赖保持性。
2、目前分解算法的研究结论
(1) 若要求分解具有无损联接性,那么分解一定可以达到BCNF。
(2) 若要求分解保持函数依赖,那么分解可以达到3NF,
但不一定能达到BCNF。
(3) 若要求分解既保持函数依赖,又具有无损联接性,
那么分解可以达到3NF,但不一定能达到BCNF。
3、面向BCNF且具有无损联接性的分解(算法1)
输入:关系模式R及其函数依赖集F。
输出:R的一个无损联接分解,其中每一个子关系模式都满足
F在其上投影的BCNF。
算法实现:
反复运用逐步分解定理,逐步分解关系模式R,
使得每次分解都具有无损联接性,而且
每次分解出来的子关系模式至少有一个是BCNF的,
即:
1)置初值ρ={R};
2)检查ρ中的关系模式,如果均属BCNF,则转4);
3)在ρ中找出不属于BCNF的关系模式S,那么必有X→A∈F+,
(A不包含于X),且X不是S的关键字。因此XA必不包含
S的全部属性。把S分解为{S1,S2},其中S1=XA,S2=(S-A)X,
并以{S1,S2}代替ρ中的S,返回2)
4)终止分解,输出ρ。
定理:算法1正确
证明:在上述算法的第3)步,
⑴由于S1∩S2=X,S1-S2=A,而且满足X→A∈F,
S分解为{S1,S2}具有无损联接性。
⑵由于R中的属性有限,S1和S2所包含的属性个数都有比S少,
所以经过有限次迭代,算法一定终止,ρ的每一个关系模式都满足BCNF,
由于每步分解都具有无损联接性,最后分解当然是无损联接的。
例4.5.7:
R=(ABCD,{BC→A}),分解R使分解后的关系达到BCNF且具有无损联接性。
答案:R1=(ABC, {BC→A}), R2=(BCD, {Ф})
例4.5.8:
无损联接地将CTHRSG分解为一组BCNF的关系模式,
其中:C表示课程,T表示教师,H表示时间,R表示教室,
S表示学生,G表示成绩。
函数依赖集F及其所反映的语义分别为:
C→T 每门课程仅有一位教师担任。
HT→R 在任一时间,一个教师只能在一个教室上课。
HR→C 在任一时间,每个教室只能上一门课。
HS→R 在任一时间,每个学生只能在一个教室听课。
CS→G 每个学生学习一门课程只有一个成绩。
解:1) 关系模式CTHRSG侯选关键字为:HS;
由CS不包含侯选关键字,CS→G,
分解CTHRSG为CSG和CTHRS,并求得CSG和CTHRS上函数依赖最小集:
F11=πCSG(F) ={ CS→G }
F12=πCTHRS(F)={HS→R,HT→R,C→T,HR→C}
CSR(CSG,{CS→G})(BCNF)
CTHRS(CTHRS,{HS→R,HT→R,C→T,HR→C})
ρ={CSG, CTHRS}
2) 关系模式CTHRS侯选关键字为:HS;
由C不包含侯选关键字,C→T,
分解CT为CSG和CHRS,并求得CT和CHRS上函数依赖最小集:
CT(CT,{C→T})(BCNF)
CHRS(CHRS,{HS→R,HT→R,HR→C})
ρ={CSG,CT, CHRS}
3) 关系模式CHRS侯选关键字为:HS;
由HR不包含侯选关键字,HC→R,
分解CT为CSG和CHRS,并求得CT和CHRS上函数依赖最小集:
CHR(CH,{HC→R,HR→C})(BCNF)
CHS(HS,{HS→C})(BCNF)
4) ρ={CSG,CT,CHR,CHS}
图4.5.1 算法分解树
算法1:存在两个问题:第一、分解结果不唯一
例:最后一次分解时如果选择HR→C,
则分解的最终结果为
CSG、CT、HRC和HRS。
所以分解要结合语义和实际应用
来考虑。
第二、分解不保证是保持函数依赖的
例:TH→R未能保持,在分解后各模式的
函数依赖的并集中没有逻辑蕴涵
TH→R。
4、面向3NF且保持函数依赖的分解(算法2)
输入:关系模式R及其上的最小函数依赖集F。
输出:R的保持函数依赖的分解,其中每一个关系模式是关于F在其上投影的3NF。
算法实现:
1)如果R中存在一些不在F中出现的属性,
则将它们单独构成一个关系模式,并从模式R中消去;
2)如果F中有一个函数依赖X→A,且XA=R,则R不用分解,
算法终止;
3)对F中的每一个函数依赖X→A,构造一个关系模式XA。
如果X→A1,X→A2,…,X→An均属于F,则构造一个关系模式XA1A2…An。
定理:算法2正确(证明略)
例4.5.9:分解算法1例2关系模式CTHRSG,要保持函数依赖达到3NF。
解:关系模式CTHRSG的最小函数依赖集F={C→T,CS→G,HR→C,
HS→R,TH→R}。该模式可以保持函数依赖地分解为如下一
组3NF的关系模式:ρ={CT,CSG,CHR,HSR,HRT}。
5、面向3NF既有无损联接性又保持函数依赖的分解(算法3)
输入:关系模式R及其上的最小函数依赖集F。
输出:R的具有无损联接性及保持函数依赖的分解,
其中每一个关系模式均为3NF。
算法实现:
1) 按算法2对关系模式R进行分解,设结果为σ={R1,R2,…,Rk};
2) X是R的关键字,τ=σ∪{X}是R的一个分解。
3) 求τ式的最小集合(当Ri≤Rj∈τ时,消去Ri)。
定理:算法3正确
设X是R的关键字,则τ=σ∪{X}是R的一个分解,
且所有的关系模式均满足3NF,同时具有无损联接性和保持函数依赖性。
由于σ中全部模式均为3NF,X中属性之间不存在传递和部分函数依赖,
即X也是3NF的。分解τ具有无损联接性可以无损联接性检验算法验证。
由于X为R的关键字,表中模式X所对应的行,应用修改规则处理后,
将变成全部由а组成。
例4.5.10:
将算法1例2的关系模式CTHRSG分解为一组3NF的关系模式,
要求分解既具有无损联接性又保持函数依赖。
解:在算法2例中得σ={CT,CSG,CHR,HSR,HRT},
而HS是原模式的关键字,所以τ={CT,CSG,CHR,HSR,HRT,HS}。
由于HS是模式HSR的一个子集,所以
消去HS后的分解{CT,CSG,CHR,HSR,HRT}
就是具有无损联接性和保持函数依赖性的分解,
且其中每一个模式均为3NF。
- 关系数据库设计理论(5) 关系模式的规范化
- 关系数据库规范化理论
- 关系数据库规范化理论
- 关系数据库规范化理论
- 关系数据库规范化理论
- 关系数据库规范化理论
- 关系数据库设计理论(4) 关系模式的分解
- 数据库关系模式的规范化
- 关系数据库规范化理论---范式
- 规范化关系模式设计
- 数据库关系模式规范化
- 关系数据库设计理论(1) 关系模式及其评价
- 第三章 关系模式的规范化设计
- 关系数据库的规范化设计内容提要
- 关系模式的规范化
- 关系模式的规范化
- 关系数据库的规范化
- 关系数据库的规范化
- EJB核心技术及其应用
- C#解决01背包问题
- 机器翻译
- 面试必须要知道的SQL语法,语句
- DateTime类常用技巧
- 关系数据库设计理论(5) 关系模式的规范化
- 利用AJAX技术实现网页无刷新进度条显示
- 详解css定位与定位应用
- 2007新骗术,大家出门在外一定小心,尤其女性朋友
- Iframe的基础应用——关于Iframe刷页问题的两种方法
- Grep学习笔记
- 关系数据库设计理论(4) 关系模式的分解
- 一个有用的Windows服务小程序——用来完成Server端的Socket通信
- 关系数据库设计理论(3) 函数依赖的蕴涵与公理体系