《数据库范式课堂课件.ppt》由会员分享,可在线阅读,更多相关《数据库范式课堂课件.ppt(164页珍藏版)》请在三一办公上搜索。
1、An Introduction to Database System,广东工业大学 计算机学院,数据库系统概论An Introduction to Database System第六章 关系数据理论,An Introduction to Database System,内容概述 详细讲解关系数据理论,主要是关系数据库规范化理论。包括关系数据库逻辑设计可能出现的问题,数据依赖的基本概念(包括,函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念;码、候选码、外码的概念;多值依赖的概念),范式的概念、1NF、2NF、3NF、BCNF、4NF的概念和判定方法。数据
2、依赖的Armstrong公理系统。本章内容分为基本要求部分(概论6.1-6.3)和高级部分(概论6.4)。前者是计算机大学本科学生应该掌握的内容。后者是研究生应该学习掌握的内容。,本章目标关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法。,An Introduction to Database System,重点:了解什么是一个“不好”的数据库模式。什么是模式的插入异常和删除异常。规范化理论的重要意义。牢固掌握数据依赖的基本概念,范式的概念,从1NF到4NF的定义,规范化的含义和作用。需要举一反三的:四个范式的理解与应用
3、,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法。难点:能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式。各个级别范式的关系及其证明。本章内容的理论性较强。要通过具体例子和习题练习理解和掌握理论知识。,An Introduction to Database System,第六章 关系数据理论,6.1 问题的提出6.2 规范化6.3 数据依赖的公理系统*6.4 模式的分解6.5 小结,An Introduction to Database System,6.1 问题的提出,关系数据库逻辑设计针对具体问题,如何构造一个适合于它的
4、数据模式数据库逻辑设计的工具关系数据库的规范化理论,An Introduction to Database System,问题的提出,一、概念回顾二、关系模式的形式化定义三、什么是数据依赖四、关系模式的简化定义五、数据依赖对关系模式影响,An Introduction to Database System,一、概念回顾,关系关系模式关系数据库关系数据库的模式,An Introduction to Database System,二、关系模式的形式化定义,关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向
5、域的映象集合F:属性间数据的依赖关系集合,An Introduction to Database System,三、什么是数据依赖?,1.完整性约束的表现形式限定属性取值范围:例如学生成绩必须在0-100之间定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键,An Introduction to Database System,什么是数据依赖(续),2.数据依赖一个关系内部 属性与属性之间 的约束关系现实世界,一个事物内部属性间相互联系的抽象数据内在的性质语义的体现,An Introduction to Database System,什么是数据依赖(续
6、),3.数据依赖的类型 共有三种:函数依赖(Functional Dependency,简记为FD)多值依赖(Multivalued Dependency,简记为MVD)连接依赖(Join Dependency,简记为JD),其中最重要的是函数依赖和多值依赖。,An Introduction to Database System,四、关系模式的简化表示,关系模式R(U,D,DOM,F)简化为一个三元组:R(U,F)当且仅当U上的一个关系r满足F时,r称为关系模式 R(U,F)的一个关系,An Introduction to Database System,五、数据依赖对关系模式的影响,例1建立
7、一个描述学校教务的表:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)、成绩(Grade)单一的关系模式:Student U Sno,Sdept,Mname,Cname,Grade,问题:什么样的关系模式是一个好的关系模式?,An Introduction to Database System,数据依赖对关系模式的影响(续),根据语义分析属性组U上的一组函数依赖F:F Sno Sdept,Sdept Mname,(Sno,Cname)Grade,An Introduction to Database System,关系模式Student中存在的问题,1
8、.数据冗余太大2.更新异常(Update Anomalies)3.插入异常(Insertion Anomalies)4.删除异常(Deletion Anomalies),An Introduction to Database System,数据依赖对关系模式的影响(续),结论:Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖,An Introduction to Database System,分解关系模式,把这个单一模式分成3个关系模式:S
9、(Sno,Sdept,Sno Sdept);SC(Sno,Cno,Grade,(Sno,Cno)Grade);DEPT(Sdept,Mname,Sdept Mname),An Introduction to Database System,第六章 关系数据理论,6.1 问题的提出6.2 规范化6.3 数据依赖的公理系统*6.4 模式的分解6.5 小结,An Introduction to Database System,6.2 规范化,规范化理论 正是用来评价、改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。,An Introduct
10、ion to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction to Database System,6.2.1 函数依赖,函数依赖平凡函数依赖 与 非平凡函数依赖完全函数依赖 与 部分函数依赖传递函数依赖,An Introduction to Database System,引例,关系模式内部各属性间的依赖关系 在student(sno,sname,sex,dept)中,姓名可能重名。属性sno、
11、sname之间存在关系:sname=f(sno)或 sno sname此时,任意两个元组,如果在sno分量上的值不同,则在sname分量上的值也一定不相同。类似的关系在其它元组中还存在,如sno sname、sno dept等。,An Introduction to Database System,一、函数依赖,定义6.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。,即:由X上的值可以确定Y上的值。,思考:为什么概念不表述为“r
12、中两个元组如果在X上的属性值相 等,则在Y上的属性值也相等”?,An Introduction to Database System,说明,1.关系模式需要满足的即所有关系实例均要满足,而不是某一关系满足2.语义范畴的概念3.数据库设计者可以对现实世界作强制的规定 如规定:姓名不能重名等,An Introduction to Database System,二、平凡函数依赖与非平凡函数依赖,在关系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡的函数依赖若XY,但Y X,则称XY是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,C
13、no)Grade 平凡函数依赖:(Sno,Cno)Sno(Sno,Cno)Cno,P173 约定:若不特别声明,总是讨论非 平凡函数依赖。,An Introduction to Database System,平凡函数依赖与非平凡函数依赖(续),若XY,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。若XY,YX,则记作XY。若Y不函数依赖于X,则记作XY。,An Introduction to Database System,三、完全函数依赖与部分函数依赖,定义6.2 在R(U)中,如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y对X完全函数依赖,记作
14、X F Y。若XY,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X P Y。,思考:平凡函数依赖与部分函数依赖之间的关系?,An Introduction to Database System,完全函数依赖与部分函数依赖(续),例1 中(Sno,Cno)Grade是完全函数依赖,(Sno,Cno)Sdept是部分函数依赖:因为Sno Sdept成立,且Sno是(Sno,Cno)的真子集,F,P,An Introduction to Database System,四、传递函数依赖,定义6.3 在R(U)中,如果XY,(Y X),YX,YZ,Z Y则称Z对X传递函数依赖。记为:X Z 注
15、:1)Y X:强调是非平凡函数 依赖,进而排除了部分函数依赖。2)YX:如果YX,即XY,则Z直接依赖于X。3)Z Y:例:在关系Std(Sno,Sdept,Mname)中,有:Sno Sdept,Sdept Mname Mname传递函数依赖于Sno,传递,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction to Database System,6.2.2 码,
16、定义6.4 设K为R中的属性或属性组合。若K U,则K称为R的侯选码(Candidate Key)。若候选码多于一个,则选定其中的一个做为主码(Primary Key)。,F,An Introduction to Database System,码(续),主属性与非主属性包含在任何一个候选码中的属性,称为主属性(Prime attribute)不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)全码整个属性组是码,称为全码(All-key),An Introduction to Database System,码(续),例2
17、 关系模式S(Sno,Sdept,Sage),单个属性Sno是码,SC(Sno,Cno,Grade)中,(Sno,Cno)是码例3 关系模式R(P,W,A)P:演奏者 W:作品 A:听众 一个演奏者可以演奏多个作品 某一作品可被多个演奏者演奏 听众可以欣赏不同演奏者的不同作品 码为(P,W,A),即All-Key,An Introduction to Database System,外部码,定义6.5 关系模式 R 中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码如在SC(Sno,Cno,Grade)中,Sno不是码,但S
18、no是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码 主码与外部码一起提供了表示关系间联系的手段,An Introduction to Database System,补充:由函数依赖求候选码,属性根据函数 依赖集可分成四类:L类:仅出现在F中函数依赖左部的属性。R类:仅出现在F中函数依赖右部的属性。LR类:函数依赖左右两边都出现的属性。N类:函数依赖左右两边都不出现的属性。【定理】对于给定的关系模式及其函数依赖集F,X U X是L类属性,则X必定为任一候选码的成员;X是R类属性,则X必定不在任何候选码中;X是LR类属性,则X可能在某一候选码中,也可能不在任一候
19、选码中。若X是N类属性,则X必定在R的任一候选码中;,An Introduction to Database System,例:已知关系模式的函数依赖集F,求关系模式的候选码。1)设关系模式为 R,UA,B,C,D,E,P,FAD,ED,DB,BCD,DCA 2)关系模式W(I,J,K,X,Y)FIJ,IK,KX,XY 3)设关系模式为 R,UA,B,C,D,E,F,FAF,BCD,DC,BE,CA,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.
20、2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction to Database System,6.2.3 范式,范式是符合某一种级别的关系模式的集合。NF:Normal Form范式针对的是关系模式,而非某个时刻的关系。范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF),An Introduction to Database System,6.2.3 范式,各种范式之间存在联系:某一关系模式R为第n范式,可简记为RnNF。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关
21、系模式的集合,这种过程就叫规范化。,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction to Database System,6.2.4 2NF,1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF;第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。,An
22、Introduction to Database System,2NF(续),例4 关系模式 S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方函数依赖包括:(Sno,Cno)F Grade Sno Sdept(Sno,Cno)P Sdept Sno Sloc(Sno,Cno)P Sloc Sdept Sloc,An Introduction to Database System,2NF(续),S-L-C的码为(Sno,Cno)S-L-C满足第一范式。非主属性Sdept和Sloc部分函数依赖于码(Sno,Cno),Sno,Cno,G
23、rade,Sdept,Sloc,S-L-C,虚线表示部分函数依赖,An Introduction to Database System,S-L-C不是一个好的关系模式(续),(1)插入异常(2)删除异常(3)数据冗余度大(4)修改复杂,An Introduction to Database System,S-L-C不是一个好的关系模式(续),原因 非主属性Sdept、Sloc 部分函数依赖 于码。解决方法:模式分解 S-L-C分解为两个关系模式,以消除这些部分函数依赖 SC(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc),An Introduction to Databas
24、e System,2NF(续),函数依赖图:,关系模式SC的码为(Sno,Cno)关系模式S-L的码为Sno这样非主属性对码都是完全函数依赖,An Introduction to Database System,2NF(续),2NF的定义定义6.6 若R1NF,且每一个非主属性完全函数依赖于码,则R2NF。例:S-L-C(Sno,Sdept,Sloc,Cno,Grade)1NF S-L-C(Sno,Sdept,Sloc,Cno,Grade)2NF S-L-C分解为两个关系模式以后:SC(Sno,Cno,Grade)2NF S-L(Sno,Sdept,Sloc)2NF,An Introducti
25、on to Database System,2NF(续),有关2NF结论:采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction t
26、o Database System,6.2.5 3NF,3NF的定义定义6.7 关系模式R 中若不存在这样的码X、属性组Y及非主属性Z(Z Y),使得XY,YZ成立,Y X,则称R 3NF。结论:若R3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。,An Introduction to Database System,3NF(续),例:2NF关系模式S-L(Sno,Sdept,Sloc)中函数依赖:SnoSdept Sdept Sno SdeptSloc 可得:SnoSloc,即S-L中存在非主属性对码的传递函数依 赖,S-L 3NF,传递,An Introduction to Da
27、tabase System,3NF(续),函数依赖图:,An Introduction to Database System,3NF(续),解决方法 采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的码为Sno,D-L的码为Sdept。分解后的关系模式S-D与D-L中不再存在传递依赖,An Introduction to Database System,3NF(续),S-D的码为Sno,D-L的码为Sdept,S-L(Sno,Sdept,Sloc)2NF S-L(Sno,Sdept,Sloc)3NF S-D(Sno
28、,Sdept)3NFD-L(Sdept,Sloc)3NF,An Introduction to Database System,2NF与3NF间的关系?,证明:若R3NF,则必R2NF。,注:该例题很好的揭示了3NF定义与2NF之间的关系。,An Introduction to Database System,3NF(续),有关3NF的结论:采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上减缓原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个2NF关系分解为多个3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。,An Intr
29、oduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction to Database System,6.2.6 BC范式(BCNF),定义6.8 关系模式R1NF,若XY且Y X时X必含有码,则R BCNF。等价于:每一个非平凡函数依赖中,决定属性因素都包含码。,An Introduction to Database System,BCNF(续),有关BCNF的结论:所有非主属性对每一个
30、码都是完全函数依赖;所有的主属性对每一个不包含它的码,也是完全函数依赖;即:消除了主属性对不包含它的码的部分函数依赖;思考:BCNF中是否存在主属性对(不包含它的)码的传递函数依赖?没有任何属性完全函数依赖于非码的任何一组属性;R BCNF R 3NF,An Introduction to Database System,BCNF(续),例5 请判别关系模式SC(Sno,Cno,Grade)最高属于哪一级范式?C3NF C.C1NF CBCNF D.C2NF 例6请判别关系模式S(Sno,Sname,Sdept,Sage)最高属于哪一级范式?1.假定S有两个码Sno,Sname;2.假定S有一
31、个码Sno;C3NF C.C1NF CBCNF D.C2NF,An Introduction to Database System,BCNF(续),例7关系模式SJP(S,J,P)函数依赖:(S,J)P;(J,P)SSJP3NF,SJPBCNF分析:(S,J)与(J,P)都可以作为候选码,属性相交,An Introduction to Database System,BCNF(续),例8在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。问 STJ 属于几范式?【分析】函数依赖:(S,J)T,(S,T)J,TJ(S,J)和(S,T)都是候选码,An Introduction
32、to Database System,BCNF(续),J,An Introduction to Database System,BCNF(续),STJ3NF没有任何非主属性对码传递依赖或部分依赖STJBCNFT是决定因素,T不包含码,An Introduction to Database System,BCNF(续),解决方法?将STJ分解为二个关系模式:ST(S,T)BCNF,TJ(T,J)BCNF 没有任何属性对码的部分函数依赖和传递函数依赖。,An Introduction to Database System,3NF与BCNF的关系,定理:如果RBCNF,则一定有R3NF。证明:由于若
33、RBCNF,则R的所有非主属性都完全函数依赖于每一个候选码,因此必有R2NF。由于R2NF,若R3NF,则按3NF定义,一定存在非主属性对码的传递依赖。即存在:R的码X,属性组Y,以及非主属性Z(ZY),使得XY,YZ,YX成立。由YZ,按BCNF定义,Y含有码,于是YX成立,这与YX矛盾。所以R3NF。,An Introduction to Database System,3NF与BCNF的关系,【小结】若RBCNF,按定义排除了任何属性对 码的 传递依赖 与 部分依赖;所以R3NF。若R3NF,则R未必属于BCNF。【定理】如果R3NF且R有唯一的候选码,则必有RBCNF。证明:设R3NF
34、且R有唯一候选键X,则对于R的任何一个函数依赖 XY,必有X包含于X(否则存在传递函数依赖)。即对R的任何一个函数依赖XY,X都含候选码,故RBCNF。有用的结论:如果R3NF,且R只有一个候选码,则R必属于BCNF。,An Introduction to Database System,3NF与BCNF的关系,R BCNF R 3NF如果R3NF,且R只有一个候选码 R BCNF R 3NF,An Introduction to Database System,练习题,1.关系模式由3NF转化为BCNF是为了消除。答:主属性对码的传递依赖和部分依赖。2.设关系模式R是全码,则R可达到第几范式
35、?答:4NF。,An Introduction to Database System,3.关系R如右,则R至少属于()。A.1NF B.2NF C.3NF D.BCNF4.任何一个二元关系都是BCNF这句话对吗?答案:是BCNF。二元关系中或为全为主属性,或为一个单属性为主属性。,An Introduction to Database System,请判别以下结论是否正确?函数依赖X Y给出了数据库中属性间的某种联系:从X的值应该知道与之联系的惟一Y值。若X不含码,则有麻烦了(BCNF)。码是一个元组区别于其他元组的依据,同时也是一个元组赖以存在的条件。在一个关系中,不可能存在两个不同的元组在
36、码属性上取值相同,也不可能存在码或码的一部分为空值的元组。若某关系模式的属性间有函数依赖XY,而X又不包含码,那么在具有相同X值的所有元组中,某个特定的Y值就会重复出现,这就产生了数据冗余。,着重理解,An Introduction to Database System,随之而来的是更新异常问题;某个X值与某个特定的Y值相联系,这是数据库中应存储的信息,但由于X不含码,这种X与Y相联系的信息可能因为码或码的一部分为空值而不能作为一个合法的元组在数据库中存在,这是插入异常或删除异常问题。第二范式、第三范式和Boyce-Codd范式就是不同程度地限制关系模式中X不包含码的函数依赖XY的存在。,An
37、 Introduction to Database System,补 充,函数依赖 反映了“属性间”的联系。属性间的 联系 决定 函数依赖 关系。设X、Y均是U的子集:如果X、Y间是1:1关系,则存在函数依赖 XY如果X、Y间是1:n关系,则存在函数依赖:XY或YX。(多方为决定因素)如果X、Y间是m:n关系,则不存在函数依赖。,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Intr
38、oduction to Database System,6.2.7 多值依赖,例9 有关系模式Teaching(C,T,B),语言:教学(课程,教师,参考书)某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。,An Introduction to Database System,多值依赖(续),非规范化关系描述,An Introduction to Database System,多值依赖(续),用二维表表示 关系 Teaching,An Introduction to Database System,多值依赖(续),关系模式Teach
39、ing属于几范式?【分析】Teaching具有唯一候选码(C,T,B),即全码。【答】TeachingBCNF。关系模式Teaching是否存在异常?【答】有。,【结论】关系模式属于BCNF仍然存在各类异常。,【思考】是否存在函数依赖?产生异常原因?,An Introduction to Database System,多值依赖(续),Teaching模式中存在的问题(1)数据冗余度大(2)插入操作复杂(3)删除操作复杂(4)修改操作复杂,存在多值依赖,An Introduction to Database System,多值依赖(续),定义6.9 设R(U)是属性集U上的一个关系模式,X、Y
40、、Z是U的子集,并且ZUXY。关系模式R(U)中多值依赖 XY成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。特别注意:“无关”的理解。例:Teaching(C,T,B)中 是否存在C T?是否存在CB?,An Introduction to Database System,例:Teaching(C,T,B,D)中 D为教师T所在的教研室。问:1)是否存在CB?2)R中是否存在C T?3)是否存在CTD?答案:1)成立;2)不成立 3)成立。【再思考】“无关”?,An Introduction to Database System,
41、多值依赖(续),等价的定义:【多值依赖】在R(U)的任一关系r中,如果存在元组t,s 使得tX=sX,那么就必然存在元组 w,v r,(w,v可以与s,t相同),使得wX=vX=tX,而wY=tY,wZ=sZ,vY=sY,vZ=tZ(即交换s,t元组的Y值所得的两个新元组w,v必在r中),则Y多值依赖于X,记为XY。这里,X,Y是U的子集,Z=U-X-Y。,An Introduction to Database System,多值依赖的判定,例:Teaching(C,T,B,D)中 D为教师T所在的教研室。问:R中是否存在C T?是否存在CB?是否存在CTD?答:1)CB成立。如果存在CB,在
42、R中假定有2个元组(c1,t1,b1,d1)和(c1,t2,b2,d2)则必有(c1,t2,b1,d2)和(c1,t1,b2,d1)也一定在R中。2)C T不成立。如果存在C T。在R中假定有2个元组(c1,t1,b1,d1)和(c1,t2,b2,d2)则必有(c1,t1,b2,d2)与(c1,t2,b1,d1)也应该在关系R 中,而显然不成立。3)CTD成立。如果CTD成立,在R中假定有2个元组(c1,t1,b1,d1)和(c1,t2,b2,d2)则必有(c1,t1,b2,d1)与(c1,t2,b1,d2)也应该在R中。显然R满足条件。,An Introduction to Database
43、 System,多值依赖(续),平凡多值依赖 和 非平凡的多值依赖若XY,而Z,则称XY为平凡的多值依赖否则称XY为非平凡的多值依赖。例:1.Teaching(C,T,B)中C T为。2.Teaching(C,T)中C T为。3.student(Sno,Sname)中SnoSname为。4.student(Sno,Sname,Sage)中SnoSname为。,An Introduction to Database System,多值依赖(续),例10关系模式WSC(W,S,C)W表示仓库,S表示保管员,C表示商品 假设每个仓库有若干个保管员,有若干种商品 每个保管员保管所在的仓库的所有商品 每
44、种商品被所有保管员保管,An Introduction to Database System,多值依赖(续),An Introduction to Database System,多值依赖(续),WS且WC,用下图表示这种对应,存在多值依赖否?,An Introduction to Database System,产生问题的原因是 保管员S 与 商品C之间不是直接的联系,而是间接的联系。把有间接联系的属性放在一个模式中也会产生冗余和异常现象。,例:请举出3个多值依赖的例子。答:1)任课-选修(课程,任课教师,选修的学生)2)(学院,教师,学生),An Introduction to Datab
45、ase System,多值依赖的性质,(1)多值依赖具有对称性;若XY,则XZ,其中ZUXY(2)多值依赖具有传递性;若XY,YZ,则XZ Y(3)函数依赖是多值依赖的特殊情况;(复制性)若XY,则XY。(4)(并规则)若XY,XZ,则XYZ;(5)(交规则)若XY,XZ,则XYZ;(6)(差规则)若XY,XZ,则XY-Z,XZ-Y。,【思考】函数依赖是否具有对称性?请举例说明。,An Introduction to Database System,多值依赖与函数依赖的区别,(1)多值依赖的有效性与属性集的范围有关设:关系模式R(C,S,P,Y)表示(课程,选课学生,先修课,该生选修先修课P
46、的年份)码:CSP;FSP问题:)在R上CS、CP是否成立?答:不成立。例如R中有两个元组:(c1,s1,p1,2001);(C1,s2,p2,2002)若C P成立,必有(c1,s1,p2,2001)与(c1,s2,p1,2002)成立,而此不一定成立。实际上,S1选修p2的年份可能是1999。同理CS也未必成立。2)在R1(C,S,P)上CS、CP是否成立?答:成立。CP:对不同学生而言,每门课的先修课是一样的。CS:一门课由哪一组学生选修,与这门课的先修课是什么无关。,An Introduction to Database System,(2)若函数依赖XY在R(U)上成立,则对于任何Y
47、 Y均有XY 成立多值依赖XY若在R(U)上成立,不能断言对于任何Y Y有XY 成立。,由以上分析可得知:CS、CP在R上不成立,但在R的一个子集(C,S,P)上成立,故CS、CP是R的嵌入型多值依赖。,例如:Teaching(C,T,B,D)中CTD成立,而CT不成立。,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4NF6.2.9 规范化小结,An Introduction to Database System,6
48、.2.8 4NF,定义6.10 关系模式R1NF,如果对于R的每个非平凡多值依赖XY(Y X),X都含有码,则R4NF。例:请判别正误“4NF消除了多值依赖”。,An Introduction to Database System,【4NF注释】请观察4NF是允许否有多值依赖?答:a.允许有平凡的多值依赖;b.允许有特殊的非平凡多值依赖函数依赖;4NF不允许有 多值依赖。答:4NF不允许有“不是函数依赖的 非平凡的”多值依赖。,定义6.10 关系模式R1NF,如果对于R的 每个非平凡多值依赖XY(Y X),X都含有码,则R4NF。,An Introduction to Database Sys
49、tem,4NF(续),例:请判别Teaching(C,T,B)最高达到第几范式?答:Teaching(C,T,B)4NF;【分析】存在非平凡的多值依赖CT,且C不是码。可用投影分解法把Teaching分解为如下两个关系模式:CT(C,T),CT(C,B)。其中,CT(C,T)4NF CB(C,B)4NF CT,CB是平凡多值依赖,【定理】如果R 4NF,则R BCNF。,An Introduction to Database System,6.2 规范化,6.2.1 函数依赖6.2.2 码6.2.3 范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖6.2.8 4
50、NF6.2.9 规范化小结,An Introduction to Database System,6.2.9 规范化小结,关系数据库的规范化理论是数据库逻辑设计的工具目的:尽量消除 数据冗余、插入异常、删除异常、修改复杂基本思想:逐步消除数据依赖中不合适的部分实质:概念的单一化。,An Introduction to Database System,规范化小结(续),关系模式规范化的基本步骤 1NF 消除非主属性对码的部分函数依赖消除决定属性 2NF集非码的非平 消除非主属性对码的传递函数依赖凡函数依赖 3NF 消除主属性对码的部分和传递函数依赖 BCNF 消除非平凡且非函数依赖的多值依赖 4