资源描述
*,数据库原理及应用,电子科技大学,-,陆鑫,数据库系统原理与开发,4.4-2,数据库规范化设计,关系,规范化范式,理解不同程度的规范化范式,掌握数据库规范化设计方法,理解,逆规范化处理方法,【,本节学习目标,】,一、关系,规范化范式,规范化,范式,(,Normal Form,,,NF,)是指关系表,符合特定,规范,化程度的模式,。,关系,规范化,是把一,个,有,访问,异常的关系分解成结构良好的关系的过程,使得这些关系有最小的冗余或没有冗余。,1.,第,1,范式(,1NF,),如果关系表中的属性不可再细分,该关系满足第,1,范式。反之,该表就不是关系表。,如果关系满足第,1,范式,并消除了关系中的属性部分函数依赖,该关系满足第,2,范式。,例,有一个关系(,A,B,N,O,P,),其复合主键为(,A,B,),那么,N,O,P,这三个非键属性都不存在只依赖,A,或只依赖,B,情况,则该关系满足第,2,范式,反之,不满足第,2,范式。,2.,第,2,范式(,2NF,),如果关系满足第,2,范式,并切断了关系中的属性传递函数依赖,该关系满足第,3,范式。,例,若有一个关系(,A,N,O,P,),主键为(,A,),那么非键属性,N,O,或,P,都不能由单个的,N,O,或,P,或它们的组合所确定。该关系满足第,3,范式。,3.,第,3,范式(,3NF,),在关系中,所有函数依赖的决定因子都是候选键,该关系满足,BCNF,范式。,例,关系,STUDENT(,StudentNum,Name,Email),中,决定因子,StudentNum,也是候选键,该关系满足,BCNF,范式。,4.,巴斯,-,科德范式,(,BCNF,),如果关系满足,BCNF,范式,并消除了多值函数依赖,该关系满足第,4,范式。,例,:设学校中某一门课程由多个教师讲授,每个教师可有自己的参考书。用关系模式,Teaching,(,Course,,,Teacher,,,Book,)来表示课程、教师和参考书之间的关系。,该关系,Teaching,(,Course,,,Teacher,,,Book,),属于,BCNF,范式;但是存在多值函数依赖,即不满足,4NF,。,将原表进行分解处理,可分解为,Teaching,(,TeachID,,,CourseID,,,TeacherID,,,BookID,)、,Course,(,CourseID,,,CourseName,)、,Teacher,(,TeacherID,,,TeacherName,)、,Book,(,BookID,,,BookName,)后,即可消除多值依赖,便可满足,4NF,范式。,5.,第,4,范式(,4NF,),1NF,2NF,3NF,BNCF,4NF,6.,关系规范化程度利弊,关系的规范化程度越高,关系数据库存储的冗余数据就越少,可消除的数据访问异常就越多。,不过关系的规范化程度越高,分解出来的关系表就越多,但实现数据查询访问时,需关联多表,其效率降低。,关系的规范化程度依次提升:,例,“学生”关系的规范化处理,它满足第,1,范式?,二、关系,规范化,设计实例,第,1,范式:,如果关系中的属性不可再细分,则该关系满足第,1,范式。,解决办法,:将学生关系的“联系方式”进行属性分解。,本关系不满足,1,范式,因为“联系方式”属性可以再细分“电话”、“电子邮件”等。,问题:,它满足第,2,范式吗?,第,2,范式:,如果关系满足第,1,范式,并消除了关系中的属性部分依赖,则该关系满足第,2,范式。,分析,:主键(学号,课程号),(学号)系名,(学号)住址,(学号)电话,(学号)电子邮件,存在部分依赖,不满足第,2,范式,处理办法,:,对学生关系进行分解,按“学生信息”、“课程成绩”主题撤分为两个关系表。,以上“学生”关系和“课程成绩”关系均满足第,2,范式,问题:,它满足第,3,范式吗?,第,3,范式:,如果关系满足第,2,范式,并切断了关系中的属性传递依赖,则该关系满足第,3,范式。,分析,:在学生关系表中,(学号)系名,(系名)住址,故(学号)住址。存在传递函数依赖,不满足第,3,范式。,处理办法,:,对学生关系再次分解为“学生”、“系信息”关系,“学生”、“系信息”、“课程成绩”关系均满足第,3,范式,问题,:它满足,BCNF,范式吗?,“学生”、“系信息”、“课程成绩”关系均满足,BCNF,范式,问题,:它满足第,4,范式吗?,BCNF,范式:,在关系中,所有函数依赖决定因子是主键,则该关系满足,BCNF,范式。,分析,:一个系的学生住址可能有多处,办公电话也有多个,故“系信息”关系存在多值依赖,不满足第,4,范式。,第,4,范式:,如果关系满足,BCNF,范式,并消除了多值依赖,则该关系满足第,4,范式。,处理办法,:,对“系信息”关系进一步分解为“系编码”、“学生住址”、“电话目录”关系。,以上各关系均满足第,4,范式,三、逆,规范化,处理,规范化减少了数据冗余,易于保证数据的完整性,但规范化,过高,也会导致数据库性能降低,因此,在利用规范化设计数据库时要平衡两者的关系。,为,此,,有人又,提出了,逆,规范化,处理,的思想。,所谓,逆,规范化,,就是适当降低,规范化,范式约束,不再要求一个,关系,表,必须达到很高的规范化程度,,而是,允许,适当,的数据,冗余性,,以获取数据访问性能,。,逆,规范化处理,的基本方法,:,(,1,)增加冗余列或派生列,(,2,),多个关系,表合并,为一个关系表,本节学习结束!,
展开阅读全文