1、1An Introduction to Database System 广东工业大学广东工业大学 计算机学院计算机学院数据库系统概论数据库系统概论An Introduction to Database System第六章第六章 关系数据理论关系数据理论2An Introduction to Database Systemv 内容概述内容概述 详细讲解关系数据理论,主要是关系数据库规范化理论。包括关系数据库逻辑设计可能出现的问题,数据依赖的基本概念(包括,函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念;码、候选码、外码的概念;多值依赖的概念),范式的概念
2、、1NF、2NF、3NF、BCNF、4NF的概念和判定方法。数据依赖的Armstrong公理系统。本章内容分为基本要求部分(概论6.1-6.3)和高级部分(概论6.4)。前者是计算机大学本科学生应该掌握的内容。后者是研究生应该学习掌握的内容。本章目标本章目标关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法规范化理论和优化数据库模式设计的方法。3An Introduction to Database Systemv 重点:重点:了解什么是一个“不好”的数据库模式。什么是模式的插入异常和删除异常。规范化理论的重要意义。牢固掌
3、握数据依赖的基本概牢固掌握数据依赖的基本概念,范式的概念,从念,范式的概念,从1NF到到4NF的定义,规范化的含义和作用的定义,规范化的含义和作用。需要举一反三的:四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法。v 难点:难点:能够根据应用语义,完整地写出关系模式的数据依赖集合,并能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式能根据数据依赖分析某一个关系模式属于第几范式。各个级别范式的关系及其证明。本章内容的理论性较强。要通过具体例子和习题练习理解和掌握理论知识。4An Introduction to
4、 Database System第六章第六章 关系数据理论关系数据理论6.1 问题的提出问题的提出6.2 规范化规范化6.3 数据依赖的公理系统数据依赖的公理系统*6.4 模式的分解模式的分解6.5 小结小结5An Introduction to Database System6.1 问题的提出问题的提出关系数据库逻辑设计 针对具体问题,如何构造一个适合于它的数据模式 数据库逻辑设计的工具关系数据库的规范化理论6An Introduction to Database System问题的提出问题的提出一、概念回顾一、概念回顾二、关系模式的形式化定义二、关系模式的形式化定义三、什么是数据依赖三、什
5、么是数据依赖四、关系模式的简化定义四、关系模式的简化定义五、数据依赖对关系模式影响五、数据依赖对关系模式影响7An Introduction to Database System一、概念回顾一、概念回顾v 关系关系v 关系模式关系模式v 关系数据库关系数据库v 关系数据库的模式关系数据库的模式8An Introduction to Database System二、关系模式的形式化定义二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名 U:组成该关系的属性名集合 D:属性组U中属性所来自的域 DOM:属性向域的映象集合 F:属性间数据的依赖关系集
6、合属性间数据的依赖关系集合9An Introduction to Database System三、什么是数据依赖三、什么是数据依赖?1.完整性约束的表现形式完整性约束的表现形式v 限定属性取值范围限定属性取值范围:例如学生成绩必须在0-100之间v 定义属性值间的相互关连定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键10An Introduction to Database System什么是数据依赖(续)什么是数据依赖(续)2.数据依赖数据依赖v一个关系内部一个关系内部 属性与属性之间属性与属性之间 的约束关系的约束关系v现实世界现实世界,一个事
7、物内部属性间相互联系的抽象一个事物内部属性间相互联系的抽象v数据内在的性质v语义的体现11An Introduction to Database System什么是数据依赖(续)什么是数据依赖(续)3.数据依赖的类型 共有三种共有三种:函数依赖(函数依赖(Functional Dependency,简记为,简记为FD)多值依赖(多值依赖(Multivalued Dependency,简记为,简记为MVD)连接依赖(连接依赖(Join Dependency,简记为简记为JD)其中最重要的是函数依赖和多值依赖。其中最重要的是函数依赖和多值依赖。12An Introduction to Databa
8、se System四、关系模式的简化表示四、关系模式的简化表示v 关系模式R(U,D,DOM,F)简化为一个三元组:R(U,F)v 当且仅当U上的一个关系r满足F时,r称为关系模式 R(U,F)的一个关系13An Introduction to Database System五、五、数据依赖对关系模式的影响数据依赖对关系模式的影响例例1建立一个描述学校教务的表:建立一个描述学校教务的表:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)、成绩(Grade)单一的关系模式:Student U Sno,Sdept,Mname,Cname,Grade 问题:什
9、么样的关系模式是一个好的关系模式?问题:什么样的关系模式是一个好的关系模式?14An Introduction to Database System数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)根据根据语义分析语义分析属性组属性组U上的一组函数依赖上的一组函数依赖F:F Sno Sdept,Sdept Mname,(Sno,Cname)Grade SnoCnameSdeptMnameGrade15An Introduction to Database System关系模式关系模式Student中存在的问题中存在的问题1.数据冗余太大2.更新异常(Update Anomalies)
10、3.插入异常(Insertion Anomalies)4.删除异常(Deletion Anomalies)16An Introduction to Database System数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)结论:结论:nStudent关系模式不是一个好的模式。关系模式不是一个好的模式。n“好好”的模式:不会发生插入异常、删除异常、更新的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少异常,数据冗余应尽可能少原因:原因:由存在于模式中的由存在于模式中的某些数据依赖某些数据依赖引起的引起的解决方法:解决方法:通过通过分解关系模式分解关系模式来消除其中不
11、合适的数据依赖来消除其中不合适的数据依赖17An Introduction to Database System分解关系模式分解关系模式v把这个单一模式分成把这个单一模式分成3个关系模式:个关系模式:1.S(Sno,Sdept,Sno Sdept);2.SC(Sno,Cno,Grade,(,(Sno,Cno)Grade);3.DEPT(Sdept,Mname,Sdept Mname)18An Introduction to Database System第六章第六章 关系数据理论关系数据理论6.1 问题的提出问题的提出6.2 规范化规范化6.3 数据依赖的公理系统数据依赖的公理系统*6.4 模
12、式的分解模式的分解6.5 小结小结19An Introduction to Database System6.2 规范化规范化 规范化理论规范化理论 正是用来正是用来评价、改造关系模式评价、改造关系模式,通过分解关系模式通过分解关系模式来消除其中不合适的数据依赖来消除其中不合适的数据依赖,以解决插入异常、删除异,以解决插入异常、删除异常、更新异常和数据冗余问题。常、更新异常和数据冗余问题。20An Introduction to Database System6.2 规范化规范化6.2.1 函数依赖函数依赖6.2.2 码码6.2.3 范式范式6.2.4 2NF6.2.5 3NF6.2.6 BC
13、NF6.2.7 多值依赖多值依赖6.2.8 4NF6.2.9 规范化小结规范化小结21An Introduction to Database System6.2.1 函数依赖函数依赖v函数依赖函数依赖 平凡函数依赖平凡函数依赖 与与 非平凡函数依赖非平凡函数依赖 完全函数依赖完全函数依赖 与与 部分函数依赖部分函数依赖 传递函数依赖传递函数依赖22An Introduction to Database System引例引例v 关系模式内部各属性间的依赖关系关系模式内部各属性间的依赖关系 在在student(sno,sname,sex,dept)中,姓名可能重名。中,姓名可能重名。属性属性sno
14、、sname之间存在关系:之间存在关系:sname=f(sno)或或 sno sname此时,任意两个元组,如果在此时,任意两个元组,如果在sno分量上的值不同,则在分量上的值不同,则在sname分量上的值也一定不相同。分量上的值也一定不相同。类似的关系在其它元组中还存在,如类似的关系在其它元组中还存在,如sno sname、sno dept等。等。23An Introduction to Database System一、函数依赖一、函数依赖定义定义6.1 设设R(U)是一个属性集是一个属性集U上的关系模式,上的关系模式,X和和Y是是U的的子集子集。若对于若对于R(U)的的任意任意一个可能的
15、关系一个可能的关系r,r中不可能存在两中不可能存在两个元组在个元组在X上的属性值相等,上的属性值相等,而在而在Y上的属性值不等上的属性值不等,则则称称“X函数确定函数确定Y”或或 “Y函数依赖于函数依赖于X”,记作,记作XY。即:由即:由X上的值可以确定上的值可以确定Y上的值。上的值。思考:为什么概念不表述为思考:为什么概念不表述为“r r中两个元组如果在中两个元组如果在X X上的属性值相上的属性值相 等,等,则在则在Y Y上的属性值也相等上的属性值也相等”?24An Introduction to Database System说明说明 1.关系模式需要满足的关系模式需要满足的即所有关系实例
16、即所有关系实例均要满足,而不是某一关系满足均要满足,而不是某一关系满足2.语义范畴语义范畴的概念的概念3.数据库数据库设计者可以设计者可以对现实世界作对现实世界作强制的规定强制的规定 如规定:姓名不能重名等如规定:姓名不能重名等25An Introduction to Database System二、平凡函数依赖与非平凡函数依赖二、平凡函数依赖与非平凡函数依赖在关系模式在关系模式R(U)中,对于中,对于U的的子集子集X和和Y,如果如果XY,但,但Y X,则称,则称XY是非平凡的函数依赖是非平凡的函数依赖若若XY,但,但Y X,则称则称XY是是平凡的函数依赖平凡的函数依赖v 例:在关系例:在关
17、系SC(Sno,Cno,Grade)中,中,非平凡函数依赖:非平凡函数依赖:(Sno,Cno)Grade 平凡函数依赖:平凡函数依赖:(Sno,Cno)Sno (Sno,Cno)CnoP173 约定:约定:若不特别声明,总是讨论若不特别声明,总是讨论非非 平凡函数依赖平凡函数依赖。26An Introduction to Database System平凡函数依赖与非平凡函数依赖(续)平凡函数依赖与非平凡函数依赖(续)若若XY,则,则X称为这个函数依赖的决定属性组,也称为这个函数依赖的决定属性组,也称为称为决定因素决定因素(Determinant)。)。若若XY,YX,则记作,则记作XY。若若
18、Y不函数依赖于不函数依赖于X,则记作,则记作XY。27An Introduction to Database System三、完全函数依赖与部分函数依赖三、完全函数依赖与部分函数依赖定义定义6.2 在在R(U)中,如果中,如果XY,并且对于,并且对于X的的任何一个真任何一个真子集子集X,都有,都有X Y,则称则称Y对对X完全函数依赖完全函数依赖,记作,记作 X F Y。若若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y对对X部分函数部分函数依赖依赖,记作,记作X P Y。思考:平凡函数依赖与部分函数依赖之间的关系?思考:平凡函数依赖与部分函数依赖之间的关系?28An Intro
19、duction to Database System完全函数依赖与部分函数依赖(续)完全函数依赖与部分函数依赖(续)例例1 中中(Sno,Cno)Grade是完全函数依赖,是完全函数依赖,(Sno,Cno)Sdept是部分函数依赖:是部分函数依赖:因为因为Sno Sdept成立,且成立,且Sno是(是(Sno,Cno)的真子集)的真子集FP29An Introduction to Database System四、传递函数依赖四、传递函数依赖定义定义6.3 在在R(U)中,如果中,如果XY,(Y X),YX,YZ,Z Y则称则称Z对对X传递函数依赖。记为:传递函数依赖。记为:X Z 注注:1)
20、Y X:强调是非平凡函数:强调是非平凡函数 依赖,进而排除了部分函数依赖。依赖,进而排除了部分函数依赖。2)YX:如果:如果YX,即即XY,则,则Z直接依赖于直接依赖于X。3)Z Y:例例:在关系在关系Std(Sno,Sdept,Mname)中,有:中,有:Sno Sdept,Sdept Mname Mname传递函数依赖于传递函数依赖于Sno传递传递30An Introduction to Database System6.2 规范化规范化6.2.1 函数依赖函数依赖6.2.2 码码6.2.3 范式范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖多值依赖6.2
21、.8 4NF6.2.9 规范化小结规范化小结31An Introduction to Database System6.2.2 码码定义定义6.4 设设K为为R中的中的属性或属性组合属性或属性组合。若。若K U,则则K称为称为R的的侯选码侯选码(Candidate Key)。)。若候选码多于一个,则选定其中的一个做为主码(Primary Key)。F注意:注意:K U 的理解。的理解。F【引理引理】X AAA成立的充要条件是成立的充要条件是X Ai成立。(成立。(i=1、2 n)32An Introduction to Database System码(续)码(续)v 主属性与非主属性主属性与
22、非主属性 包含在任何一个候选码中的属性,称为主属性主属性(Prime attribute)不包含在任何码中的属性称为非主属性非主属性(Nonprime attribute)或非码属性(Non-key attribute)v 全码全码 整个属性组是码,称为全码全码(All-key)33An Introduction to Database System码(续)码(续)例2 关系模式S(Sno,Sdept,Sage),单个属性Sno是码,SC(Sno,Cno,Grade)中,(Sno,Cno)是码例3 关系模式R(P,W,A)P:演奏者 W:作品 A:听众 一个演奏者可以演奏多个作品 某一作品可被
23、多个演奏者演奏 听众可以欣赏不同演奏者的不同作品 码为(P,W,A),即All-Key 34An Introduction to Database System外部码外部码定义定义6.5 关系模式关系模式 R 中属性或属性组中属性或属性组X 并非并非 R的码,但的码,但 X 是另一个关系模式的码,则称是另一个关系模式的码,则称 X 是是R 的的外部码外部码(Foreign key)也称外码也称外码v 如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码 v 主码与外部码一起提供了表示关系间联系的手段35
24、An Introduction to Database System补充:由函数依赖求候选码补充:由函数依赖求候选码v 属性根据函数 依赖集可分成四类:L类:仅出现在类:仅出现在F中函数依赖左部的属性。中函数依赖左部的属性。R类:仅出现在类:仅出现在F中函数依赖右部的属性。中函数依赖右部的属性。LR类:函数依赖左右两边都出现的属性。类:函数依赖左右两边都出现的属性。N类:函数依赖左右两边都不出现的属性。类:函数依赖左右两边都不出现的属性。【定理定理】对于给定的关系模式及其函数依赖集对于给定的关系模式及其函数依赖集F,X U X是是L类属性,则类属性,则X必定为任一候选码的成员;必定为任一候选码
25、的成员;X是是R类属性,则类属性,则X必定不在任何候选码中;必定不在任何候选码中;X是是LR类属性,则类属性,则X可能在某一候选码中,也可能不在任一候选码中。可能在某一候选码中,也可能不在任一候选码中。若若X是是N类属性,则类属性,则X必定在必定在R的任一候选码中;的任一候选码中;36An Introduction to Database Systemv 例:已知关系模式的函数依赖集例:已知关系模式的函数依赖集F,求关系模式的候选码。,求关系模式的候选码。1)设关系模式为)设关系模式为 R,UA,B,C,D,E,P,FAD,ED,DB,BCD,DCA 2)关系模式)关系模式W(I,J,K,X,
26、Y)FIJ,IK,KX,XY 3)设关系模式为)设关系模式为 R,UA,B,C,D,E,F,FAF,BCD,DC,BE,CA37An Introduction to Database System6.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 规范化小结规范化小结38An Introduction to Database System6.2.3 范式范式1.范式是符合某一种级别的关系模式的集合。NF:Normal Form2.范式针对的是关系模式
27、,而非某个时刻的关系范式针对的是关系模式,而非某个时刻的关系。3.范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)39An Introduction to Database System6.2.3 范式范式v各种范式之间存在联系:v某一关系模式R为第n范式,可简记为RnNF。v 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。NF5NF4BCNFNF3NF2NF140An Introduction to Database System6.2 规范化规范化6.2.1 函
28、数依赖函数依赖6.2.2 码码6.2.3 范式范式6.2.4 2NF6.2.5 3NF6.2.6 BCNF6.2.7 多值依赖多值依赖6.2.8 4NF6.2.9 规范化小结规范化小结41An Introduction to Database System6.2.4 2NFv 1NF的定义的定义如果一个关系模式如果一个关系模式R的所有属性都是的所有属性都是不可分的基本数据项不可分的基本数据项,则则R1NF;v 第一范式是对关系模式的最起码的要求。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。不满足第一范式的数据库模式不能称为关系数据库。v 但是满足第一范式的
29、关系模式并不一定是一个好的关系模但是满足第一范式的关系模式并不一定是一个好的关系模式。式。42An Introduction to Database System2NF(续)(续)例例4 关系模式关系模式 S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方为学生住处,假设每个系的学生住在同一个地方v 函数依赖包括:函数依赖包括:(Sno,Cno)F Grade Sno Sdept (Sno,Cno)P Sdept Sno Sloc (Sno,Cno)P Sloc Sdept Sloc43An Introduction to Data
30、base System 2NF(续)(续)v S-L-C的码为(Sno,Cno)v S-L-C满足第一范式。v 非主属性非主属性Sdept和Sloc部分部分函数依赖于码码(Sno,Cno)SnoCnoGradeSdeptSlocS-L-C虚线表示部分函数依赖虚线表示部分函数依赖44An Introduction to Database SystemS-L-C不是一个好的关系模式(续)不是一个好的关系模式(续)(1)插入异常插入异常(2)删除异常删除异常(3)数据冗余度大数据冗余度大(4)修改复杂修改复杂45An Introduction to Database SystemS-L-C不是一个好
31、的关系模式(续)不是一个好的关系模式(续)v 原因原因 非主属性非主属性Sdept、Sloc 部分函数依赖部分函数依赖 于码。于码。v 解决方法:解决方法:模式分解模式分解 S-L-C分解为两个关系模式,以消除这些部分函数依赖分解为两个关系模式,以消除这些部分函数依赖 SC(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc)46An Introduction to Database System2NF(续)(续)函数依赖图:SnoCnoGradeSCS-LSnoSdeptSlocv关系模式SC的码为(Sno,Cno)v关系模式S-L的码为Snov这样非主属性对码都是完全函数依赖
32、 47An Introduction to Database System 2NF(续)(续)v2NF的定义定义定义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)2NF48An Introduction to Database System 2NF(续)(续)v有关2NF结论:1.采
33、用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。2.将一个1NF关系分解为多个2NF的关系,并不能完全消并不能完全消除除关系模式中的各种异常情况和数据冗余。49An Introduction to Database System6.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 规范化小结规范化小结50An Introduction to D
34、atabase System 6.2.5 3NFv3NF的定义定义定义6.7 关系模式关系模式R 中若不存在这样的中若不存在这样的码码X、属性属性组组Y及及非主属性非主属性Z(Z Y),使得使得XY,YZ成立,成立,Y X,则称,则称R 3NF。结论:若R3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。51An Introduction to Database System3NF(续)(续)例:2NF关系模式S-L(Sno,Sdept,Sloc)中 函数依赖:SnoSdept Sdept Sno SdeptSloc 可得:SnoSloc,即S-L中存在非主属性对码的传递函数依 赖,S
35、-L 3NF传递52An Introduction to Database System 3NF(续)(续)函数依赖图:S-LSnoSdeptSlocT53An Introduction to Database System3NF(续)(续)v 解决方法 采用投影分解法,把S-L分解为两个关系模式分解为两个关系模式,以消以消除传递函数依赖除传递函数依赖:S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的码为Sno,D-L的码为Sdept。n分解后的关系模式S-D与D-L中不再存在传递依赖 54An Introduction to Database System3NF(续)(续)
36、S-D的码为Sno,D-L的码为SdeptSnoSdeptS-DSdeptSlocD-Lv S-L(Sno,Sdept,Sloc)2NF S-L(Sno,Sdept,Sloc)3NF S-D(Sno,Sdept)3NFD-L(Sdept,Sloc)3NF55An Introduction to Database System2NF与与3NF间的关系?间的关系?v证明:若R3NF,则必R2NF。注:该例题很好的揭示了注:该例题很好的揭示了3NF定义与定义与2NF之间的关系。之间的关系。56An Introduction to Database System3NF(续)(续)v有关3NF的结论:1
37、.采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上减缓一定程度上减缓原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。2.将一个2NF关系分解为多个3NF的关系后,仍然不能完全消仍然不能完全消除除关系模式中的各种异常情况和数据冗余。57An Introduction to Database System6.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 规范化小结规范化小结58An Introduction
38、 to Database System 6.2.6 BC范式(范式(BCNF)v定义定义6.8 关系模式关系模式R1NF,若,若XY且且Y X时时X必含有码必含有码,则,则R BCNF。v等价于:等价于:每一个每一个非平凡函数依赖非平凡函数依赖中,决定属性因素都包含码。中,决定属性因素都包含码。59An Introduction to Database SystemBCNF(续)(续)v 有关有关BCNF的结论:的结论:1.所有非主属性对每一个码都是完全函数依赖;所有非主属性对每一个码都是完全函数依赖;2.所有的主属性对每一个所有的主属性对每一个不包含它的码不包含它的码,也是完全函数,也是完全
39、函数依赖;依赖;即:消除了主属性对即:消除了主属性对不包含它的码不包含它的码的的部分函数依赖;部分函数依赖;思考:思考:BCNF中是否存在中是否存在主属性对(主属性对(不包含它的不包含它的)码)码的的传传递函数依赖?递函数依赖?3.没有任何属性完全函数依赖于非码的任何一组属性;没有任何属性完全函数依赖于非码的任何一组属性;v R BCNF R 3NF充分不必要60An Introduction to Database SystemBCNF(续)(续)例例5 请判别关系模式请判别关系模式SC(Sno,Cno,Grade)最高属于哪一级范式?)最高属于哪一级范式?A.C3NF C.C1NF B.C
40、BCNF D.C2NF 例例6请判别关系模式请判别关系模式S(Sno,Sname,Sdept,Sage)最高属于哪一级范式?)最高属于哪一级范式?1.假定假定S有两个码有两个码Sno,Sname;2.假定假定S有一个码有一个码Sno;A.C3NF C.C1NF B.CBCNF D.C2NF 61An Introduction to Database SystemBCNF(续)(续)例例7关系模式关系模式SJP(S,J,P)函数依赖:函数依赖:(S,J)P;(J,P)SA.SJP3NF,B.SJPBCNF分析:(分析:(S,J)与()与(J,P)都可以作为候选码,属性相交)都可以作为候选码,属性
41、相交62An 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)都是候选码63An Introduction to Database System BCNF(续)(续)JSJTSTSTJ中的函数依赖中的函数依赖64An Introduction to Database SystemBCNF(续)(续)vSTJ3NF 没有任何非主
42、属性对码传递依赖或部分依赖 vSTJBCNF T是决定因素,T不包含码65An Introduction to Database SystemBCNF(续)(续)v解决方法?v将STJ分解为二个关系模式:ST(S,T)BCNF,TJ(T,J)BCNF 没有没有任何属性任何属性对码的部分函数依赖和传递函数依赖。对码的部分函数依赖和传递函数依赖。SJSTTJTJ66An Introduction to Database System3NF与与BCNF的关系的关系v 定理:如果定理:如果RBCNF,则一定有,则一定有R3NF。证明:证明:由于若由于若RBCNF,则,则R的所有非主属性都完全函数依的所
43、有非主属性都完全函数依赖于每一个候选码赖于每一个候选码,因此必有因此必有R2NF。由于由于R2NF,若,若R 3NF,则按,则按3NF定义,一定存在非定义,一定存在非主属性对码的传递依赖。主属性对码的传递依赖。即存在即存在:R的码的码X,属性组,属性组Y,以,以及非主属性及非主属性Z(ZY),使得),使得XY,YZ,YX成立。成立。由由YZ,按,按BCNF定义,定义,Y含有码,于是含有码,于是YX成立,这成立,这与与YX矛盾。所以矛盾。所以R3NF。67An Introduction to Database System3NF与与BCNF的关系的关系【小结小结】若若RBCNF,按定义排除了,按
44、定义排除了任何属性任何属性对对 码码的的 传递依赖传递依赖 与与 部分依赖部分依赖;所以;所以R3NF。v 若若R3NF,则,则R未必属于未必属于BCNF。v【定理定理】如果如果R3NF且且R有唯一的候选码,则必有有唯一的候选码,则必有RBCNF。证明:设证明:设R3NF且且R有唯一候选键有唯一候选键X,则对于,则对于R的任何一个函数依赖的任何一个函数依赖 XY,必有必有X包含于包含于X(否则存在传递函数依赖)(否则存在传递函数依赖)。即对即对R的任何一个函数依赖的任何一个函数依赖XY,X都含候选码,故都含候选码,故RBCNF。有用的结论有用的结论:如果如果R3NF,且,且R只有一个候选码,只
45、有一个候选码,则则R必属于必属于BCNF。68An Introduction to Database System3NF与与BCNF的关系的关系a)R BCNF R 3NFv 如果R3NF,且R只有一个候选码 R BCNF R 3NF充分不必要充分必要69An Introduction to Database System练习题练习题v1.关系模式由关系模式由3NF转化为转化为BCNF是为了消是为了消除除 。答:主属性对码的传递依赖和部分依赖。答:主属性对码的传递依赖和部分依赖。v2.设关系模式设关系模式R是全码,则是全码,则R可达到第几范式?可达到第几范式?答:答:4NF。70An Intr
46、oduction to Database Systemv 3.关系关系R如右,则如右,则R至少属于(至少属于()。)。A.1NF B.2NF C.3NF D.BCNFv 4.任何一个二元关系都是任何一个二元关系都是BCNF这句话对吗?这句话对吗?答案答案:是是BCNF。二元关系中或为全为主属性,或为一个单。二元关系中或为全为主属性,或为一个单属性为主属性。属性为主属性。ABa1b1a2b271An Introduction to Database System请判别以下结论是否正确?请判别以下结论是否正确?函数依赖函数依赖X Y给出了数据库中属性间的某种联系:给出了数据库中属性间的某种联系:从
47、从X的值应该知道与之的值应该知道与之联系的惟一联系的惟一Y值值。若若X不含码,则有麻烦了(不含码,则有麻烦了(BCNF)。)。2.码是一个元组区别于其他元组的依据,同时也是一个码是一个元组区别于其他元组的依据,同时也是一个元组赖以存在的条件元组赖以存在的条件。3.在一个关系中,不可能存在两个不同的元组在码属性上取值相同,也不可在一个关系中,不可能存在两个不同的元组在码属性上取值相同,也不可能存在码或码的一部分为空值的元组。能存在码或码的一部分为空值的元组。4.若某关系模式的属性间有函数依赖若某关系模式的属性间有函数依赖XY,而,而X又不包含码,那么在具有相又不包含码,那么在具有相同同X值的所有
48、元组中,某个特定的值的所有元组中,某个特定的Y值就会重复出现,这就产生了值就会重复出现,这就产生了数据冗余数据冗余。着重理解着重理解72An Introduction to Database System5.随之而来的是随之而来的是更新异常更新异常问题;某个问题;某个X值与某个特定的值与某个特定的Y值相联系,这值相联系,这是数据库中应存储的信息,但由于是数据库中应存储的信息,但由于X不含码,这种不含码,这种X与与Y相联系的信相联系的信息可能因为码或码的一部分为空值而不能作为一个合法的元组在数息可能因为码或码的一部分为空值而不能作为一个合法的元组在数据库中存在,这是据库中存在,这是插入异常插入异
49、常或或删除异常删除异常问题。问题。6.第二范式、第三范式和第二范式、第三范式和Boyce-Codd范式就是不同程度地限制关系范式就是不同程度地限制关系模式中模式中X不包含码的函数依赖不包含码的函数依赖XY的存在。的存在。73An Introduction to Database System补补 充充v 函数依赖函数依赖 反映了反映了 “属性间属性间”的的联系联系。v 属性间的属性间的 联系联系 决定决定 函数依赖函数依赖 关系关系。设设X、Y均是均是U的子集:的子集:如果如果X、Y间是间是1:1关系,则存在函数依赖关系,则存在函数依赖 XY 如果如果X、Y间是间是1:n关系,则存在函数依赖:
50、关系,则存在函数依赖:XY或或YX。(多方为决定因素)(多方为决定因素)如果如果X、Y间是间是m:n关系,则不存在函数依赖。关系,则不存在函数依赖。74An Introduction to Database System6.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 规范化小结规范化小结75An Introduction to Database System6.2.7 多值依赖多值依赖例例9 有关系模式有关系模式Teaching(C,T,B),)