资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,第3章 关系数据库规范化理论,第一部分 数据库系统的一般原理,第,3,章 关系数据库规范化理论,数据库设计的问题可以简单地描述为:如果要把一组数据存储到数据库中,如何为这些数据设计一个合适的逻辑结构。在关系数据库系统中,就是如何设计一些关系表以及这些关系表中的属性。这就是本章介绍的关系模式的规范化设计问题。,项目,3.1,函 数 依 赖,项目要求,(1),掌握函数依赖的定义、以及函数依赖的各种类型。,(2),使用函数依赖的推理规则,写出关系的主码。,学习节奏,3.1.1,什么是函数依赖,项目,3.1,函 数 依 赖,假定有如图,3-1,所示的关系,R,。,图,3-1,关系,R,其中,,XH,、,KH,、,KM,、,XM,、,DZ,和,CJ,依次为学号、课程号、课程名、教师姓名、教师地址和学生成绩。,3.1.1,什么是函数依赖,项目,3.1,函 数 依 赖,3.1.1.1,函数依赖(Functional Depency,FD),任给,R(U),,,U,为属性集,,x,、,y,为,U,的子集,如果对于,x,的每个值,,y,有唯一确定的值与之对应,则称,x,决定,y,,或,y,函数依赖于,x,,记为,xy,。,3.1.1.2,平凡函数依赖(Trivial FD)、非平凡函数依赖(Nontrivial FD),设,xy,,如果,y,是,x,的子集,则称,xy,为平凡函数依赖。如,(XH,KH)XH,。,如果,y,中至少有一个属性不在,x,中,则称,xy,为非平凡函数依赖。如,(XH,KH)(XH,KM),。,如果,y,中没有一个属性在,x,中,则称,xy,为完全非平凡函数依赖。,对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,,我们总是讨论完全非平凡函数依赖。,3.1.1,什么是函数依赖,项目,3.1,函 数 依 赖,3.1.1.3,完全函数依赖(Full FD),若,xy,,且对于,x,的所有真子集,x,,都有,x,y,,则称,x,完全决定,y,,或,y,完全函数依赖于,x,,记为 。,3.1.1.4,部分函数依赖 (Partial FD),若,xy,,且存在,x,的一个真子集,x,,满足,x,y,,则称,x,部分决定,y,,或,y,部分函数依赖于,x,,记为 。,3.1.1.5,传递函数依赖 (Transitive FD),若,xy,、,yz,,但,y x,,则称,x,传递决定,z,,或,z,传递函数依赖于,x,,记为 。,传递函数依赖定义之所以要加上条件,y x,,是因为如果,yx,,则,x y,,这实际上是,z,直接函数依赖于,x,,而不是传递函数依赖了。,事实上,对于关系模式,R,,,U,为其属性集合,,X,、,Y,为其属性子集,根据函数的依赖定义和实体间联系的定义,可以得出如下变换方法。,如果,X,和,Y,之间是,1,:,1,的关系,则存在函数依赖,XY,和,YX,。,如果,X,和,Y,之间是,1,:,n,的关系,则存在函数依赖,YX,。,如果,X,和,Y,之间是,n,:,m,的关系,则,X,和,Y,之间不存在函数依赖关系,(1),自反律:如果 ,则,xy,。这是一个平凡函数依赖。,3.1.2,函数依赖的推理规则,项目,3.1,函 数 依 赖,3.1.1.3,完全函数依赖,设有关系,R,,,x,、,y,、,z,为,R,的一个属性集,则推理规则如下所述。,(2),增广律:如果,xy,,则,xzyz,。,(3),传递律:如果,xy,、,yz,,则,xz,。,(4),合并律:如果,xy,、,xz,,则,xyz,。,(5),分解律:如果,xyz,,则,xy,,,xz,。,项目实训,训练要求,设关系模式R(A,B,C,D),如果规定:关系中B值与D值之间,是一对多联系,A值与C值之间是一对一的联系。试写出相,应的函数依赖,重点提示,本训练只要写出基本函数依赖即可,训练要求,设有关系模式R(A,B,C,D),F是R上成立的函数依赖集,,F=AB,AC。请写出R的主码,并说明理由,重点提示,主码决定每一个非主属性,实训一 根据要求写关系的函数依赖集,实训二 根据函数依赖写关系的主码,项目,3.1,函 数 依 赖,项目小结,本项目通过实例引出函数依赖的定义,重点介绍,3,种函数依赖,包括完全函数依赖、部分函数依赖和传递函数依赖,并介绍了函数依赖的几条推理规则。通过对本项目的学习,读者应该能轻松地写出各关系的主码,为后续项目的学习奠定坚实的基础。,项目,3.1,函 数 依 赖,项目要求,(1),了解关系规范化理论的应用,掌握关系规范化的过程。,(2),能根据要求判断一个关系满足第几范式,并使关系的范式提高。,项目,3.2,关系模式的规范化,学习节奏,项目,3.2,关系模式的规范化,3.2.1,问题提出,当多个学生选修同一门课程时就会出现数据冗余,导致,KM,、,XM,、,DZ,属性多次重复存储。,(1),数据冗余:,由于数据冗余,当更新某些数据项时,就有可能一部分字段修改了,而另一部分字段未修改,造成存储数据的不一致性。,(2),修改麻烦:,应该插入到,DB,中的数据插不进去,称为插入异常。如果新开课程没有学生选修,新开课程的,KH,、,KM,就无法插入,因为,XH,为空,关系模式规定主码不能为空或部分为空。,(3),插入异常:,鉴于存在以上种种问题,可以得出结论:关系,R,不是一个好的关系模式。一个好的关系模式应满足:数据冗余尽可能少,尽可能避免插入异常、删除异常。,(4),删除异常:,项目,3.2,关系模式的规范化,3.2.2,范式,范式来自英文,Normal Form,,简称,NF,,指一个关系的非主属性函数依赖于主码的程度。目前主要有,6,种范式:,满足最低要求的叫第一范式,简称为,1NF,;,第一范式、第二范式、第三范式、,BC,范式、第四范式和第五范式。,在第一范式基础上进一步满足一些要求的为第二范式,简称为,2NF,;,以此类推,则各种范式之间存在如下联系:,项目,3.2,关系模式的规范化,3.2.3,关系模式的规范化,3.2.3.1,第一范式,(1NF),第一范式是对关系模式的一个最起码的要求,不满足第一范式的数据库,模式不能称为关系模式。但是满足第一范式的关系模式并不一定是一个,好的关系模式。,若关系,R,的所有属性不能再分,则,R1NF,。,3.2.3.2,第二范式,(2NF),很显然,如图,3-2,所示的,R1,、,R2,都属于,2NF,。将,R,分解为,R1,和,R2,以后,一定,程度上减轻了数据冗余和操作异常,但仍然存在着数据冗余和操作异常。,若关系,R1NF,,且它的每个非主属性都完全依赖于主码,则称,R2NF,。,第一范式 (1st NF),B,uyer,ID,Country,City,1,1,4,2,中国,中国,日本,美国,杭州,杭州,东京,芝加哥,B,uyer,ID,Address,1,2,3,4,中国杭州市,美国芝加哥,英国利物浦,日本东京市,第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF),第二范式 (2nd NF),如果一个关系满足1NF,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF),第二范式要求每个表只描述一件事情,Order,s,字段,例子,订单编号,产品编号,订购日期,价 格,001,A001,2000-2-3,$29.00,Order,s,字段,例子,订单编号,订购日期,001,2000-2-3,Products,字段,例子,产品编号,价 格,A001,$29.00,项目,3.2,关系模式的规范化,3.2.3,关系模式的规范化,3.2.3.2,第二范式,(2NF),(1),数据冗余:关系,R1,的冗余为必要冗余,在关系,R2,中,当一位教师讲授多门课程时,该教师的姓名、地址就会重复出现,(2),修改麻烦:数据冗余势必造成修改麻烦。,(3),插入异常:如果新调入的教师没有上课,则该教师的信息就没办法插入,R2,表中,(4),删除异常:如果某位教师只讲授一门课,当该门课不开时,该教师的信息也会被删除。,项目,3.2,关系模式的规范化,3.2.3,关系模式的规范化,3.2.3.2,第二范式,(2NF),(1),当一位教师讲授多门课程时,该教师的地址,(DZ),只出现一次。,将,R2,分解为,R21,和,R22,以后,使得,R2,存在的问题在一定程度上得到解决。,(2),关系,R22,可以插入没有上课的教师信息。,(3),某门课因故不开了,只是删除关系,R21,中的相应记录,关系,R22,中任课教师的信息仍存在。,项目,3.2,关系模式的规范化,3.2.3,关系模式的规范化,3.2.3.3,第三范式,(3NF),显然,,R213NF,,,R22,只存在一个非主属性,不可能存在传递函数依赖,所以,R223NF,。,若关系,R2NF,,且它的每个非主属性都不传递依赖于主码,则称,R3NF,。,3.2.3.4,关系规范化的步骤,关系规范化的步骤如,图,3-4,所示。,图,3-4,关系规范化的步骤,第三范式 (3rd NF),如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF),Order,s,字段,例子,订单编号,订购日期,顾客编号,001,2000-2-3,AB001,顾客姓名,Tony,Order,s,字段,例子,订单编号,订购日期,顾客编号,001,2000-2-3,AB001,项目实训,训练要求,(1)设有关系R(A,B,C,D,E),属性间的函数依赖关系为:,AB、AC、CD、DE,若把关系R分解为R1(A,B,C)与,R2(C,D,E),试确定R1与R2满足的范式等级,(2) 设关系模式,R(A,B,C,D),F是R上成立的FD集,F=ABCD,AD1) 试说,明为什么R不是2NF模式2) 试把R分解成2NF模式,(3) 设关系模,式R(A,B,C),F是R上成立的FD集,F=CB,BA1) 试说明,为什么R不是3NF模式2) 试把R分解成3NF,重点提示,若R1NF,且主码仅有一个属性名,则R2NF,(2) 若R2NF,且仅存在01个非主属性,则R3NF,实训一 确定范式等级一,实训二 确定范式等级二,项目,3.2,关系模式的规范化,项目小结,本项目通过实例引出关系规范化理论,重点是关系规范化的全过程。通过对本项目的学习,学生能根据要求判断一个关系满足第几范式,并使关系的范式提高,使得该关系不再存在数据插入异常和删除异常。,项目,3.2,关系模式的规范化,思考与练习,一、选择题,1,设有关系模式,R AB,、,BC,,则关系,R,最高满足,( ),。,A,1NFB,2NF,C,3NFD,BCNF,2,任何一个满足,2NF,但不满足,3NF,的关系模式都不存在,( ),。,A,主属性对主码的部分依赖,B,非主属性对主码的部分依赖,C,主属性对主码的传递依赖,D,非主属性对主码的传递依赖,1,设关系模式,R,上有函数依赖,XY,和,YZ,成立,若,_,,则称,Z,传递函数依赖于,X,。,2,一个不好的关系模式会存在数据冗余、修改麻烦、,_,和,_,等问题。,二、填空题,思考与练习,三、简答题,1,设关系模式,R(S#,C#,TNAME),,其属性为学生学号、课程号、任课教师姓名。如果规定,每个学生可选修多门课,每门课只有一个教师任教。,(1),写出,R,的基本,FD,和主码。,(2),说明为什么,R,不是,2NF,模式?,(3),试把,R,分解成,2NF,模式集。,2,现有如下关系模式:,借阅,(,图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅日期,归还日期,),(1),写出该关系模式的主码。,(2),该关系模式中是否存在部分函数依赖?如果存在,请写出两个。,(3),该关系模式最高满足第几范式?并说明理由。,(4),如何分解该关系模式,使得分解后的关系模式均满足第二范式,(2NF),?,Thank You !,
展开阅读全文