数据库的关系模式的规范化
1、定理
定理5.6:一个3NF的关系模式一定是2NF的。
定理5.7:一个BCNF的关系模式一定是3NF的。
证明:用反证法。设R是3NF的,但不是2NF的,那 么一定存在非主属性A、候选键X和X的真子集Y,使 得Y→A X→A X→Y 与假设矛盾,所以R也是2NF的。证毕。
2、范式之间的关系 1NF
例:R=(S#,C#,GRADE,TNAME,TADDR),
F={C# TNAME,(S#,C#) GRADE,TNAME S# C# GRADE TNAME TADDR 90 徐 浩 a1 TADDR} C401001
200401001 C402002 C403001 200401002 200401003 200402001 C401001 90 85 75 李阳洋 宋 徐 歌 浩 b1 c1 a1
分析关系模式中存在的属性对侯选键的部分和传 递依赖,确定规范级别; 进行模式分解,必须保证分解的两个特性,即无 损联接和保持依赖。
本章总结
知识体系
解决途径问题原因 方法Fra bibliotek函数依赖
模式分解
规范化理论
F={C#TNAME,(S#,C#)GRADE,TNAME TADDR} ρ={R1(C#, TNAME),R2(S#,C#,GRADE),
R3(TNAME,TADDR),},保持依赖性
结论:该分解保持依赖和具有无损联接性
小结
1NF
消除非主属性对侯选键的部分函数依赖
2NF
消除非主属性对侯选键的传递函数依赖
李阳洋 宋 徐 歌 浩
结论:R2中仍然存在数据冗余 和操作异常
四、第三范式(3NF) 定义: 如果一个关系模式R属于1NF,且R的任何一个 非主属性都不传递依赖于 R 的候选键,那么称 R 是满足第三范式(3NF)的关系模式。
例:R1(S#,C#,GRADE),
F1={(S#,C#)GRADE}
3NF 保证数据库中各关系模式属于 在多数情况下,数据库模式中的关系模式 2NF是数据 消除主属性对侯选键的部分或传递函数依赖 库逻辑设计中的最低要求。 要求达到 3NF。 BCNF
小结(续)
关系模型的规范化设计方法
从语义的角度,确定每个关系模式的函数依赖集;
求每个关系模式的函数依赖集的最小依赖集,确 定每个模式的候选键;
F={C# TNAME,(S#,C#) GRADE,TNAME S# C# GRADE TNAME TADDR 90 徐 浩 a1 TADDR} C401001
200401001 C401001 200401001 C402002 C403001 200401001 C402002 200401001 C403001 C401001 200401002 200401002 C401001 C402002 200401002 C402002 200401003 C402002 200402001 C401004 90 90 85 90 75 85 徐 浩 李阳洋 宋 李阳洋 歌 徐 宋 浩 歌 徐 浩 李阳洋 李阳洋 李阳洋 徐 浩 b1 a1 c1 b1 a1 c1
例:R=(S#,C#,GRADE,TNAME,TADDR),
F={C#TNAME,(S#,C#)GRADE,TNAME TADDR} F是最小函数依赖集
C#,TNAME S#,C#,GRADE
TNAME,TADDR
ρ={R1(C#, TNAME),R2(S#,C#,GRADE), R3(TNAME,TADDR),},保持依赖性
GRADE 90 90 85 75 88 69 87
R2(C#,TNAME,TADDR),
r1 TADDR} S# C# r2 F2={C#TNAME,TNAME
C# TNAME 徐 浩 TADDR a1 b1 c1 a1 200401001 200401001 200401001 200401002 200401002 200401003 200402001 C401001 C402002 C403001 C401001 C402002 C402002 C401004 C401001 C402002 C403001 C401004
主要内容
范式
第一范式
第二范式 第三范式 BCNF 范式之间的关系和关系模式的规范化 向3NF的模式分解算法
一、范式
衡量关系模式好坏的标准就是关系模式的范 式(Normal Forms,简记为NF)。 可以把范式的概念理解为符合某一条件的关 系模式的集合。
二、第一范式(1NF) 在一个关系模式 R中,如果R的每一个属性的值 域中的值都是不可再分的最小数据单位,则称R 是第一范式(1NF)的模式,也称R∈1NF。 1NF是最基本的范式,满足1NF的关系称 为规范化的关系,否则,称为非规范化的 关系。
举例:
例 :在关系模式 R(CITY , STREET , ZIP) 中,候
选键为{CITY,STREET}和{ZIP,STREET}, F={{CITY,STREET}→ZIP,ZIP→CITY}。
CITY
STREET
ZIP
结论:R是3NF模式
主属性对候选键的部分依赖
五、BCNF 定义: 设有关系模式R(U,F),F是R上的函数依赖集, X和A是U的子集,且A不是X的子集。如果对于 F中的每一个函数依赖X→A,X都是R的一个候 选键,则称R是鲍依斯-柯德范式,记为BCNF。
七、向3NF的模式分解算法 算法5.5 一个关系模式向3NF的保持依赖性的分解 输入:关系模式R(U,F), R上的函数依赖集F(最小依赖集)
输出: R 的一个保持依赖的分解 ρ ={R1 , R2… , Rk},每个Ri为3NF(i=1,2,…,k)。 方法:
(1)若有函数依赖X→AF,且XA=R,则ρ ={R},转(5); ( 2)找出R 的不在 F中出现的所有属性,并把这些属性构 成一个关系模式。然后把这些属性从 U 中去掉,将剩余 的属性仍记为U。 (3)对F中的函数依赖按具有相同左部的原则进行分组, 并按合并规则将每一组合并成一个新的函数依赖。比如 若有X→A1 ,X→A2 , … ,X→Am ,则可以将它们合并 成X→A1A2…Am。 (4)对于F中的每一个X→Y,都构成一个关系模式Ri=XY。 (5)停止分解,输出ρ 。
消除非主属性对侯选键的部分函数依赖
2NF
消除非主属性对侯选键的传递函数依赖
3NF
消除主属性对侯选键的部分或传递函数依赖
BCNF
3、关系模式的规范化 关系模式的规范化就是通过对模式进行分解, 将一个属于低级范式的关系模式转换成若干个 属于高级范式的关系模式的过程,从而解决或 部分解决数据冗余、更新异常等问题。
定理5.9 向3NF的无损联接并保持依赖的分解 设 ={R1 , R2… , Rk} 是由算法 5.5 得到的 R 的 3NF分解,X是R的一个候选键,则
={ R1,R2…,Rk,X }也是R的一个分解。
分解中的所有关系模式是3NF的,且分解保持 依赖和具有无损联接性。
例:R=(S#,C#,GRADE,TNAME,TADDR),
李阳洋 李阳洋 徐 浩
例:R=(S#,C#,GRADE,TNAME,TADDR),
F={C#TNAME,(S#,C#)GRADE,TNAME TADDR}
学号(S#) 课程号(C#) 教师住址 (TADDR)
成绩(GRADE) 教师名(TNAME)
R1
R2
结论:R1和R2是2NF模式
例
: R1 (S#,C#,GRADE),F1={(S#,C#)GRADE}
88 75
69 88 87
b1 a1
b1 b1 a1
结论:R是1NF模式
三、第二范式(2NF)
定义:
如果一个关系模式R是1NF,且它的每一个非主 属性都完全函数依赖于候选键,那么称R是满足 第二范式(2NF)的关系模式。
例:R=(S#,C#,GRADE,TNAME,TADDR),
F={C#TNAME,(S#,C#)GRADE,TNAME TADDR} 部分依赖 学号(S#) 课程号(C#)
R2(C#,TNAME,TADDR),
F2={C#TNAME,TNAMETADDR} 结论:R1 是3NF模式 R2不是3NF模式
例:R2(C#,TNAME,TADDR),
F2={C#TNAME,TNAMETADDR}
课程号(C#)
教师名(TNAME)
教师住址 (TADDR)
R21(C#,TNAME),F21={C#TNAME} R22 ( TNAME,TADDR ) ,F22={TNAMETAD DR}
教师名(TNAME)
结论:R不是2NF模式
例:R=(S#,C#,GRADE,TNAME,TADDR),
F={C#TNAME,(S#,C#)GRADE,TNAM S# C# GRADE TNAME TADDR E200401001 TADDR} C401001 90 徐 浩 a1
200401001 200401001 200401002 200401002 200401003 200402001 C402002 C403001 C401001 C402002 C402002 C401004 90 85 75 88 69 87 李阳洋 宋 徐 歌 浩 b1 c1 a1 b1 b1 a1
C402002
C402002 C401004
88
69 87
李阳洋
李阳洋 徐 浩
b1
b1 a1
结论:R不是1NF模式
解决方法 对于有子表的非规范关系,一般采用重复 所在行的其它属性的值,增加新的记录,从 而把子表中的值分开,将非规范关系转换成 规范关系。
例:R=(S#,C#,GRADE,TNAME,TADDR),