《数据库第五章关系数据库设计理论简.ppt》由会员分享,可在线阅读,更多相关《数据库第五章关系数据库设计理论简.ppt(26页珍藏版)》请在三一办公上搜索。
1、第五章 关系数据理论及数据库设计,关系数据库设计中存在的问题(),示例:考虑为管理职工的工资信息而设计一个关系模式。,关系数据库设计中存在的问题(),问题:麻烦!麻烦!好麻烦!唉,剪不断,理还乱插入异常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入。删除异常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了。数据冗余:职工很多,工资级别有限,每一级别的工资数额反复存储多次。更新异常:如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改。,关系数据库设计中存在的问题(),解决之道:分解!分解!再分解!哇,原来生活可以如此
2、简单,关系数据库设计中存在的问题(),有关学生的关系模式S(S#,SN,SD,DEAN,C#,G),快速热身1:它有哪些数据冗余?望闻问切:不良的数据依赖,函数依赖(),定义函数依赖:设R(U)是属性集U上的关系模式,X,Y U,r是R(U)上的任意一个关系,如果成立对t,s r,若tX=sX,则tY=sY,那么称“X函数决定Y”,或“Y函数依赖于X”,记作XY。称X为决定因素。如S#SN,(S#,C#)G平凡函数依赖:如果X Y,但Y X,则称其为非平凡的函数依赖,否则称为平凡的函数依赖。如(S#,SN)SN是平凡的函数依赖,函数依赖(),部分函数依赖:在R(U)中,如果XY,且对于任意X的
3、真子集X,都有XY,则称Y对X完全函数依赖,记作X Y,否则称为Y对X部分函数依赖,记作X Y。(S#,C#)G,(S#,C#)SN快速热身2:找出S中的另一部分函数依赖。传递函数依赖:在R(U)中,如果XY,Y Z,且Y X,Y X,则称Z对X传递函数依赖。S#SD,SD DEAN快速热身3:找出职工工资表中的传递函数依赖。,函数依赖(),检验:AC?CA?ABD?辨识:满足依赖的关系:依赖在模式的某个关系实例上成立。模式上成立的依赖:依赖在模式的所有关系实例上都成立。,练习,找出可能的函数依赖。,码,定义超码:设K为R的属性或属性组,若K U,则称K为R的超码。候选码:设K为R的超码,若K
4、 U,则称K为R的候选码。主码:若R(U,F)有多个候选码,则可以从中选定一个作为R的主码。主属性:包含在每一个候选码中的属性,称作主属性。全码:关系模式的码由整个属性组构成。如(S#,C#,P#),范例,关系模式S(S#,SN,SD,DEAN,C#,G)主码:(S#,C#)函数依赖:(S#,C#)G S#SN,(S#,C#)SNS#SD,(S#,C#)SDSD DEAN,范式,定义范式是对关系的不同数据依赖程度的要求。通过模式分解将一个低级范式转换为若干个高级范式的过程称作规范化(概念的纯粹化)。,1NF,2NF,3NF,4NF,BCNF,5NF,1NF(),定义关系中每一分量不可再分。即不
5、能以集合、序列等作为属性值。,1NF(),分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割。如果只是查询出生日期,则它满足1NF。如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足1NF。如果比较两人的生肖呢?,2NF(),关系模式S(S#,SN,SD,DEAN,C#,G)不良特性插入异常:如果学生没有选课,关于他的个人信息及所在系的信息就无法插入。删除异常:如果删除学生的选课信息,则有关他的个人信息及所在系的信息也随之删除了。更新异常:如果学生转系,若他选修了k门课,则需要修改k次。数据冗余:如果一个学生选修了k门课,则有关他的所在系的信息重复,2NF(
6、),定义若R1NF,且每个非主属性完全依赖于码,则称R2NF(消除非主属性对码的部分依赖)。如S2NF,因为(S#,C#)SN,(S#,C#)SD改造非主属性有两种,一种完全依赖于码,一种部分依赖于码。将S分解为:SC(S#,C#,G)S_SD(S#,SN,SD,DEAN),2NF(),快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于1NF而不属于2NF。,3NF(),S_SD(S#,SN,SD,DEAN)不良特性插入异常:如果系中没有学生,则有关系的信息就无法插入。删除异常:如果学生全部毕业了,则在删除学生信息的同时有关系的信息也随之删除了。更新异常:如果学
7、生转系,不但要修改SD,还要修改DEAN,如果换系主任,则该系每个学生元组都要做相应修改。数据冗余:每个学生都存储了所在系的系主任的信息。,3NF(),定义关系模式R中,若不存在这样的码X,属性组Y及非主属性Z(Z Y),使得下式成立,XY,YZ,YX则称R3NF(消除非主属性对码的传递依赖)。如S_SD 3NF,因为有S#SD,SDDEAN改造将S分解为:STUDENT(S#,SN,SD)DEPT(SD,DEAN),3NF(),快速热身关系模式R(A,B,C,D),码为AB,给出它的一个函数依赖集,使得R属于2NF而不属于3NF。,模式分解中的问题,实例1表(职工,级别,工资)可以有两种分解
8、途径,分解一:(职工,工资),(工资,级别)分解二:(职工,级别),(工资,级别)不同行业机构的不同工资级别会有相同工资数额,因此按分解一,有可能导致同一职工对应不同的工资级别,从而丢失了有关职工工资级别的信息(丢失了函数依赖:职工级别)。,丢失函数依赖,模式分解中存在的问题,R(A,B,C),AB(R),BC(R),AB(R),BC(R),R(A,B,C),AB(R),BC(R),AB(R),BC(R),有损分解,无损分解,关系模式的分解算法,分解的基本代数运算投影自然连接分解的目标无损连接分解保持函数依赖达到更高级范式,关系模式的分解算法,保持无损的模式分解有损分解的例子,R(A,B,C),AB(R),BC(R),AB(R),BC(R),关系模式的分解算法,无损连接分解定义(分解为两个关系模式)关系模式R(U),U1,U2 U,U1U2=U,r是R上的一个关系,r1=U1(r),r2=U2(r),若r=r1 r2,则称(r1,r2)是r的一个无损连接分解。注:r U1(r)U2(r)。,R(A,B,C),AB(R),BC(R),AB(R),BC(R),关系模式的分解算法,示例:R(ABC;AC,BC)按保持无损连接分解码为AB,分解为AC;AC,AB。丢失了函数依赖BC。按保持函数依赖分解进行分组,AC;AC,BC;BC。分解是有损的。,