资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2007,年,4,月,19,日星期四,兰州理工大学计算机与通信学院,*,数据库设计,规范化理论,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,1,兰州理工大学计算机与通信学院,关系数据库设计中存在的问题,示例,:,考虑为管理职工的工资信息而设计一个关系模式。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,2,兰州理工大学计算机与通信学院,在表,中,包含着两类信息:,职工个人的工资信息;,各个级别的工资数额。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,问题:,如果我希望知道在这个单位,8,级工的工资是多少,能否查询到?,2007,年,4,月,19,日星期四,3,兰州理工大学计算机与通信学院,问题:,插入异常:,如果没有职工具有,8,级工资,则,8,级工资的工资数额就难以插入,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,删除异常:,如果仅有职工赵明具有,4,级工资,如果将赵明删除,则有关,4,级工资的工资数额信息也随之删除了。,2007,年,4,月,19,日星期四,4,兰州理工大学计算机与通信学院,数据冗余:,职工很多,工资级别有限,每一级别的工资数额反复存储多次。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,更新异常:,如果将,5,级工资的工资数额调为,620,,则需要找到每个具有,5,级工资的职工,逐一修改。,2007,年,4,月,19,日星期四,5,兰州理工大学计算机与通信学院,解决之道:,分解,!,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,6,兰州理工大学计算机与通信学院,有关学生的关系模式,S(,学号,姓名,系号,主任,课程编号,成绩,),它有哪些数据冗余?,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,7,兰州理工大学计算机与通信学院,规范化理论,问题的提出,针对一个具体问题,如何构造一个合适的数据模式。即应该构造几个关系模式(表),每个关系有那些属性组成?,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,8,兰州理工大学计算机与通信学院,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,定 义:,设,R(U),是属性集,U,上的关系模式。,X,,,Y,是,U,的子集。若对于,R(U),的任意一个可能的关系,r,,,r,中不可能存在两个元组在,X,上的属性值相等,而在,Y,上的属性值不等,则称,X,函数确定,Y,或,Y,函数依赖于,X,,记为,XY,。,记号,xy,称,x,函数确定,y,,或,y,函数依赖于,x,。,称,X,为决定因素。,如 学号 姓名,(学号,课程)成绩,2007,年,4,月,19,日星期四,9,兰州理工大学计算机与通信学院,注 意:,函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖。例如在没有同名的情况下,,姓名年龄,是成立的,而在有同名的情况下,这个函数依赖就不成立了。,平凡函数依赖:,如果,X Y,,但,Y,不是,X,的子集,则称其为非平凡的函数依赖,否则称为平凡的函数依赖。,如,(学号,姓名),姓名,是平凡的函数依赖,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,10,兰州理工大学计算机与通信学院,函数依赖可分为三类:,完全函数依赖,部分函数依赖和传递函数依赖,。,定 义:,在,R(U),中有,X,、,Y,U,,如果,XY,,并且对于,X,的任何一个真子集,X,,都有,Y,不函数依赖于,X,,则称,Y,对,X,是完全函数依赖的。,定 义:,在,R(U),中,如果,XY,,并且对于,X,的某个真子集,X,,有,XY,,则称,Y,对,X,部分函数依赖。,定 义:,在,R(U),中,如果,XY,(,Y,不包含于,X,,,X,不依赖于,Y,),且,YZ,,则称,Z,对,X,传递函数依赖。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,11,兰州理工大学计算机与通信学院,例,1,:某单位有一资料室,它管理的数据有,读者信息、图书信息、借阅信息,。,读者信息,:,借书证号,读者姓名,性别,部门,学历,部门电话,个人电话,电子信箱等;,图书信息,:,图书编号,分类号,书名,作者,出版社,单价等;,借阅信息,:借书证号,图书编号,书名,借出日期,应还日期等。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,12,兰州理工大学计算机与通信学院,函数依赖关系,(读者信息),:,借书证号,读者姓名,借书证号,性别,借书证号,部门,借书证号,学历,部门,部门电话,借书证号,个人电话,借书证号,电子信箱,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,13,兰州理工大学计算机与通信学院,函数依赖关系,(图书信息),:,图书编号,分类号,图书编号,书名,图书编号,作者,图书编号,出版社,图书编号,单价,函数依赖关系,(借阅信息),:,图书编号,书名,借书证号、图书编号,借出日期,应还日期,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,14,兰州理工大学计算机与通信学院,多值依赖,函数依赖关系是一种关系模式内属性间较为明显的依赖关系,但是随着人们对关系模式的了解越来越深刻,发现尚有另外的一些依赖关系存在,多值依赖就是其中的一种。例如,有一个课程关系,COURSE,(如下表所示)。,课程名,CNAME,教师名,TEACH,选用参考书,BOOK,数据库原理,李勇,张明,王阳,数据库管理系统,数据库系统,数据结构,任学琴,李瑞,张文其,数据结构习题集,算法分析,数据结构上机指导,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,15,兰州理工大学计算机与通信学院,CNAME,TEACH,BOOK,数据库原理,李勇,数据库管理系统,数据库原理,李勇,数据库系统,数据库原理,张明,数据库管理系统,数据库原理,张明,数据库系统,数据库原理,王阳,数据库管理系统,数据库原理,王阳,数据库系统,数据结构,任学琴,数据结构习题集,数据结构,任学琴,算法分析,数据结构,任学琴,数据结构上机指导,数据结构,李瑞,数据结构习题集,数据结构,李瑞,算法分析,数据结构,李瑞,数据结构上机指导,数据结构,张文其,数据结构习题集,数据结构,张文其,算法分析,数据结构,张文其,数据结构上机指导,从这个关系中可以看出两点,:,(1),该关系的数据冗余很大。,(2),该关系的属性间有一种有别于函数依赖的依赖关系存在。,2007,年,4,月,19,日星期四,16,兰州理工大学计算机与通信学院,范式理论,1NF,:,任一属性不能同时具有多个值(,关系中每一分量不可再分。即不能以集合、序列等作为属性值,)。,2NF,:,属性必须完全依赖唯一标识符。,3NF,:,属性间不存在传递依赖。,BCNF,:,每一个决定因素都包含码。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,17,兰州理工大学计算机与通信学院,例,2,:,R,(,学号,姓名,课程编号,课程名称,学分,成绩,),唯一标识符,(Key),:,(,学号,课程编号,),数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,不符合,2NF,依赖关系:,学号姓名,课程编号 课程名称,,课程编号学分,,(,学号,课程编号,),成绩,2007,年,4,月,19,日星期四,18,兰州理工大学计算机与通信学院,例,3,:,S,(,学号,姓名,性别,学院,院长,),。,唯一标识符,(Key),:,学号,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,不符合,3NF,依赖关系:,学号姓名,学号性别,学号学院,,学院院长,2007,年,4,月,19,日星期四,19,兰州理工大学计算机与通信学院,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,问题的解决办法:,拆分关系(表),2007,年,4,月,19,日星期四,20,兰州理工大学计算机与通信学院,关于例,2,R(,学号,,姓名,,课程编号,,课程名称,学分,成绩,),R1(,学号,,,姓名,),R2(,课程编号,,,课程名称,学分,),R3(,学号,,,课程编号,,,成绩,),学号,姓名,课程编号,课程名称,课程编号,学分,(,学号,课程编号,),成绩,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,21,兰州理工大学计算机与通信学院,关于例,3,S(,学号,,姓名,性别,学院,院长,),S1(,学号,,姓名,性别,学院,),S2(,学院,,院长,),学号,姓名,学号,性别,学号,学院,学院,院长,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,22,兰州理工大学计算机与通信学院,例,4,:某部队拟建立干部档案,数据项有:,编号,姓名,现军衔,现任职务,入伍日期,最高学历,低级军衔及获得日期,曾担任职务及任命日期,所取得各学历及取得日期。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,23,兰州理工大学计算机与通信学院,函数依赖关系:,编号,姓名,编号现军衔,编号现任职务,编号入伍日期,编号最高学历,编号之前军衔,,(,编号,低级军衔,),获得日期,编号曾担任职务,,(,编号,曾担任职务,),任命日期,编号各学历,,(,编号,各学历,),取得日期,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,24,兰州理工大学计算机与通信学院,表,1,(,编号,,姓名,现军衔,现任职务,入伍日期,最高学历),表,2,(,编号,,,低级军衔,,获得日期),表,3,(,编号,,,曾担任职务,,任命日期),表,4,(,编号,,,学历,,取得日期)。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,25,兰州理工大学计算机与通信学院,规范化步骤,2NF 3NF,BCNF 4NF,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,规范化的目的就是构造合适的关系模式。,2007,年,4,月,19,日星期四,26,兰州理工大学计算机与通信学院,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,范式之间的关系,定 理,:,3NF,2,NF,。,反证:若,R,3NF,,但,R,2,NF,,则按,2NF,定义,一定有非主属性部分依赖于码;,设,X,为,R,的码,则存在,X,的真子集,S,,以及非主属性,Z,(其中,S,不包含于,Z,),,使得,S,Z,成立;,于是在,R,中存在码,X,,属性组,S,,以及非主属性,Z,,使得,X,S,,,S,Z,成立,进而有,S,X,成立;,这与,R,3NF,矛盾,所以,R,2,NF,。,2007,年,4,月,19,日星期四,27,兰州理工大学计算机与通信学院,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,定 理:,关系模式,R(U),若满足,BCNF,,则必定满足,3NF,。,证明略,请大家看参考书。,2007,年,4,月,19,日星期四,28,兰州理工大学计算机与通信学院,模式分解中的问题,实例,表(职工,级别,工资)可以有两种分解途径,,分解一:(职工,工资),(工资,级别),姓名,级别,工资,赵,4,500,钱,5,600,孙,6,700,李,7,600,姓名,工资,赵,500,钱,600,孙,700,李,600,级别,工资,4,500,5,600,6,700,7,600,丢失函,数依赖,分解二:(职工,级别),(工资,级别),不同行业机构的不同工资级别会有相同工资数额。按分解一,有可能导致同一职工对应不同的工资级别,从而丢失了有关职工工资级别的信息(,丢失了函数依赖:职工,级别,),。,2007,年,4,月,19,日星期四,29,兰州理工大学计算机与通信学院,R(A,B,C),A,B,C,1,1,2,2,2,1,A,B,1,1,2,2,B,C,1,2,2,1,A,B,C,1,1,2,2,2,1,AB,(R),BC,(R),AB,(R),BC,(R),R(A,B,C),A,B,C,1,1,1,2,1,2,A,B,1,1,2,1,B,C,1,1,1,2,A,B,C,1,1,1,1,1,2,2,1,1,2,1,2,AB,(R),BC,(R),AB,(R),BC,(R),有损分解,无损分解,2007,年,4,月,19,日星期四,30,兰州理工大学计算机与通信学院,将,R,分解为,R1,和,R2,的分解是无损连接分解的条件是,,R1R2 R1,,或,R1R2 R2,。,如果有,R,上的,函数依赖,X Y,成立,且,X Y,是空,集,则分解,R,Y,和,X Y,是无损连接分解。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,31,兰州理工大学计算机与通信学院,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,判定一个分解是否为依赖保持分解的算法比较复杂。请看参考文献。,2007,年,4,月,19,日星期四,32,兰州理工大学计算机与通信学院,设计目标,:,无损连接、保持依赖、,x,NF,无损连接是分解的一个必要条件。,BCNF,不一定能保持依赖,但,3NF,可以保证分解是保持依赖的。,因此,在工程中一般分解到,3NF,。,此外,有时需要对表进行水平分解。,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,33,兰州理工大学计算机与通信学院,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,小结,规范化理论为数据库设计提供了理论和方法。但是,客观世界是复杂的,在构造模式时尚需考虑到其他的多种因素。在实际应用中,必须结合应用环境和现实世界的具体情况,合理地选择数据库模式。,2007,年,4,月,19,日星期四,34,兰州理工大学计算机与通信学院,谢谢,!,数据库原理与应用,P,rinciple and,A,pplication of,D,ataBase,2007,年,4,月,19,日星期四,35,兰州理工大学计算机与通信学院,
展开阅读全文