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} |