教学课件第4章关系数据库设计理论

上传人:pu****.1 文档编号:569311017 上传时间:2024-07-28 格式:PPT 页数:138 大小:504.47KB
返回 下载 相关 举报
教学课件第4章关系数据库设计理论_第1页
第1页 / 共138页
教学课件第4章关系数据库设计理论_第2页
第2页 / 共138页
教学课件第4章关系数据库设计理论_第3页
第3页 / 共138页
教学课件第4章关系数据库设计理论_第4页
第4页 / 共138页
教学课件第4章关系数据库设计理论_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《教学课件第4章关系数据库设计理论》由会员分享,可在线阅读,更多相关《教学课件第4章关系数据库设计理论(138页珍藏版)》请在金锄头文库上搜索。

1、第第4章章关系数据库设计理论关系数据库设计理论l问题的提出问题的提出关系数据库的基本概念关系数据库的基本概念关系模型关系模型关系数据库的标准语言关系数据库的标准语言关系数据库逻辑设计关系数据库逻辑设计针针对对一一个个具具体体问问题题,应应如如何何构构造造一一个个适适合合于于它它的的数数据据模模式式,即即应应该该构构造造几几个个关关系系,每个关系由哪些属性组成等。每个关系由哪些属性组成等。数数据据库库逻逻辑辑设设计计的的工工具具关关系系数数据据库库的的规范化理论规范化理论第第4章章关系数据库设计理论关系数据库设计理论4.1数据依赖数据依赖4.2范式范式4.3关系模式的规范化关系模式的规范化第第4

2、章章关系数据库设计理论关系数据库设计理论4.1数据依赖数据依赖4.2范式范式4.3关系模式的规范化关系模式的规范化4.1数据依赖数据依赖内容提要内容提要l什么是数据依赖什么是数据依赖l数据依赖对关系模式有什么影响数据依赖对关系模式有什么影响l数据依赖的形式化定义数据依赖的形式化定义4.1数据依赖数据依赖4.1.1关系模式中的数据依赖关系模式中的数据依赖4.1.2数据依赖对关系模式的影响数据依赖对关系模式的影响4.1.3有关概念有关概念4.1数据依赖数据依赖4.1.1关系模式中的数据依赖关系模式中的数据依赖4.1.2数据依赖对关系模式的影响数据依赖对关系模式的影响4.1.3有关概念有关概念4.1

3、.1关系模式中的数据依赖关系模式中的数据依赖一、概念回顾一、概念回顾二、关系模式的形式化定义二、关系模式的形式化定义三、什么是数据依赖三、什么是数据依赖四、关系模式的简化表示四、关系模式的简化表示一、概念回顾一、概念回顾l关系关系:描述实体及其属性、实体间的联系。:描述实体及其属性、实体间的联系。从形式上看,它是一张二维表,是所涉及属从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。性的笛卡尔积的一个子集。l关系模式关系模式:用来定义关系。:用来定义关系。l关系数据库关系数据库:基于关系模型的数据库,利用关:基于关系模型的数据库,利用关系来描述现实世界。系来描述现实世界。从形式上看

4、,它由一组关系组成。从形式上看,它由一组关系组成。l关系数据库的模式关系数据库的模式:定义这组关系的关系模式:定义这组关系的关系模式的全体。的全体。二、关系模式的形式化定义二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名关系名U:组成该关系的属性名集合组成该关系的属性名集合D:属性组属性组U中属性所来自的域中属性所来自的域DOM:属性向域的映象集合:属性向域的映象集合F:属性间数据的依赖关系集合。即限定属性间数据的依赖关系集合。即限定了组成关系的各个元组必须满足的完了组成关系的各个元组必须满足的完整性约束

5、条件整性约束条件。三、什么是数据依赖三、什么是数据依赖1.完整性约束的表现形式完整性约束的表现形式l限定属性取值范围:例如学生成绩必须限定属性取值范围:例如学生成绩必须在在0-100之间之间l定义属性值间的相互关连(主要体现于定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它值的相等与否),这就是数据依赖,它是数据库模式设计的关键是数据库模式设计的关键。什么是数据依赖(续)什么是数据依赖(续)2.数据依赖数据依赖l是通过一个关系中属性间值的相等与否是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系体现出来的数据间的相互关系l是现实世界属性间相互联系的抽象是现实世界属

6、性间相互联系的抽象l是数据内在的性质是数据内在的性质l是语义的体现是语义的体现什么是数据依赖(续)什么是数据依赖(续)3.数据依赖的主要类型数据依赖的主要类型l函数依赖(函数依赖(FunctionalDependency,简,简记为记为FD)l多值依赖(多值依赖(MultivaluedDependency,简,简记为记为MVD)l连接依赖连接依赖四、关系模式的简化表示四、关系模式的简化表示在关系模式在关系模式R(U,D,DOM,F)中,影响数中,影响数据库模式设计的主要是据库模式设计的主要是U和和F,D和和DOM对其影响不大,为了方便讨论,我们将对其影响不大,为了方便讨论,我们将关系模式简化为

7、一个三元组:关系模式简化为一个三元组:R(U,F)当且仅当当且仅当U上的一个关系上的一个关系r满足满足F时,时,r称称为关系模式为关系模式R(U,F)的一个关系。的一个关系。5.1数据依赖数据依赖5.1.1关系模式中的数据依赖关系模式中的数据依赖5.1.2数据依赖对关系模式的影响数据依赖对关系模式的影响5.1.3有关概念有关概念5.1.2数据依赖对关系模式的影响数据依赖对关系模式的影响例:建立一个描述学校的数据库。例:建立一个描述学校的数据库。涉及的对象包括:涉及的对象包括:学生的学号(学生的学号(Sno)所在系(所在系(Sdept)系主任姓名(系主任姓名(Mname)课程名(课程名(Cnam

8、e)成绩(成绩(Grade)数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)假设学校的数据库模式由一个单一的关假设学校的数据库模式由一个单一的关系模式系模式Student构成,构成,则该关系模式的属性集合为:则该关系模式的属性集合为:U Sno, Sdept, Mname, Cname, Grade 数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)现实世界的已知事实告诉我们:现实世界的已知事实告诉我们:一个系有若干学生,一个系有若干学生,但一个学生只属于一但一个学生只属于一个系;个系;一个系只有一名主任;一个系只有一名主任;一个学生可以选修多门课程,一个学生可以选修多门

9、课程,每门课程有每门课程有若干学生选修;若干学生选修;每个学生所学的每门课程都有一个成绩。每个学生所学的每门课程都有一个成绩。数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)由此可得到属性组由此可得到属性组U上的一组函数依赖上的一组函数依赖F:FSnoSdept,SdeptMname,(Sno,Cname)Grade SnoCnameSdeptMnameGrade数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)关系模式关系模式Student中存在的问题:中存在的问题:数据冗余太大数据冗余太大浪费大量的存储空间浪费大量的存储空间例:每一个系主任的姓名重复出现,重复次数例:

10、每一个系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同。与该系所有学生的所有课程成绩出现次数相同。数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)更新异常(更新异常(UpdateAnomalies)数据冗余数据冗余,更新数据时,维护数据完整性代更新数据时,维护数据完整性代价大。价大。例:某系更换系主任后,系统必须修改与该系例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组。学生有关的每一个元组。数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)插入异常(插入异常(InsertionAnomalies)该插的数据插不进去该插的数据插不进去例,

11、如果一个系刚成立,尚无学生,我们就无例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。法把这个系及其系主任的信息存入数据库。数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)删除异常(删除异常(DeletionAnomalies)不该删除的数据不得不删不该删除的数据不得不删例,如果某个系的学生全部毕业了,例,如果某个系的学生全部毕业了,我们在删我们在删除该系学生信息的同时,把这个系及其系主任除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。的信息也丢掉了。数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)结论:结论:Student关系模式不

12、是一个好的模式。关系模式不是一个好的模式。一个一个“好好”的模式应当不会发生插入异常、的模式应当不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。删除异常、更新异常,数据冗余应尽可能少。原因:原因:由存在于模式中的某些数据依赖引起的。由存在于模式中的某些数据依赖引起的。解决方法:解决方法:通过分解关系模式来消除其中不合适通过分解关系模式来消除其中不合适的数据依赖。的数据依赖。数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)规范化理论规范化理论正是用来改造关系模式,通正是用来改造关系模式,通过分解关系模式来消除其中不合适的数过分解关系模式来消除其中不合适的数据依赖,以解决插入

13、异常、删除异常、据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。更新异常和数据冗余问题。5.1数据依赖数据依赖5.1.1关系模式中的数据依赖关系模式中的数据依赖5.1.2数据依赖对关系模式的影响数据依赖对关系模式的影响5.1.3有关概念有关概念5.1.3有关概念有关概念一、函数依赖一、函数依赖二、平凡函数依赖与非平凡函数依赖二、平凡函数依赖与非平凡函数依赖三、完全函数依赖与部分函数依赖三、完全函数依赖与部分函数依赖四、传递函数依赖四、传递函数依赖五、码五、码一、函数依赖一、函数依赖定义定义5.1设设R(U)是一个属性集是一个属性集U上的关系模上的关系模式,式,X和和Y是是U的子集。若

14、对于的子集。若对于R(U)的任的任意一个可能的关系意一个可能的关系r,r中不可能存在两中不可能存在两个元组在个元组在X上的属性值相等,上的属性值相等,而在而在Y上的上的属性值不等,属性值不等,则称则称“X函数确定函数确定Y”或或“Y函数依赖于函数依赖于X”,记作,记作XY。X称为这个称为这个函数依赖的函数依赖的决定属性集决定属性集(Determinant)。函数依赖(续)函数依赖(续)说明:说明:1.函数依赖不是指关系模式函数依赖不是指关系模式R的某个或某些关系的某个或某些关系实例满足的约束条件,而是指实例满足的约束条件,而是指R的所有关系实的所有关系实例均要满足的约束条件。例均要满足的约束条

15、件。2.函数依赖是语义范畴的概念。只能根据数据的函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。语义来确定函数依赖。例如例如“姓名姓名年龄年龄”这个函数依赖只有在不允这个函数依赖只有在不允许有同名人的条件下成立许有同名人的条件下成立函数依赖(续)函数依赖(续)3.数据库设计者可以对现实世界作强制的规定。数据库设计者可以对现实世界作强制的规定。例如设计者可以强行规定不允许同名人出现,例如设计者可以强行规定不允许同名人出现,因而使函数依赖因而使函数依赖“姓名姓名年龄年龄”成立。但所插成立。但所插入的元组必须满足规定的函数依赖,若发现有入的元组必须满足规定的函数依赖,若发现有同名人存在,

16、同名人存在,则拒绝装入该元组。则拒绝装入该元组。4.若若XY,并且,并且YX,则记为则记为XY。5.若若Y不函数依赖于不函数依赖于X,则记为则记为XY。函数依赖(续)函数依赖(续)例例:Student(Sno,Sname,Ssex,Sage,Sdept)假设不允许重名,则有假设不允许重名,则有:SnoSsex,SnoSageSnoSdept,SnoSnameSnameSsex,SnameSageSnameSdept但但SsexSage,SsexSdept,二、平凡函数依赖与非平凡函数依赖二、平凡函数依赖与非平凡函数依赖定义定义5.2在关系模式在关系模式R(U)中,对于中,对于U的子集的子集X和

17、和Y,如果,如果XY,但,但Y X,则称,则称XY是是非平凡的函数依赖非平凡的函数依赖。若。若XY,但但Y X则称则称XY是是平凡的函数依赖平凡的函数依赖。例:在关系例:在关系SC(Sno,Cno,Grade)中,中,非平凡函数依赖:非平凡函数依赖:(Sno,Cno)Grade平凡函数依赖:平凡函数依赖:(Sno,Cno)Sno(Sno,Cno)Cno平凡函数依赖与非平凡函数依赖(续)平凡函数依赖与非平凡函数依赖(续)对于任一关系模式,平凡函数依赖都对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,是必然成立的,它不反映新的语义,因此若不特别声明,因此若不特别声明,我们总是讨论非

18、我们总是讨论非平凡函数依赖平凡函数依赖。三、完全函数依赖与部分函数依赖三、完全函数依赖与部分函数依赖定义定义5.3在关系模式在关系模式R(U)中,如果中,如果XY,并且对于并且对于X的任何一个真子集的任何一个真子集X,都有,都有XY,则称则称Y完全函数依赖于完全函数依赖于X,记作,记作XY。若。若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y部分函数依赖部分函数依赖于于X,记作,记作XPY。完全函数依赖与部分函数依赖(续)完全函数依赖与部分函数依赖(续)例例:在关系在关系SC(Sno,Cno,Grade)中,有:中,有:由于:由于:SnoGrade,CnoGrade,因此:因此

19、:(Sno,Cno)Grade但:但:(Sno,Cno)PSno,(Sno,Cno)PCno完全函数依赖与部分函数依赖(续)完全函数依赖与部分函数依赖(续)非平凡函数依赖必定是部分函数依赖非平凡函数依赖必定是部分函数依赖平凡函数依赖也可能是部分函数依赖平凡函数依赖也可能是部分函数依赖例例:Student(Sno,Sname,Ssex,Sage,Sdept)SnoSname,SnoSsex,SnoSage,SnoSdept(Sno,Sname)PSdept,(Sno,Ssex)PSdept四、传递函数依赖四、传递函数依赖定义定义5.4在关系模式在关系模式R(U)中,如果中,如果XY,YZ,且,且

20、Y X,YX,则称,则称Z传递函数依赖传递函数依赖于于X。注注:如果如果YX,即即XY,则,则Z直接依赖直接依赖于于X。例例:在关系在关系Std(Sno,Sdept,Mname)中,有:中,有:SnoSdept,SdeptMname,Mname传递传递函数依赖于函数依赖于Sno。五、码五、码定义定义5.5设设K为关系模式为关系模式R中的属性或属性中的属性或属性组合。若组合。若KU,则,则K称为称为R的一个的一个侯选码侯选码(CandidateKey)。若关系模式)。若关系模式R有多个候选有多个候选码,则选定其中的一个做为码,则选定其中的一个做为主码主码(Primarykey)。)。l码是关系模

21、式中一个重要概念。码是关系模式中一个重要概念。候选码能够唯一地标别关系的元组,是关系候选码能够唯一地标别关系的元组,是关系模式中一组最重要的属性。模式中一组最重要的属性。主码又和外部码一起提供了一个表示关系间主码又和外部码一起提供了一个表示关系间联系的手段联系的手段。第第4章章关系数据库设计理论关系数据库设计理论4.1数据依赖数据依赖4.2范式范式4.3关系模式的规范化关系模式的规范化4.2范式范式4.2.1第一范式(第一范式(1NF)4.2.2第二范式(第二范式(2NF)4.2.3第三范式(第三范式(3NF)4.2.4BC范式(范式(BCNF)4.2.5多值依赖与第四范式(多值依赖与第四范式

22、(4NF)4.2范式范式l范式是符合某一种级别的关系模式的集合。范式是符合某一种级别的关系模式的集合。l关系数据库中的关系必须满足一定的要求。满关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。足不同程度要求的为不同范式。l范式的种类:范式的种类:第一范式第一范式(1NF)第二范式第二范式(2NF)第三范式第三范式(3NF)BC范式范式(BCNF)第四范式第四范式(4NF)第五范式第五范式(5NF)范式(续)范式(续)l各种范式之间存在联系:各种范式之间存在联系:l某一关系模式某一关系模式R为第为第n范式,可简记范式,可简记为为RnNF。4.2范式范式4.2.1第一范式(第一

23、范式(1NF)4.2.2第二范式(第二范式(2NF)4.2.3第三范式(第三范式(3NF)4.2.4BC范式(范式(BCNF)4.2.5多值依赖与第四范式(多值依赖与第四范式(4NF)4.2.1第一范式(第一范式(1NF)l1NF的定义的定义定义定义5.6如果一个关系模式如果一个关系模式R的所有属性都是的所有属性都是不可分的基本数据项,则不可分的基本数据项,则R1NF。l第一范式是对关系模式的最起码的要求。不满第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。足第一范式的数据库模式不能称为关系数据库。l但是满足第一范式的关系模式并不一定是一个但是满足第一范式的关

24、系模式并不一定是一个好的关系模式。好的关系模式。第一范式(续)第一范式(续)例例:关系模式关系模式SLC(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一为学生住处,假设每个系的学生住在同一个地方。个地方。l函数依赖包括:函数依赖包括:(Sno,Cno)fGradeSnoSdept(Sno,Cno)PSdeptSnoSloc(Sno,Cno)PSlocSdeptSloc第一范式(续)第一范式(续)lSLC的码为的码为(Sno,Cno)SnoCnoGradeSdeptSlocSLC第一范式(续)第一范式(续)l结论结论:1.SLC满足第一范式。满足第

25、一范式。2.非主属性非主属性Sdept和和Sloc部分函数依赖于码部分函数依赖于码(Sno,Cno)。lSLC存在的问题存在的问题(1)插入异常插入异常假设假设Sno95102,SdeptIS,SlocN的学生还未的学生还未选课,因课程号是主属性,因此该学生的信息无法选课,因课程号是主属性,因此该学生的信息无法插入插入SLC。第一范式(续)第一范式(续)(2)删除异常删除异常假定某个学生本来只选修了假定某个学生本来只选修了3号课程这一门号课程这一门课。现在因身体不适,他连课。现在因身体不适,他连3号课程也不选号课程也不选修了。因课程号是主属性,此操作将导致该修了。因课程号是主属性,此操作将导致

26、该学生信息的整个元组都要删除。学生信息的整个元组都要删除。(3)数据冗余度大数据冗余度大如果一个学生选修了如果一个学生选修了10门课程,那么他的门课程,那么他的Sdept和和Sloc值就要重复存储了值就要重复存储了10次。次。第一范式(续)第一范式(续)(4)修改复杂修改复杂例如学生转系,在修改此学生元组的例如学生转系,在修改此学生元组的Sdept值的同时,还可能需要修改住处(值的同时,还可能需要修改住处(Sloc)。)。如果这个学生选修了如果这个学生选修了K门课,则必须无遗漏门课,则必须无遗漏地修改地修改K个元组中全部个元组中全部Sdept、Sloc信息。信息。因此因此SLC不是一个好的关系

27、模式。不是一个好的关系模式。第一范式(续)第一范式(续)l原因原因Sdept、Sloc部分函数依赖于码。部分函数依赖于码。l解决方法解决方法采用投影分解法,把采用投影分解法,把SLC分解为两个关系模式,分解为两个关系模式,以消除这些部分函数依赖。以消除这些部分函数依赖。SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)第一范式(续)第一范式(续)lSLC的码为的码为(Sno,Cno)SnoCnoGradeSdeptSlocSLC第一范式(续)第一范式(续)函数依赖图函数依赖图:SnoCnoGradeSCSLSnoSdeptSloc第一范式(续)第一范式(续)在在SC和和SL

28、中,非主属性都完全函数依赖于码中,非主属性都完全函数依赖于码了。从而使上述四个问题在一定程度上得到了了。从而使上述四个问题在一定程度上得到了一定的解决:一定的解决:(1)由于学生选修课程的情况与学生的基本情况由于学生选修课程的情况与学生的基本情况是分开存储在两个关系中的,在是分开存储在两个关系中的,在SL关系中可以关系中可以插入尚未选课的学生。插入尚未选课的学生。第一范式(续)第一范式(续)(2)删除一个学生的所有选课记录,只是删除一个学生的所有选课记录,只是SC关系关系中没有关于该学生的记录了,中没有关于该学生的记录了,SL关系中关于该关系中关于该学生的记录不受影响。学生的记录不受影响。(3

29、)不论一个学生选多少门课程,他的不论一个学生选多少门课程,他的Sdept和和Sloc值都只存储值都只存储1次。这就大大降低了数据冗余。次。这就大大降低了数据冗余。(4)学生转系只需修改学生转系只需修改SL关系中该学生元组的关系中该学生元组的Sdept值和值和Sloc值,由于值,由于Sdept、Sloc并未重复并未重复存储,因此减化了修改操作。存储,因此减化了修改操作。4.2范式范式4.2.1第一范式(第一范式(1NF)4.2.2第二范式(第二范式(2NF)4.2.3第三范式(第三范式(3NF)4.2.4BC范式(范式(BCNF)4.2.5多值依赖与第四范式(多值依赖与第四范式(4NF)4.2.

30、2第二范式(第二范式(2NF)l2NF的定义的定义定义定义5.7若关系模式若关系模式R1NF,并且每一个非主,并且每一个非主属性都完全函数依赖于属性都完全函数依赖于R的码,则的码,则R2NF。例:例:SLC(Sno,Sdept,Sloc,Cno,Grade)1NFSC(Sno,Cno,Grade)2NFSL(Sno,Sdept,Sloc)2NF第二范式(续)第二范式(续)l采用投影分解法将一个采用投影分解法将一个1NF的关系分解为多个的关系分解为多个2NF的关系,可以在一定程度上减轻原的关系,可以在一定程度上减轻原1NF关关系中存在的插入异常、删除异常、数据冗余度系中存在的插入异常、删除异常、

31、数据冗余度大、修改复杂等问题。大、修改复杂等问题。l将一个将一个1NF关系分解为多个关系分解为多个2NF的关系,并不的关系,并不能完全消除关系模式中的各种异常情况和数据能完全消除关系模式中的各种异常情况和数据冗余。冗余。第二范式(续)第二范式(续)例:例:2NF关系模式关系模式SL(Sno,Sdept,Sloc)中中l函数依赖:函数依赖:SnoSdeptSdeptSlocSnoSlocSLSnoSdeptSlocSloc传递函数依赖于传递函数依赖于Sno,即,即SL中存在非中存在非主属性对码的传递函数依赖。主属性对码的传递函数依赖。第二范式(续)第二范式(续)lSL关系存在的问题:关系存在的问

32、题:(1)插入异常插入异常如果某个系因种种原因(例如刚刚成立),目如果某个系因种种原因(例如刚刚成立),目前暂时没有在校学生,我们就无法把这个系的前暂时没有在校学生,我们就无法把这个系的信息存入数据库。信息存入数据库。(2)删除异常删除异常如果某个系的学生全部毕业了,我们在删除该如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系的信息也丢掉了。系学生信息的同时,把这个系的信息也丢掉了。第二范式(续)第二范式(续)(3)数据冗余度大数据冗余度大每一个系的学生都住在同一个地方,关于系的每一个系的学生都住在同一个地方,关于系的住处的信息却重复出现,重复次数与该系学生住处的信息却重复出

33、现,重复次数与该系学生人数相同。人数相同。(4)修改复杂修改复杂当学校调整学生住处时,由于关于每个系的住当学校调整学生住处时,由于关于每个系的住处信息是重复存储的,修改时必须同时更新该处信息是重复存储的,修改时必须同时更新该系所有学生的系所有学生的Sloc属性值。属性值。所以所以SL仍不是一个好的关系模式。仍不是一个好的关系模式。第二范式(续)第二范式(续)l原因原因Sloc传递函数依赖于传递函数依赖于Snol解决方法解决方法采用投影分解法,把采用投影分解法,把SL分解为两个关系模式,以消分解为两个关系模式,以消除传递函数依赖:除传递函数依赖:SD(Sno,Sdept)DL(Sdept,Slo

34、c)SD的码为的码为Sno,DL的码为的码为Sdept。SLSnoSdeptSloc第二范式(续)第二范式(续)SD的码为的码为Sno,DL的码为的码为Sdept。SnoSdeptSDSdeptSlocDL第二范式(续)第二范式(续)在分解后的关系模式中既没有非主属性对码的在分解后的关系模式中既没有非主属性对码的部分函数依赖也没有非主属性对码的传递函数部分函数依赖也没有非主属性对码的传递函数依赖,在一定程度上解决了上述四个问题:依赖,在一定程度上解决了上述四个问题:(1)DL关系中可以插入无在校学生的系的信息。关系中可以插入无在校学生的系的信息。(2)某个系的学生全部毕业了,只是删除某个系的学

35、生全部毕业了,只是删除SD关系中的相关系中的相应元组,应元组,DL关系中关于该系的信息仍存在。关系中关于该系的信息仍存在。(3)关于系的住处的信息只在关于系的住处的信息只在DL关系中存储一次。关系中存储一次。(4)当学校调整某个系的学生住处时,只需修改当学校调整某个系的学生住处时,只需修改DL关系关系中一个相应元组的中一个相应元组的Sloc属性值。属性值。4.2范式范式4.2.1第一范式(第一范式(1NF)4.2.2第二范式(第二范式(2NF)4.2.3第三范式(第三范式(3NF)4.2.4BC范式(范式(BCNF)4.2.5多值依赖与第四范式(多值依赖与第四范式(4NF)4.2.3第三范式(

36、第三范式(3NF)l3NF的定义的定义定义定义5.8关系模式关系模式R中若不存在这样的中若不存在这样的码码X、属性组、属性组Y及非主属性及非主属性Z(Z Y), 使得使得XY,YX,YZ,成立,则称,成立,则称R3NF。l例,例,SL(Sno,Sdept,Sloc)2NFSD(Sno,Sdept)3NFDL(Sdept,Sloc)3NF学生学生(学号,姓名,宿舍楼,宿舍号学号,姓名,宿舍楼,宿舍号)3NF第三范式(续)第三范式(续)l若若R3NF,则,则R的每一个非主属性既不部分函的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。数依赖于候选码也不传递函数依赖于候选码。l如果如

37、果R3NF,则,则R也是也是2NF。l采用投影分解法将一个采用投影分解法将一个2NF的关系分解为多个的关系分解为多个3NF的关系,可以在一定程度上解决原的关系,可以在一定程度上解决原2NF关关系中存在的插入异常、删除异常、数据冗余度系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。大、修改复杂等问题。l将一个将一个2NF关系分解为多个关系分解为多个3NF的关系后,并的关系后,并不能完全消除关系模式中的各种异常情况和数不能完全消除关系模式中的各种异常情况和数据冗余。据冗余。第三范式(续)第三范式(续)例:在关系模式例:在关系模式STJ(S,T,J)中,)中,S表示学生,表示学生,T表示

38、教师,表示教师,J表示课程。表示课程。l函数依赖:函数依赖:假设每一教师只教一门课。每门课由若干教师假设每一教师只教一门课。每门课由若干教师教,但某一学生选定某门课,就确定了一个固教,但某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定定的教师。某个学生选修某个教师的课就确定了所选课的名称。于是有:了所选课的名称。于是有:(S,J)T,(S,T)J,TJ第三范式(续)第三范式(续)SJTSTJSTJ第三范式(续)第三范式(续)l(S,J)和和(S,T)都可以作为候选码。都可以作为候选码。lSTJ3NFlTJ,即,即T是决定属性集,可是是决定属性集,可是T只只是主属性,它

39、既不是候选码,也不是主属性,它既不是候选码,也不包含候选码。包含候选码。第三范式(续)第三范式(续)l存在的问题:存在的问题:(1)插入异常插入异常如果某个教师开设了某门课程,但尚未有学生如果某个教师开设了某门课程,但尚未有学生选修,则有关信息也无法存入数据库中。选修,则有关信息也无法存入数据库中。第三范式(续)第三范式(续)(2)删除异常删除异常如果选修过某门课程的学生全部毕业了,在删如果选修过某门课程的学生全部毕业了,在删除这些学生元组的同时,相应教师开设该门课除这些学生元组的同时,相应教师开设该门课程的信息也同时丢掉了。程的信息也同时丢掉了。(3)数据冗余度大数据冗余度大虽然一个教师只教

40、一门课,但每个选修该教师虽然一个教师只教一门课,但每个选修该教师该门课程的学生元组都要记录这一信息。该门课程的学生元组都要记录这一信息。第三范式(续)第三范式(续)(4)修改复杂修改复杂某个教师开设的某门课程改名后,所有选修了某个教师开设的某门课程改名后,所有选修了该教师该门课程的学生元组都要进行相应修改。该教师该门课程的学生元组都要进行相应修改。因此虽然因此虽然STJ3NF,但它仍不是一个理想的,但它仍不是一个理想的关系模式。关系模式。第三范式(续)第三范式(续)l原因:原因:主属性主属性J依赖于依赖于T,即主属性,即主属性J部分依赖于码部分依赖于码(S,T)。l解决方法:解决方法:采用投影

41、分解法,将采用投影分解法,将STJ分解为二个关系模式:分解为二个关系模式:SJ(S,J)TJ(T,J)第三范式(续)第三范式(续)SJTSTJSTJ第三范式(续)第三范式(续)SJ的码为(的码为(S,J),),TJ的码为的码为T。SJSTTJTJ第三范式(续)第三范式(续)在分解后的关系模式中没有任何属性对码的部在分解后的关系模式中没有任何属性对码的部分函数依赖和传递函数依赖。它解决了上述四分函数依赖和传递函数依赖。它解决了上述四个问题:个问题:(1)TJ关系中可以存储所开课程尚未有学生选修关系中可以存储所开课程尚未有学生选修的教师信息。的教师信息。(2)选修过某门课程的学生全部毕业了,只是删

42、选修过某门课程的学生全部毕业了,只是删除除SJ关系中的相应元组,不会影响关系中的相应元组,不会影响TJ关系中相关系中相应教师开设该门课程的信息。应教师开设该门课程的信息。第三范式(续)第三范式(续)(3)关于每个教师开设课程的信息只在关于每个教师开设课程的信息只在TJ关系中关系中存储一次。存储一次。(4)某个教师开设的某门课程改名后,只需修改某个教师开设的某门课程改名后,只需修改TJ关系中的一个相应元组即可。关系中的一个相应元组即可。4.2规范化规范化4.2.1第一范式(第一范式(1NF)4.2.2第二范式(第二范式(2NF)4.2.3第三范式(第三范式(3NF)4.2.4BC范式(范式(BC

43、NF)4.2.5多值依赖与第四范式(多值依赖与第四范式(4NF)4.2.4BC范式(范式(BCNF)lBCNF(BoyceCoddNormalForm)是由)是由Boyce和和Codd提出的,比提出的,比3NF更进了一步。通更进了一步。通常认为常认为BCNF是修正的第三范式,所以有时也是修正的第三范式,所以有时也称为第三范式。称为第三范式。lBCNF的定义的定义定义定义5.9设关系模式设关系模式R1NF,如果对,如果对于于R的每个函数依赖的每个函数依赖XY,若,若Y不属于不属于X,则,则X必含有候选码,那么必含有候选码,那么RBCNF。BC范式(续)范式(续)换句话说,在关系模式换句话说,在关

44、系模式R中,如中,如果每一个决定属性集都包含候选码,则果每一个决定属性集都包含候选码,则RBCNF。例:例: STJ(S,T,J)3NFSJ(S,J)BCNFTJ(T,J)BCNFBC范式(续)范式(续)l采用投影分解法将一个采用投影分解法将一个3NF的关系分解为多个的关系分解为多个BCNF的关系,可以进一步解决原的关系,可以进一步解决原3NF关系中存关系中存在的插入异常、删除异常、数据冗余度大、修改在的插入异常、删除异常、数据冗余度大、修改复杂等问题。复杂等问题。lBCNF的关系模式所具有的性质的关系模式所具有的性质所有非主属性都完全函数依赖于每个候选码。所有非主属性都完全函数依赖于每个候选

45、码。所有主属性都完全函数依赖于每个不包含它的候选码。所有主属性都完全函数依赖于每个不包含它的候选码。没有任何属性完全函数依赖于非码的任何一组属性。没有任何属性完全函数依赖于非码的任何一组属性。BC范式(续)范式(续)l3NF与与BCNF的关系的关系如果关系模式如果关系模式RBCNF,必定有,必定有R3NF。如果如果R3NF,且,且R只有一个候选码,则只有一个候选码,则R必必属于属于BCNF。l如果一个关系数据库中的所有关系模式都属于如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,模式的彻

46、底分解,达到了最高的规范化程度,消除了插入异常和删除异常。消除了插入异常和删除异常。4.2范式范式4.2.1第一范式(第一范式(1NF)4.2.2第二范式(第二范式(2NF)4.2.3第三范式(第三范式(3NF)4.2.4BC范式(范式(BCNF)4.2.5多值依赖与第四范式(多值依赖与第四范式(4NF)4.2.5多值依赖与第四范式多值依赖与第四范式(4NF)l例子例子l一、多值依赖一、多值依赖l二、第四范式(二、第四范式(4NF)多值依赖与第四范式(续)多值依赖与第四范式(续)例子例子属于属于BCNF的关系模式的关系模式:函数依赖函数依赖:一个完美的关系模式一个完美的关系模式多值依赖多值依赖

47、:例例:设学校中某一门课程由多个教师讲授,他们使用设学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。相同的一套参考书。用关系模式用关系模式Teaching(C,T,B)来表示课程来表示课程C、教师、教师T和参考书和参考书B之间的关系。之间的关系。多值依赖与第四范式(续)多值依赖与第四范式(续)课课程程C教教员员T参参考考书书B物理物理数学数学计算数学计算数学李李勇勇王王军军李李勇勇张张平平张张平平周周峰峰普通物理学普通物理学光学原理光学原理物理习题集物理习题集数学分析数学分析微分方程微分方程高等代数高等代数数学分析数学分析表表5.1多值依赖与第四范式(续)多值依赖与第四范式(续)普通

48、物理学普通物理学光学原理光学原理物理习题集物理习题集普通物理学普通物理学光学原理光学原理物理习题集物理习题集数学分析数学分析微分方程微分方程高等代数高等代数数学分析数学分析微分方程微分方程高等代数高等代数李李勇勇李李勇勇李李勇勇王王军军王王军军王王军军李李勇勇李李勇勇李李勇勇张张平平张张平平张张平平物物理理物物理理物物理理物物理理物物理理物物理理数数学学数数学学数数学学数数学学数数学学数数学学参考书参考书B教员教员T课程课程C用二维表表示:表用二维表表示:表5.2Teaching多值依赖与第四范式(续)多值依赖与第四范式(续)lTeachingBCNF:Teach具有唯一候选码具有唯一候选码(

49、C,T,B),即全码。即全码。lTeaching模式中存在的问题模式中存在的问题(1)数据冗余度大:有多少名任课教师,参考数据冗余度大:有多少名任课教师,参考书就要存储多少次。书就要存储多少次。多值依赖与第四范式(续)多值依赖与第四范式(续)lTeaching模式中存在的问题模式中存在的问题(2)增加操作复杂:当某一课程增加一名任课增加操作复杂:当某一课程增加一名任课教师时,该课程有多少本参照书,就必须插教师时,该课程有多少本参照书,就必须插入多少个元组。入多少个元组。例如物理课增加一名教师刘关,需要插入两例如物理课增加一名教师刘关,需要插入两个元组:个元组:(物理,刘关,普通物理学),(物理

50、,刘关,普通物理学),(物理,刘关,光学原理)(物理,刘关,光学原理)多值依赖与第四范式(续)多值依赖与第四范式(续)lTeaching模式中存在的问题模式中存在的问题(3)删除操作复杂:某一门课要去掉一本参考书,删除操作复杂:某一门课要去掉一本参考书,该课程有多少名教师,就必须删除多少个元组。该课程有多少名教师,就必须删除多少个元组。(4)修改操作复杂:某一门课要修改一本参考书,修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,就必须修改多少个元组。该课程有多少名教师,就必须修改多少个元组。l产生原因产生原因参考书的取值和教师的取值是彼此独立毫无关参考书的取值和教师的取值是彼此独立

51、毫无关系的,都只取决于课程名。系的,都只取决于课程名。一、多值依赖一、多值依赖l定义定义定义定义5.10设设R(U)是一个属性集是一个属性集U上的一个关系上的一个关系模式,模式,X、Y和和Z是是U的子集,并且的子集,并且ZUXY,多值依赖多值依赖XY成立当且仅当对成立当且仅当对R的任的任一关系一关系r,r在(在(X,Z)上的每个值对应一组)上的每个值对应一组Y的值,这组值仅仅决定于的值,这组值仅仅决定于X值而与值而与Z值无关。值无关。 例例Teaching(C,T,B)多值依赖(续)多值依赖(续)l平凡多值依赖和非平凡的多值依赖平凡多值依赖和非平凡的多值依赖若若XY,而,而Z,则称,则称XY为

52、为平凡的多值依赖平凡的多值依赖。否则称否则称XY为为非平凡的多值依赖非平凡的多值依赖。多值依赖(续)多值依赖(续)l多值依赖的性质多值依赖的性质(1)多值依赖具有对称性。)多值依赖具有对称性。若若XY,则,则XZ,其中,其中ZUXY多值依赖的对称性可以用完全二分图直观地多值依赖的对称性可以用完全二分图直观地表示出来。表示出来。(2)多值依赖具有传递性。)多值依赖具有传递性。若若XY,YZ,则则XZ-Y。多值依赖的对称性多值依赖的对称性XiZi1Zi2ZimYi1Yi2Yin多值依赖的对称性多值依赖的对称性物物理理普通物理学普通物理学光学原理光学原理物理习题集物理习题集李勇李勇王军王军多值依赖(

53、续)多值依赖(续)(3)函数依赖是多值依赖的特殊情况。)函数依赖是多值依赖的特殊情况。若若XY,则,则XY。(4)若)若XY,XZ,则,则XY Z。(5)若)若XY,XZ,则,则XYZ。(6)若)若XY,XZ,则,则XY-Z,XZ-Y。多值依赖(续)多值依赖(续)l多值依赖与函数依赖的区别多值依赖与函数依赖的区别(1)有效性有效性多值依赖的有效性与属性集的范围有关。多值依赖的有效性与属性集的范围有关。若若XY在在U上成立,则在上成立,则在W(XY W U)上一定成立;反之则不然,即上一定成立;反之则不然,即XY在在W(W U)上成立,在)上成立,在U上并不一定成立。上并不一定成立。原因:多值依

54、赖的定义中不仅涉及属性组原因:多值依赖的定义中不仅涉及属性组X和和Y,而且涉及,而且涉及U中其余属性中其余属性Z。一般地,在一般地,在R(U)上若有)上若有XY在在W(W U)上成立,则称)上成立,则称XY为为R(U)的嵌入型多)的嵌入型多值依赖。值依赖。多值依赖(续)多值依赖(续)函数依赖函数依赖XY的有效性仅决定于的有效性仅决定于X、Y这两这两个属性集的值个属性集的值只要在只要在R(U)的任何一个关系)的任何一个关系r中,元组在中,元组在X和和Y上的值满足定义上的值满足定义5.l,则函数依赖,则函数依赖XY在任何在任何属性集属性集W(XY W U)上成立。)上成立。多值依赖(续)多值依赖(

55、续)(2)若函数依赖若函数依赖XY在在R(U)上成立,则对于)上成立,则对于任何任何Y Y均有均有XY成立。成立。多值依赖多值依赖XY若在若在R(U)上成立,不能断上成立,不能断言对于任何言对于任何Y Y有有XY成立。成立。二、第四范式(二、第四范式(4NF)l定义定义定义定义5.11关系模式关系模式R1NF,如果对,如果对于于R的每个非平凡多值依赖的每个非平凡多值依赖XY(Y X),),X都含有候选码,则都含有候选码,则R4NF。4NF就是限制关系模式的属性之间不允许有就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。非平凡且非函数依赖的多值依赖。4NF所允所允许的非平凡多值依

56、赖实际上是函数依赖。许的非平凡多值依赖实际上是函数依赖。第四范式(续)第四范式(续)l如果一个关系模式是如果一个关系模式是4NF,则必为则必为BCNF。第四范式(续)第四范式(续)例:例:Teach(C,T,B)由于由于Teach(C,T,B)中存在非平凡的多值依赖中存在非平凡的多值依赖CT,且,且C不是候选码,因此不是候选码,因此Teach不属不属于于4NF。这正是它之所以存在数据冗余度大,插入和这正是它之所以存在数据冗余度大,插入和删除操作复杂等弊病的根源。删除操作复杂等弊病的根源。第四范式(续)第四范式(续)解决方法解决方法用投影分解法把用投影分解法把Teach分解为如下两个分解为如下两

57、个4NF关系模式:关系模式:CT(C,T)CB(C,B)CT4NF。CT是平凡多值依赖是平凡多值依赖CT中不存在既非平凡也非函数依赖的中不存在既非平凡也非函数依赖的多值依赖。多值依赖。CB4NF。第四范式(续)第四范式(续)分解后分解后Teach关系中的几个问题可以得到解决:关系中的几个问题可以得到解决:(1)参考书只需要在参考书只需要在CB关系中存储一次。关系中存储一次。(2)当某一课程增加一名任课教师时,只需要当某一课程增加一名任课教师时,只需要在在CT关系中增加一个元组。关系中增加一个元组。(3)某一门课要去掉一本参考书,只需要在某一门课要去掉一本参考书,只需要在CB关系中删除一个相应的

58、元组。关系中删除一个相应的元组。(4)某一门课要修改一本参考书,只需要修改某一门课要修改一本参考书,只需要修改CB关系中一个相应的元组。关系中一个相应的元组。第第4章章关系数据库设计理论关系数据库设计理论l4.1数据依赖数据依赖l4.2范式范式l4.3关系模式的规范化关系模式的规范化4.3关系模式的规范化关系模式的规范化l4.3.1关系模式规范化的步骤关系模式规范化的步骤l4.3.2关系模式的分解关系模式的分解4.3关系模式的规范化关系模式的规范化l关系数据库的规范化理论是数据库逻辑关系数据库的规范化理论是数据库逻辑设计的工具。设计的工具。l一个关系只要其分量都是不可分的数据一个关系只要其分量

59、都是不可分的数据项,它就是规范化的关系,但这只是最项,它就是规范化的关系,但这只是最基本的规范化。基本的规范化。l规范化程度可以有规范化程度可以有6个不同的级别,即个不同的级别,即6个范式。个范式。规范化(续)规范化(续)l规范化程度过低的关系不一定能够很好规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、地描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题,删除异常、修改复杂、数据冗余等问题,解决方法就是对其进行规范化,转换成解决方法就是对其进行规范化,转换成高级范式。高级范式。l一个低一级范式的关系模式,通过模式一个低一级范式的关系模式,通过模式分解可

60、以转换为若干个高一级范式的关分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫系模式集合,这种过程就叫关系模式的关系模式的规范化规范化。4.3关系模式的规范化关系模式的规范化l4.3.1关系模式规范化的步骤关系模式规范化的步骤l4.3.2关系模式的分解关系模式的分解4.3.1关系模式规范化的步骤关系模式规范化的步骤l关系模式规范化的基本步骤关系模式规范化的基本步骤1NF消除非主属性对码的部分函数依赖消除非主属性对码的部分函数依赖消除决定属性消除决定属性2NF集非码的非平集非码的非平消除非主属性对码的传递函数依赖消除非主属性对码的传递函数依赖凡函数依赖凡函数依赖3NF消除主属性对码的部分

61、和传递函数依消除主属性对码的部分和传递函数依赖赖BCNF消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖的多值依赖4NF关系模式规范化的步骤(续)关系模式规范化的步骤(续)规范化的基本思想是逐步消除数据依规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式中的各关赖中不合适的部分,使模式中的各关系模式达到某种程度的系模式达到某种程度的“分离分离”,即,即采用采用“一事一地一事一地”的模式设计原则,的模式设计原则,让一个关系描述一个概念、一个实体让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个或者实体间的一种联系。若多于一个概念就把它概念就把它“分离分离”出去。因此所谓

62、出去。因此所谓规范化实质上是概念的单一化。规范化实质上是概念的单一化。关系模式规范化的步骤(续)关系模式规范化的步骤(续)不能说规范化程度越高的关系模式就不能说规范化程度越高的关系模式就越好。在设计数据库模式结构时,必越好。在设计数据库模式结构时,必须对现实世界的实际情况和用户应用须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、需求作进一步分析,确定一个合适的、能够反映现实世界的模式。这也就是能够反映现实世界的模式。这也就是说,上面的规范化步骤可以在其中任说,上面的规范化步骤可以在其中任何一步终止。何一步终止。4.3关系模式的规范化关系模式的规范化l4.3.1关系模式规范化的

63、步骤关系模式规范化的步骤l4.3.2关系模式的分解关系模式的分解4.3.2关系模式的分解关系模式的分解l关系模式的规范化过程是通过对关关系模式的规范化过程是通过对关系模式的分解来实现的系模式的分解来实现的把低一级的关系模式分解为若干个高一级的把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的关系模式的方法并不是唯一的在这些分解方法中,只有能够保证分解后的在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义关系模式与原关系模式等价的方法才有意义关系模式的分解(续)关系模式的分解(续)l将一个关系模式将一个关系模式R分解为若干个关分解为若干个关系模式系模式R1

64、,R2,Rn(其中(其中U=U1U2Un,且不存在且不存在Ui Uj,Fi为为F在在Ui上的投影),上的投影),意味着相应地将存储在一个二维表意味着相应地将存储在一个二维表t中的中的数据分散到若干个二维表数据分散到若干个二维表t1,t2,tn中去(其中中去(其中ti是是t在属性集在属性集Ui上的投影)。上的投影)。关系模式的分解(续)关系模式的分解(续)例例:对对于于关关系系模模式式SL(Sno,Sdept,Sloc),SL中有下列函数依赖:中有下列函数依赖:SnoSdeptSdeptSlocSnoSloc已已知知SL2NF,该该关关系系模模式式存存在在插插入入异异常常、删删除除异常、数据冗余

65、度大和修改复杂的问题。异常、数据冗余度大和修改复杂的问题。因此需要分解该关系模式,使成为更高范式的关因此需要分解该关系模式,使成为更高范式的关系模式。分解方法可以有很多种。系模式。分解方法可以有很多种。关系模式的分解(续)关系模式的分解(续)假设下面是该关系模式的一个关系:假设下面是该关系模式的一个关系:SLSnoSdeptSloc95001CSA95002ISB95003MAC95004ISB95005PHB关系模式的分解(续)关系模式的分解(续)第一种分解方法第一种分解方法将将SL分解为下面三个关系模式:分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)关系模式的分解

66、(续)关系模式的分解(续)分解后的关系为:分解后的关系为:SNSDSOSnoSdeptSloc95001CSA95002ISB95003MAC95004PH95005关系模式的分解(续)关系模式的分解(续)SN、SD和和SO都都是是规规范范化化程程度度很很高高的的关关系系模模式式(5NF)。但但分分解解后后的的数数据据库库丢丢失失了了许许多多信信息息,例例如如无无法法查查询询95001学学生生所所在在系系或或所所在在宿宿舍舍。因此这种分解方法是不可取的。因此这种分解方法是不可取的。如如果果分分解解后后的的关关系系可可以以通通过过自自然然连连接接恢恢复复为为原原来的关系,那么这种分解就没有丢失信

67、息。来的关系,那么这种分解就没有丢失信息。关系模式的分解(续)关系模式的分解(续)第二种分解方法第二种分解方法将将SL分解为下面二个关系模式:分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)分解后的关系为:分解后的关系为:NLDLSnoSlocSdeptSloc95001ACSA95002BISB95003CMAC95004BPHB95005B关系模式的分解(续)关系模式的分解(续)对对NL和和DL关系进行自然连接的结果为:关系进行自然连接的结果为:NLDLSnoSlocSdept95001ACS95002BIS95002BPH95003CMA95004AIS950

68、05BIS95005BPH关系模式的分解(续)关系模式的分解(续)NLDL比原来的比原来的SL关系多了两个元组关系多了两个元组(95002,B,PH)和和(95005,B,IS)。因此我。因此我们也无法知道原来的们也无法知道原来的SL关系中究竟有哪关系中究竟有哪些元组,从这个意义上说,此分解方法些元组,从这个意义上说,此分解方法仍然丢失了信息。仍然丢失了信息。关系模式的分解(续)关系模式的分解(续)第三种分解方法第三种分解方法将将SL分解为下面二个关系模式:分解为下面二个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)分解后的关系为:分解后的关系为:关系模式的分解(续)关系模式的分

69、解(续)NDNLSnoSdeptSnoSloc95001CS95001A95002IS95002B95003MA95003C95004IS95004B95005PH95005B关系模式的分解(续)关系模式的分解(续)对对ND和和NL关系进行自然连接的结果为:关系进行自然连接的结果为:NDNLSnoSdeptSloc95001CSA95002ISB95003MAC95004CSA95005PHB它与它与SL关系完全一样,因此第三种分解方法没有丢失信关系完全一样,因此第三种分解方法没有丢失信息。息。关系模式的分解(续)关系模式的分解(续)l具有无损连接性的模式分解具有无损连接性的模式分解设关系模式

70、设关系模式R被分解为若干个关系模式被分解为若干个关系模式R1,R2,Rn(其(其中中U=U1U2Un,且不存在,且不存在Ui Uj,Fi为为F在在Ui上的投影),若上的投影),若R与与R1、R2、Rn自然连接自然连接的结果相等,则称关系模式的结果相等,则称关系模式R的这个分解具有无损的这个分解具有无损连接性(连接性(Losslessjoin)。)。只有具有无损连接性的分解才能够保证不丢失信息。只有具有无损连接性的分解才能够保证不丢失信息。无损连接性不一定能解决插入异常、删除异常、修无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题改复杂、数据冗余等问题关系模式的分解(续)关系模

71、式的分解(续)例:例:上面的第三种分解方法虽然具有无损连接性,保证了不上面的第三种分解方法虽然具有无损连接性,保证了不丢失原关系中的信息,但它并没有解决插入异常、删丢失原关系中的信息,但它并没有解决插入异常、删除异常、修改复杂、数据冗余等问题。除异常、修改复杂、数据冗余等问题。例如例如95001学生由学生由CS系转到系转到IS系,系,ND关系的关系的(95001,CS)元组和元组和NL关系的关系的(95001,A)元组必须同时进行修改,元组必须同时进行修改,否则会破坏数据库的一致性。否则会破坏数据库的一致性。之所以出现上述问题,是因为分解得到的两个关系模式之所以出现上述问题,是因为分解得到的两

72、个关系模式不是互相独立的。不是互相独立的。SL中的函数依赖中的函数依赖SdeptSloc既没有既没有投影到关系模式投影到关系模式ND上,也没有投影到关系模式上,也没有投影到关系模式NL上,上,而是跨在这两个关系模式上。也就是这种分解方法没而是跨在这两个关系模式上。也就是这种分解方法没有保持原关系中的函数依赖有保持原关系中的函数依赖。关系模式的分解(续)关系模式的分解(续)l保持函数依赖的模式分解保持函数依赖的模式分解设关系模式设关系模式R被分解为若干个关系模被分解为若干个关系模式式R1,R2,Rn(其中(其中U=U1U2Un,且,且不存在不存在Ui Uj,Fi为为F在在Ui上的投影),若上的投

73、影),若F所逻辑蕴含的函数依赖一定也由分解得到的所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖某个关系模式中的函数依赖Fi所逻辑蕴含,所逻辑蕴含,则称关系模式则称关系模式R的这个分解是保持函数依赖的这个分解是保持函数依赖的(的(Preservedependency)。)。关系模式的分解(续)关系模式的分解(续)例:第四种分解方法例:第四种分解方法将将SL分解为下面二个关系模式:分解为下面二个关系模式:ND(Sno,Sdept)DL(Sdept,Sloc)这种分解方法就保持了函数依赖。这种分解方法就保持了函数依赖。关系模式的分解(续)关系模式的分解(续)l判断对关系模式的一个分解

74、是否与判断对关系模式的一个分解是否与原关系模式等价的标准原关系模式等价的标准分解具有无损连接性分解具有无损连接性分解要保持函数依赖分解要保持函数依赖分解既要保持函数依赖,又要具有分解既要保持函数依赖,又要具有无损连接性无损连接性关系模式的分解(续)关系模式的分解(续)如果一个分解具有无损连接性,则它能够保如果一个分解具有无损连接性,则它能够保证不丢失信息。证不丢失信息。如果一个分解保持了函数依赖,则它可以减如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。轻或解决各种异常情况。分解具有无损连接性和分解保持函数依赖是分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接

75、性的分两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。数依赖的分解也不一定具有无损连接性。关系模式的分解(续)关系模式的分解(续)例:上例中例:上例中第一种分解方法既不具有无损连接性,也未保第一种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分持函数依赖,它不是原关系模式的一个等价分解。解。第二种分解方法保持了函数依赖,但不具有无第二种分解方法保持了函数依赖,但不具有无损连接性。损连接性。第三种分解方法具有无损连接性,但未持函数第三种分解方法具有无损连接性,但未持函数

76、依赖。依赖。第四种分解方法既具有无损连接性,又保持了第四种分解方法既具有无损连接性,又保持了函数依赖。函数依赖。关系模式的分解(续)关系模式的分解(续)l规范化理论提供了一套完整的模式规范化理论提供了一套完整的模式分解算法,按照这套算法可以做到:分解算法,按照这套算法可以做到:若要求分解具有无损连接性,那么模式分解若要求分解具有无损连接性,那么模式分解一定能够达到一定能够达到4NF。若要求分解保持函数依赖,那么模式分解一若要求分解保持函数依赖,那么模式分解一定能够达到定能够达到3NF,但不一定能够达到,但不一定能够达到BCNF。若要求分解既具有无损连接性,又保持函数若要求分解既具有无损连接性,

77、又保持函数依赖,则模式分解一定能够达到依赖,则模式分解一定能够达到3NF,但不,但不一定能够达到一定能够达到BCNF。小结小结l函数依赖函数依赖l多值依赖多值依赖l关系模式规范化的基本步骤关系模式规范化的基本步骤lArmstrong公理系统公理系统小结小结l一、函数依赖一、函数依赖函数依赖函数依赖平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖传递函数依赖传递函数依赖码码小结小结l二、多值依赖二、多值依赖多值依赖多值依赖平凡多值依赖和非平凡的多值依赖平凡多值依赖和非平凡的多值依赖多值依赖的性质多值依赖的性质对称性对称性传递性传递性小结

78、小结l三、关系模式规范化的基本步骤三、关系模式规范化的基本步骤1NF消除非主属性对码的部分函数依赖消除非主属性对码的部分函数依赖消除决定属性消除决定属性2NF集非码的非平集非码的非平消除非主属性对码的传递函数依赖消除非主属性对码的传递函数依赖凡函数依赖凡函数依赖3NF消除主属性对码的部分和传递函数依消除主属性对码的部分和传递函数依赖赖BCNF消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖的多值依赖4NF小结小结(续续)l规规范范化化理理论论为为数数据据库库设设计计提提供供了了理理论论的的指南和工具指南和工具也仅仅是指南和工具也仅仅是指南和工具l并不是规范化程度越高,模式就越好并不是规范化程度越高,模式就越好必必须须结结合合应应用用环环境境和和现现实实世世界界的的具具体体情情况况合合理地选择数据库模式理地选择数据库模式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号