数据库原理与设计:chp3_关系数据库规范化理论_第1页
数据库原理与设计:chp3_关系数据库规范化理论_第2页
数据库原理与设计:chp3_关系数据库规范化理论_第3页
数据库原理与设计:chp3_关系数据库规范化理论_第4页
数据库原理与设计:chp3_关系数据库规范化理论_第5页
已阅读5页,还剩151页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、关系数据库规范化关系数据库规范化数据库原理与设计苏州大学计算机科学与技术学院苏州大学计算机科学与技术学院关系数据库规范化理论关系数据库规范化理论n关系数据库的规范化理论最早是由关系数据库的创关系数据库的规范化理论最早是由关系数据库的创始人始人E.F.CoddE.F.Codd提出的,后经许多专家学者对关系数提出的,后经许多专家学者对关系数据库理论作了深入的研究和发展,形成了一整套有据库理论作了深入的研究和发展,形成了一整套有关关系数据库设计的理论。关关系数据库设计的理论。n如何设计一个适合的关系数据库系统,关键是关系如何设计一个适合的关系数据库系统,关键是关系数据库模式的设计数据库模式的设计n一

2、个好的关系数据库模式应该包括多少关系模式,而每一个好的关系数据库模式应该包括多少关系模式,而每一个关系模式又应该包括哪些属性,又如何将这些相互一个关系模式又应该包括哪些属性,又如何将这些相互关联的关系模式组建一个适合的关系模型,这些工作属关联的关系模式组建一个适合的关系模型,这些工作属于数据库设计的问题,确切地讲是数据库逻辑设计的问于数据库设计的问题,确切地讲是数据库逻辑设计的问题题, ,有关数据库设计的全过程将在相应章节详细讨论有关数据库设计的全过程将在相应章节详细讨论关系数据库规范化理论关系数据库规范化理论n本章讲述本章讲述关系数据库规范化理论关系数据库规范化理论,这是,这是数据库逻辑数据

3、库逻辑设计设计的理论依据。的理论依据。n要求了解规范化理论的研究动机及其在数据库设计中的要求了解规范化理论的研究动机及其在数据库设计中的作用,作用,n掌握函数依赖的有关概念,掌握函数依赖的有关概念,n第一范式、第二范式、第三范式的定义,第一范式、第二范式、第三范式的定义,n重点掌握并能够灵活运用关系模式规范化的方法和关系重点掌握并能够灵活运用关系模式规范化的方法和关系模式分解的方法,这也是本章的难点。模式分解的方法,这也是本章的难点。 关系模式的存储异常问题关系模式的存储异常问题n数据库的逻辑设计为什么要遵循一定的规范数据库的逻辑设计为什么要遵循一定的规范化理论?化理论?n什么是好的关系模式?

4、什么是好的关系模式?n某些不好的关系模式可能导致哪些问题?某些不好的关系模式可能导致哪些问题?n下面通过例子进行分析下面通过例子进行分析: :n例如例如,要求设计,要求设计教学管理数据库教学管理数据库,其关系模式,其关系模式SCDSCD如下:如下: SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE) 其中,其中,SNOSNO表示学生学号,表示学生学号,SNSN表示学生姓名,表示学生姓名,AGEAGE表示学生年龄,表示学生年龄,DEPTDEPT表示学生所在的系别,表示学生所在的系别,MNMN表示表示系主任姓名,系主

5、任姓名,CNOCNO表示课程号,表示课程号,SCORESCORE表示成绩。表示成绩。n根据实际情况,这些数据有如下语义规定:根据实际情况,这些数据有如下语义规定:1. 1. 一个系有若干个学生,但一个学生只属于一个系;一个系有若干个学生,但一个学生只属于一个系;2. 2. 一个系只有一名系主任,但一个系主任可以同时兼几个一个系只有一名系主任,但一个系主任可以同时兼几个系的系主任;系的系主任;3. 3. 一个学生可以选修多门功课,每门课程可有若干学生选一个学生可以选修多门功课,每门课程可有若干学生选修;修;4. 4. 每个学生学习课程有一个成绩。每个学生学习课程有一个成绩。关系关系SCD 思考:

6、主键?思考:主键?SNOSNOSNSNAGEAGEDEPTDEPTMNMNCNOCNOSCORESCORES1S1赵亦赵亦1717计算机计算机刘伟刘伟C1C19090S1S1赵亦赵亦1717计算机计算机刘伟刘伟C2C28585S2S2钱尔钱尔1818信息信息王平王平C5C55757S2S2钱尔钱尔1818信息信息王平王平C6C68080S2S2钱尔钱尔1818信息信息王平王平C7C770S2S2钱尔钱尔1818信息信息王平王平C8C87070S3S3孙珊孙珊2020信息信息王平王平C1C10 0S3S3孙珊孙珊2020信息信息王平王平C2C27070S3S3孙珊孙珊2020信息信息王平王平C4

7、C48585S4S4李思李思男男自动化自动化刘向刘向C1C19393在此关系模式中填入一部分具体的数据,如图所示。在此关系模式中填入一部分具体的数据,如图所示。关系模式的存储异常问题关系模式的存储异常问题n根据上述的语义规定,并分析以上关系中的数据,根据上述的语义规定,并分析以上关系中的数据,我们可以看出:我们可以看出:(SNO,CNO)属性的组合能唯一标属性的组合能唯一标识一个元组,所以识一个元组,所以(SNO,CNO)是该关系模式的是该关系模式的主主关系键关系键。n但在进行数据库的操作时,会出现以下几方面的问但在进行数据库的操作时,会出现以下几方面的问题。题。n1. 1. 数据冗余数据冗余

8、。每个系名和系主任的名字存储的每个系名和系主任的名字存储的次数等于该系的学生人数乘以每个学生选修的课次数等于该系的学生人数乘以每个学生选修的课程门数,同时学生的姓名、年龄也都要重复存储程门数,同时学生的姓名、年龄也都要重复存储多次,数据的冗余度很大,浪费了存储空间。多次,数据的冗余度很大,浪费了存储空间。SNOSNOSNSNAGEAGEDEPTDEPTMNMNCNOCNOSCORESCORES1S1赵亦赵亦1717计算机计算机刘伟刘伟C1C19090S1S1赵亦赵亦1717计算机计算机刘伟刘伟C2C28585S2S2钱尔钱尔1818信息信息王平王平C5C55757S2S2钱尔钱尔1818信息信

9、息王平王平C6C68080S2S2钱尔钱尔1818信息信息王平王平C7C770S2S2钱尔钱尔1818信息信息王平王平C8C87070S3S3孙珊孙珊2020信息信息王平王平C1C10 0S3S3孙珊孙珊2020信息信息王平王平C2C27070S3S3孙珊孙珊2020信息信息王平王平C4C48585S4S4李思李思男男自动化自动化刘向刘向C1C19393关系模式的存储异常问题关系模式的存储异常问题n插入异常插入异常。n如果某个新系没有招生,尚无学生时,则系名如果某个新系没有招生,尚无学生时,则系名和系主任的信息无法插入到数据库中。和系主任的信息无法插入到数据库中。n因为在这个关系模式中,因为在

10、这个关系模式中,(SNO,CNO)是主关系键。是主关系键。根据关系的根据关系的实体完整性约束,主关系键的值不能为空,实体完整性约束,主关系键的值不能为空,而这时没有学生,而这时没有学生,SNOSNO和和CNOCNO均无值,因此不能进行插均无值,因此不能进行插入操作。入操作。n另外,当某个学生尚未选课,即另外,当某个学生尚未选课,即CNOCNO未知,实体未知,实体完整性约束还规定,主关系键的值不能部分为空,完整性约束还规定,主关系键的值不能部分为空,同样不能进行插入操作。同样不能进行插入操作。关系模式的存储异常问题关系模式的存储异常问题n3. 3. 删除异常。删除异常。n某系学生全部毕业而没有招

11、生时,删除全部学生的记某系学生全部毕业而没有招生时,删除全部学生的记录则系名、系主任也随之删除,而这个系依然存在,录则系名、系主任也随之删除,而这个系依然存在,在数据库中却无法找到该系的信息。在数据库中却无法找到该系的信息。n另外,如果某个学生只选修了另外,如果某个学生只选修了C1C1课程,当他退选课程,当他退选C1C1课课程时,本应该只删去程时,本应该只删去C1C1,但,但C1C1是主关系键的一部分,是主关系键的一部分,为保证实体完整性,必须将整个元组一起删掉,这样,为保证实体完整性,必须将整个元组一起删掉,这样,有关该学生的其它信息也随之丢失。有关该学生的其它信息也随之丢失。SNOSNOS

12、NSNAGEAGEDEPTDEPTMNMNCNOCNOSCORESCORES1S1赵亦赵亦1717计算机计算机刘伟刘伟C1C19090S1S1赵亦赵亦1717计算机计算机刘伟刘伟C2C28585S2S2钱尔钱尔1818信息信息王平王平C5C55757S2S2钱尔钱尔1818信息信息王平王平C6C68080S2S2钱尔钱尔1818信息信息王平王平C7C770S2S2钱尔钱尔1818信息信息王平王平C8C87070S3S3孙珊孙珊2020信息信息王平王平C1C10 0S3S3孙珊孙珊2020信息信息王平王平C2C27070S3S3孙珊孙珊2020信息信息王平王平C4C48585S4S4李思李思男男

13、自动化自动化刘向刘向C1C19393退选3. 删除异常关系模式的存储异常问题关系模式的存储异常问题n4. 4. 更新异常更新异常n如果学生改名,则该学生的所有记录都要逐一修改如果学生改名,则该学生的所有记录都要逐一修改SNSN;n又如某系更换系主任,则属于该系的学生记录都要修又如某系更换系主任,则属于该系的学生记录都要修改改MNMN的内容,稍有不慎,就有可能漏改某些记录,这的内容,稍有不慎,就有可能漏改某些记录,这就会造成数据的不一致性,破坏了数据的完整性。就会造成数据的不一致性,破坏了数据的完整性。SNOSNOSNSNAGEAGEDEPTDEPTMNMNCNOCNOSCORESCORES1S

14、1赵亦赵亦1717计算机计算机刘伟刘伟C1C19090S1S1赵亦赵亦1717计算机计算机刘伟刘伟C2C28585S2S2钱尔钱尔1818信息信息王平王平C5C55757S2S2钱尔钱尔1818信息信息王平王平C6C68080S2S2钱尔钱尔1818信息信息王平王平C7C770S2S2钱尔钱尔1818信息信息王平王平C8C87070S3S3孙珊孙珊2020信息信息王平王平C1C10 0S3S3孙珊孙珊2020信息信息王平王平C2C27070S3S3孙珊孙珊2020信息信息王平王平C4C48585S4S4李思李思男男自动化自动化刘向刘向C1C19393换系主任4. 更新异常关系模式的存储异常问题

15、关系模式的存储异常问题n由于存在以上问题,我们说,由于存在以上问题,我们说,SCDSCD是一个不好的关是一个不好的关系模式。产生上述问题的原因,直观地说,是因为系模式。产生上述问题的原因,直观地说,是因为关系中关系中“包罗万象包罗万象”,内容太杂了。,内容太杂了。n那么,怎样才能得到一个好的关系模式呢?那么,怎样才能得到一个好的关系模式呢?n把关系模式把关系模式SCDSCD分解为下面三个结构简单的关系模分解为下面三个结构简单的关系模式,如图所示。式,如图所示。n学生关系学生关系S(SNO,SN,AGE,DEPT)S(SNO,SN,AGE,DEPT)n选课关系选课关系SC(SNO,CNO,SCO

16、RE)SC(SNO,CNO,SCORE)n系关系系关系D(DEPT,MN)D(DEPT,MN)SNOSNOSNSNAGEAGEDEPTDEPTSNOSNOCNOCNOSCORESCORES1S1赵亦赵亦1717计算机计算机S1S1C1C19090S2S2钱尔钱尔1818信息信息S1S1C2C28585S3S3孙珊孙珊2020信息信息S2S2C5C55757S4S4李思李思2121自动化自动化S2S2C6C68080S2S2C7C7S2S2C5C57070DEPTDEPTMNMNS3S3C1C10 0计算机计算机刘伟刘伟S3S3C2C27070信息信息王平王平S3S3C4C48585自动化自动化

17、刘向刘向S4S4C1C19393分解后的关系模式 n在以上三个关系模式中,实现了信息的某种在以上三个关系模式中,实现了信息的某种程度的分离,程度的分离,nS S中存储学生基本信息,与所选课程及系主任无中存储学生基本信息,与所选课程及系主任无关;关;nD D中存储系的有关信息,与学生无关;中存储系的有关信息,与学生无关;nSCSC中存储学生选课的信息,而与所学生及系的有中存储学生选课的信息,而与所学生及系的有关信息无关。关信息无关。关系模式的存储异常问题关系模式的存储异常问题n与与SCDSCD相比,分解为三个关系模式后,数据的冗余相比,分解为三个关系模式后,数据的冗余度明显降低。度明显降低。n当

18、新插入一个系时,只要在关系当新插入一个系时,只要在关系D D中添加一条记录。中添加一条记录。n当某个学生尚未选课,只要在关系当某个学生尚未选课,只要在关系S S中添加一条学生记录,中添加一条学生记录,而与选课关系无关,这就避免了而与选课关系无关,这就避免了插入异常插入异常。n当一个系的学生全部毕业时,只需在当一个系的学生全部毕业时,只需在S S中删除该系的全部中删除该系的全部学生记录,而关系学生记录,而关系D D中有关该系的信息仍然保留,从而不中有关该系的信息仍然保留,从而不会引起会引起删除异常删除异常。n同时,由于数据冗余度的降低,数据没有重复存储,也同时,由于数据冗余度的降低,数据没有重复

19、存储,也不会引起不会引起更新异常更新异常。关系模式的存储异常问题关系模式的存储异常问题关系模式的存储异常问题关系模式的存储异常问题n经过上述分析,我们说分解后的关系模式是经过上述分析,我们说分解后的关系模式是一个好的关系数据库模式。一个好的关系数据库模式。n从而得出结论,一个好的关系模式应该具备从而得出结论,一个好的关系模式应该具备以下四个条件:以下四个条件:n1. 1. 尽可能少的数据冗余。尽可能少的数据冗余。n2. 2. 没有插入异常。没有插入异常。n3. 3. 没有删除异常。没有删除异常。n4. 4. 没有更新异常。没有更新异常。 关系模式的存储异常问题关系模式的存储异常问题n但要注意,

20、一个好的关系模式并不是在任何但要注意,一个好的关系模式并不是在任何情况下都是最优的情况下都是最优的n多表多连接开销多表多连接开销SNOSNOCNOCNOSCORESCORES1S1C1C19090S1S1C2C28585S2S2C5C55757S2S2C6C68080S2S2C7C7S2S2C5C57070SNOSNOSNSNAGEAGEDEPTDEPTS1S1赵亦赵亦1717计算机计算机S2S2钱尔钱尔1818信息信息查询学生选课情况,列出学号姓名,课程号和成绩SNOSNOCNOCNOSCORESCORES1S1C1C19090S1S1C2C28585S2S2C5C55757S2S2C6C6

21、8080S2S2C7C7S2S2C5C57070SNSN赵亦赵亦赵亦赵亦钱尔钱尔钱尔钱尔钱尔钱尔钱尔钱尔关系模式的存储异常问题关系模式的存储异常问题适当的冗余是有好处的关系模式的存储异常问题关系模式的存储异常问题n冗余是产生数据库异常的根本原因冗余是产生数据库异常的根本原因n如何按照一定的规范设计关系模式,将结构如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,降低或复杂的关系分解成结构简单的关系,降低或消除数据库中冗余数据的过程,这就是消除数据库中冗余数据的过程,这就是关系关系的规范化的规范化。规范化理论内容规范化理论内容n关系数据库的规范化理论主要包括三个方面关系数据库

22、的规范化理论主要包括三个方面的内容:的内容:n函数信赖函数信赖n范式(范式(Normal FormNormal Form)n模式设计模式设计n其中,其中,函数信赖函数信赖起着核心的作用,是模式分起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标解和模式设计的基础,范式是模式分解的标准。准。函数依赖的定义及性质函数依赖的定义及性质n关系模式中的各属性之间相互依赖、相互制关系模式中的各属性之间相互依赖、相互制约的联系称为约的联系称为数据依赖数据依赖。n数据依赖一般分为数据依赖一般分为函数依赖函数依赖、多值依赖多值依赖和和连连接依赖接依赖。其中。其中, ,函数依赖函数依赖是最重要的数据依

23、赖。是最重要的数据依赖。n函数依赖(函数依赖(Functional DependencyFunctional Dependency)是关系)是关系模式中属性之间的一种模式中属性之间的一种逻辑依赖关系逻辑依赖关系。函数依赖的定义及性质函数依赖的定义及性质n在上一节介绍的关系模式在上一节介绍的关系模式SCDSCD中,中,SNOSNO与与SNSN、AGEAGE、DEPTDEPT之之间都有一种依赖关系。间都有一种依赖关系。n由于一个由于一个SNOSNO只对应一个学生,而一个学生只能属于一个只对应一个学生,而一个学生只能属于一个系,所以当系,所以当SNOSNO的值确定之后,的值确定之后,SNSN,AGE

24、AGE,DEPTDEPT的值也随的值也随之被唯一的确定了。之被唯一的确定了。n这类似于变量之间的这类似于变量之间的单值函数关系单值函数关系。设单值函数。设单值函数Y=F(X)Y=F(X),自变量自变量X X的值可以决定一个唯一的函数值的值可以决定一个唯一的函数值Y Y。n在这里,我们说在这里,我们说SNOSNO决定函数(决定函数(SNSN,AGEAGE,DEPTDEPT),或者),或者说(说(SNSN,AGEAGE,DEPTDEPT)函数依赖于)函数依赖于SNOSNO。函数依赖的形式化定义函数依赖的形式化定义定义定义6.1 设设R(U)是一个属性集是一个属性集U上的关系模式,上的关系模式,X和

25、和Y是是U的的子集。子集。 若对于若对于R(U)的的任意任意一个可能的关系一个可能的关系r,r中不可能存在两个中不可能存在两个元组在元组在X上的属性值相等,上的属性值相等, 而在而在Y上的属性值不等,上的属性值不等, 则称则称 “X函数确定函数确定Y” 或或 “Y函数依赖于函数依赖于X”,记作,记作XY。 例如:例如:n对于关系模式对于关系模式SCDSCDnU=SNO,SN,AGE,DEPT,MN,CNO,SCOREU=SNO,SN,AGE,DEPT,MN,CNO,SCOREnF=SNOSNF=SNOSN,SNOAGESNOAGE,SNODEPTSNODEPTn一个一个SNOSNO有多个有多个

26、SCORESCORE的值与其对应,因此的值与其对应,因此SCORESCORE不能唯一地确定,即不能唯一地确定,即SCORESCORE不能函数依不能函数依赖于赖于SNOSNO,所以有:,所以有: SNO SCORESNO SCORE。n但是但是SCORESCORE可以被(可以被(SNOSNO,CNOCNO)唯一地确定。)唯一地确定。所以可表示为:(所以可表示为:(SNOSNO,CNOCNO)SCORESCORE。1.1.函数依赖是语义范畴的概念。函数依赖是语义范畴的概念。n我们只能根据语义来确定一个函数依赖,而不我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否能按

27、照其形式化定义来证明一个函数依赖是否成立。成立。n例如,对于关系模式例如,对于关系模式S S,当学生不存在重名的情,当学生不存在重名的情况下,可以得到:况下,可以得到:nSNAGESNAGEnSNDEPTSNDEPTn这种函数依赖关系,必须是在没有重名的学生这种函数依赖关系,必须是在没有重名的学生条件下才成立的,否则就不存在函数依赖了。条件下才成立的,否则就不存在函数依赖了。n所以函数依赖反映了一种语义完整性约束。所以函数依赖反映了一种语义完整性约束。 有关函数依赖的说明:有关函数依赖的说明:有关函数依赖的说明:有关函数依赖的说明:2.2.函数依赖与属性之间的联系类型有关。函数依赖与属性之间的

28、联系类型有关。n(1 1)在一个关系模式中,如果属性)在一个关系模式中,如果属性X X与与Y Y有有1:11:1联系时,则联系时,则存在函数依赖存在函数依赖XYXY,YXYX,即,即X YX Y。n 例如,当学生无重名时,例如,当学生无重名时,SNO SNSNO SN。n(2 2)如果属性)如果属性X X与与Y Y有有m:1m:1的联系时,则只存在函数依赖的联系时,则只存在函数依赖XYXY。n 例如,例如,SNOSNO与与AGEAGE,DEPTDEPT之间均为之间均为1:m1:m联系,所以有联系,所以有SNOAGESNOAGE,SNODEPTSNODEPT。n(3 3)如果属性)如果属性X X

29、与与Y Y有有m: nm: n的联系时,则的联系时,则X X与与Y Y之间不存在任之间不存在任何函数依赖关系。何函数依赖关系。n 例如,一个学生可以选修多门课程,一门课程又可以例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以为多个学生选修,所以SNOSNO与与CNOCNO之间不存在函数依赖关系之间不存在函数依赖关系n可从属性间的联系类型来分析属性间的函数依赖可从属性间的联系类型来分析属性间的函数依赖 有关函数依赖的说明:有关函数依赖的说明:3.3.函数依赖关系的存在与时间无关。函数依赖关系的存在与时间无关。n因为函数依赖是指关系中的所有元组应该满足的约束条因为函数依赖是指关系

30、中的所有元组应该满足的约束条件,而不是指关系中某个或某些元组所满足的约束条件。件,而不是指关系中某个或某些元组所满足的约束条件。n当关系中的元组增加、删除或更新后都不能破坏这种函当关系中的元组增加、删除或更新后都不能破坏这种函数依赖。数依赖。n因此,必须根据语义来确定属性之间的函数依赖,而不因此,必须根据语义来确定属性之间的函数依赖,而不能单凭某一时刻关系中的实际数据值来判断。能单凭某一时刻关系中的实际数据值来判断。n例如,对于关系模式例如,对于关系模式S,假设没有给出无重名的学生这种语义规,假设没有给出无重名的学生这种语义规定,则即使当前关系中没有重名的记录,也只能存在函数依赖定,则即使当前

31、关系中没有重名的记录,也只能存在函数依赖SNOSN,而不能存在函数依赖,而不能存在函数依赖SNSNO,因为如果新增加一,因为如果新增加一个重名的学生,函数依赖个重名的学生,函数依赖SNSNO必然不成立。必然不成立。有关函数依赖的说明:有关函数依赖的说明:4.4.函数依赖可以保证关系分解的无损连接性。函数依赖可以保证关系分解的无损连接性。n设设R R(X X,Y Y,Z Z),),X X,Y Y,Z Z为不相交的属性集合,为不相交的属性集合,如果如果XYXY或或XZ,XZ,则有则有R(XR(X,Y Y,Z)=RXZ)=RX,YY* *RXRX,ZZ,n其中,其中,RXRX,YY表示关系表示关系R

32、 R在属性(在属性(X X,Y Y)上的投)上的投影,即影,即R R等于其投影在等于其投影在X X上的自然连接,这样便保上的自然连接,这样便保证了关系证了关系R R分解后不会丢失原有的信息,称作分解后不会丢失原有的信息,称作关关系分解的无损连接性系分解的无损连接性。n例如,对于关系模式例如,对于关系模式SCDSCD,SCDSCD(SNOSNO,SNSN,AGEAGE,DEPTDEPT,MNMN,CNOCNO,SCORESCORE)n假设假设SNOSNO(SNSN,AGEAGE,DEPTDEPT,MNMN),), 那么那么SCD=SCDSNOSCD=SCDSNO,SNSN,AGEAGE,DEPT

33、DEPT,MNMN* *SCDSNOSCDSNO,CNOCNO,SCORESCORE,也就是说,用其投影在,也就是说,用其投影在SNOSNO上的自上的自然连接可复原关系模式然连接可复原关系模式SCDSCD。n这一性质非常重要,在这一性质非常重要,在关系规范化关系规范化中要用到。中要用到。u平凡/非平凡的函数依赖u完全/部分函数依赖u传递函数依赖二、平凡函数依赖与非平凡函数依赖二、平凡函数依赖与非平凡函数依赖在关系模式在关系模式R(U)中,对于中,对于U的子集的子集X和和Y,如果如果XY,但,但Y X,则称,则称XY是非平凡的函数依赖是非平凡的函数依赖若若XY,但,但Y X, 则称则称XY是是平

34、凡的函数依赖平凡的函数依赖n例:在关系例:在关系SC(Sno, Cno, Grade)中,中, 非平凡函数依赖:非平凡函数依赖: (Sno, Cno) Grade 平凡函数依赖:平凡函数依赖: (Sno, Cno) Sno (Sno, Cno) CnoAn Introduction to Database System平凡函数依赖与非平凡函数依赖(续)平凡函数依赖与非平凡函数依赖(续)n若若XY,则,则X称为这个函数依赖的决定属性称为这个函数依赖的决定属性组,也称为决定因素(组,也称为决定因素(Determinant)。)。n若若XY,YX,则记作,则记作XY。n若若Y不函数依赖于不函数依赖于

35、X,则记作,则记作XY。三、完全函数依赖与部分函数依赖三、完全函数依赖与部分函数依赖定义定义6.2 在在R(U)中,如果中,如果XY,并且对于,并且对于X的任何一个的任何一个真子集真子集X,都有,都有X Y, 则称则称Y对对X完全函数依赖完全函数依赖,记作,记作 X F Y。 若若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y对对X部分函数部分函数依赖依赖,记作,记作X P Y。 n传递函数依赖传递函数依赖:在R(U)中,如果XY,Y Z,且Y X,Y X,则称Z对X传递函数依赖。 n如果如果YXYX,则,则X YX Y,这时称,这时称Z Z对对X X直接函数依赖直接函数依赖,

36、而不是传递函数依赖。而不是传递函数依赖。n例如,在关系模式例如,在关系模式SCDSCD中,中,SNODEPTSNODEPT,但,但DEPT DEPT SNOSNO,而,而DEPTMNDEPTMN,则有,则有SNO MNSNO MN。n当学生不存在重名的情况下,有当学生不存在重名的情况下,有SNOSNSNOSN,SNSNOSNSNO,SNO SNSNO SN, SNODEPT,SNODEPT,则则SNDEPTSNDEPT,这时这时DEPTDEPT对对SNSN是是直接函数依赖直接函数依赖,而不是传递函数,而不是传递函数依赖。依赖。 tn综上所述,函数依赖分为综上所述,函数依赖分为完全函数依赖完全函

37、数依赖、部部分函数依赖分函数依赖和和传递函数依赖传递函数依赖三类,它们是规三类,它们是规范化理论的依据和规范化程度的准则范化理论的依据和规范化程度的准则范式范式n规范化的规范化的基本思想基本思想是消除关系模式中的数据冗余,消除数据是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除时发生异常现依赖中的不合适的部分,解决数据插入、删除时发生异常现象。象。n这就要求关系数据库设计出来的关系模式要满足一定的条件。这就要求关系数据库设计出来的关系模式要满足一定的条件。n我们把关系数据库的规范化过程中为不同程度的规范化要求我们把关系数据库的规范化过程中为不同程度的规范化要求设立的

38、不同标准称为设立的不同标准称为范式范式(Normal FormNormal Form)。)。n由于规范化的程度不同,就产生了由于规范化的程度不同,就产生了不同的范式不同的范式。n满足最基本规范化要求的关系模式叫满足最基本规范化要求的关系模式叫第一范式第一范式,n在第一范式中进一步满足一些要求为在第一范式中进一步满足一些要求为第二范式第二范式,n以此类推就产生了以此类推就产生了第三范式第三范式等概念。等概念。n范式的概念最早由范式的概念最早由E.F.CoddE.F.Codd提出。提出。n从从19711971年起,年起,CoddCodd相继提出了关系的三级规范化形相继提出了关系的三级规范化形式,即

39、第一范式(式,即第一范式(1NF1NF)、第二范式()、第二范式(2NF2NF)、第三)、第三范式(范式(3NF3NF)。)。n19741974年,年,CoddCodd和和BoyceBoyce以共同提出了一个新的范式以共同提出了一个新的范式的概念,即的概念,即Boyce-CoddBoyce-Codd范式,简称范式,简称BCBC范式。范式。n19761976年年FaginFagin提出了第四范式,后来又有人定义了提出了第四范式,后来又有人定义了第五范式。第五范式。n至此在关系数据库规范中建立了一个范式系列:至此在关系数据库规范中建立了一个范式系列:1NF,2NF,3NF,BCNF,4NF,5NF

40、,1NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格一级比一级有更严格的要求。的要求。范式之间的关系范式之间的关系n各个范式之间的联系可以表示为:各个范式之间的联系可以表示为:n5NF 4NF BCNF 3NF 2NF 1NF5NF 4NF BCNF 3NF 2NF 1NF第一范式第一范式n第一范式第一范式(First Normal Form)是最基本是最基本的规范形式,即关系中每个属性都是不可再的规范形式,即关系中每个属性都是不可再分的简单项。分的简单项。n定义定义8 8 如果关系模式如果关系模式R R,其所有的属性均为,其所有的属性均为简单属性,即每个属性都城是不可再分的

41、,简单属性,即每个属性都城是不可再分的,则称则称R R属于第一范式,简称属于第一范式,简称1NF1NF,记作,记作R R 1NF1NF。n在非规范化的关系中去掉组合项就能化成规范化的在非规范化的关系中去掉组合项就能化成规范化的关系。关系。每个规范化的关系都属于每个规范化的关系都属于1NF1NF,这也是它之,这也是它之所以称为所以称为“第一第一”的原因。的原因。n本章开头给出的关系模式本章开头给出的关系模式SCDSCD属于第一范式,但其属于第一范式,但其具有大量的数据冗余,具有插入异常、删除异常、具有大量的数据冗余,具有插入异常、删除异常、更新异常等弊端。更新异常等弊端。n为什么会存在这种问题呢

42、?为什么会存在这种问题呢?n让我们分析一下让我们分析一下SCDSCD中的函数依赖关系,它的主关中的函数依赖关系,它的主关系键是(系键是(SNOSNO,CNOCNO)的属性组合,所以有:)的属性组合,所以有: n(SNOSNO,CNOCNO) SCORESCOREnSNOSNSNOSN,(,(SNOSNO,CNOCNO) SNSNnSNOAGESNOAGE,(,(SNOSNO,CNOCNO) AGEAGEnSNODEPTSNODEPT,(,(SNOSNO,CNOCNO) DEPTDEPTnSNO MNSNO MN,(,(SNOSNO,CNOCNO) MN MN fppppt在在SCD中,既存在完

43、全函数依赖,又存在部分函数中,既存在完全函数依赖,又存在部分函数依赖和传递函数依赖。这种情况往往在数据库中是依赖和传递函数依赖。这种情况往往在数据库中是不允许的,也正是由于关系中存在着复杂的函数依不允许的,也正是由于关系中存在着复杂的函数依赖,才导致数据操作中出现了种弊端。赖,才导致数据操作中出现了种弊端。第二范式第二范式n定义定义9 9 如果关系模式如果关系模式R R 1NF1NF,且每个,且每个非主属非主属性性都完全函数依赖于都完全函数依赖于R R的每个关系键,则称的每个关系键,则称R R属于属于第二范式第二范式(Second Normal Form),简称简称2NF2NF,记作,记作R

44、R 2NF2NF。n在关系模式在关系模式SCDSCD中,中,SNOSNO,CNOCNO为主属性,为主属性,AGEAGE,DEPTDEPT,MNMN,MNMN,SCORESCORE均为非主属性,经上述均为非主属性,经上述分析,存在非主属性对关系键的部分函数依分析,存在非主属性对关系键的部分函数依赖,所以赖,所以SCDSCD 2NF2NF。nS S的关系键为的关系键为SNOSNO,D D的关系键为的关系键为DEPTDEPT,都是单属性,不可能存在部分函,都是单属性,不可能存在部分函数依赖。数依赖。n而对于而对于SCSC,(,(SNOSNO,CNOCNO) SCORESCORE。所以。所以SCDSC

45、D分解后,消除了非主属分解后,消除了非主属性对关系键的部分函数依赖,性对关系键的部分函数依赖,S S,D D,SCSC均属于均属于2NF2NF。 SNOSNOSNSNAGEAGEDEPTDEPTS1S1赵亦赵亦1717计算机计算机S2S2钱尔钱尔1818信息信息S3S3孙珊孙珊2020信息信息S4S4李思李思2121自动化自动化DEPTDEPTMNMN计算机计算机刘伟刘伟信息信息王平王平自动化自动化刘向刘向SNOSNOCNOCNOSCORESCORES1S1C1C19090S1S1C2C28585S2S2C5C55757S2S2C6C68080S2S2C7C7S2S2C5C57070S3S3C

46、1C10 0S3S3C2C27070S3S3C4C48585S4S4C1C19393 f第二范式第二范式n讲述全码的概念时给出的关系模式讲述全码的概念时给出的关系模式TCSTCS(T T,C C,S S),),n一个教师可以讲授多门课程,一门课程可以为多一个教师可以讲授多门课程,一门课程可以为多个教师讲授,个教师讲授,n同样一个学生可以选听多门课程,一门课程可以同样一个学生可以选听多门课程,一门课程可以为多个学生选听,为多个学生选听,n(T,C,S)(T,C,S)三个属性的组合是关系键,三个属性的组合是关系键,T,C,ST,C,S都是主都是主属性,而无非主属性,所以也就不可能存在非主属性,而无

47、非主属性,所以也就不可能存在非主属性对关系键的部分函数依赖,属性对关系键的部分函数依赖,TCSTCS 2NF2NF。第二范式第二范式n经以上分析,可以得到两个结论:经以上分析,可以得到两个结论:n1 1从从1NF1NF关系中消除非主属性对关系键的部分函关系中消除非主属性对关系键的部分函数依赖,则可得到数依赖,则可得到2NF2NF关系。关系。n2 2如果如果R R的关系键为单属性,或的关系键为单属性,或R R的全体属性均的全体属性均为主属性,则为主属性,则R R 2NF2NF。2NF2NF规范化规范化n2NF2NF规范化是指把规范化是指把1NF1NF关系模式通过投影分解转换成关系模式通过投影分解

48、转换成2NF2NF关关系模式的集合。系模式的集合。n分解时遵循的基本原则就是分解时遵循的基本原则就是“一事一地一事一地”,让一个关系只,让一个关系只描述一个实体或者实体间的联系。如果多于一个实体或联描述一个实体或者实体间的联系。如果多于一个实体或联系,则进行投影分解。系,则进行投影分解。n下面以关系模式下面以关系模式SCDSCD为例,来说明为例,来说明2NF2NF规范化的过程规范化的过程例例 将将SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)规范到规范到2NF2NF。n由由SNOSNSNOSN,SNOAGES

49、NOAGE,SNODEPTSNODEPT,(,(SNOSNO,CNOCNO) SCORESCORE,可,可以判断,关系以判断,关系SCDSCD至少描述了两个实体,至少描述了两个实体,n一个为学生实体,属性有一个为学生实体,属性有SNOSNO、SNSN、AGEAGE、DEPTDEPT、MNMN;n另一个是学生与课程的联系(选课),属性有另一个是学生与课程的联系(选课),属性有SNOSNO、CNOCNO和和SCORESCORE。 fnSD(SNO,SN,AGE,DEPTSD(SNO,SN,AGE,DEPT,MN)MN),描述学生实体;,描述学生实体;nSC(SNO,CNO,SCORE)SC(SNO

50、,CNO,SCORE),描述学生与课程的联系。,描述学生与课程的联系。nSDSD SNOSNAGEDEPTMNS1赵亦17计算机刘伟S2钱尔18信息王平S3孙珊20信息王平S4李思21自动化刘向SCSCSNOCNOSCORES1C190S1C285S2C557S2C680S2C7 S2C570S3C10S3C270S3C485S4C193关系SD和SC n对于分解后的两个关系对于分解后的两个关系SDSD和和SCSC,主键分别为,主键分别为SNOSNO和(和(SNOSNO,CNOCNO),非主属性对主键完全函数依赖。因此,),非主属性对主键完全函数依赖。因此,SDSD 2NF2NF,SCSC 2

51、NF2NF,而且前面已经讨论,而且前面已经讨论,SCDSCD的这种分解没有丢失任的这种分解没有丢失任何信息,具有无损连接性。何信息,具有无损连接性。n分解后,分解后,SDSD和和SCSC的函数依赖分别如图的函数依赖分别如图1 1和和2 2所示。所示。 SNOSNSNOCNOSCOREAGEDEPTMN图图1 SD1 SD中的函数依赖关系中的函数依赖关系 图图2 SC2 SC中的函数依赖关系中的函数依赖关系2NF2NF规范化作规范化作形式化的描述形式化的描述n设关系模式设关系模式R R(X,Y,ZX,Y,Z),),R R 1NF1NF,但,但R R 2NF2NF,其,其中,中,X X是是键属性键

52、属性,Y Y,Z Z是是非键属性非键属性,且存在部分,且存在部分函数依赖,函数依赖,X X Y Y。设。设X X可表示为可表示为X1X1、X2X2,其中,其中X1 YX1 Y。则。则R R(X X,Y Y,Z Z)可以分解为)可以分解为RX1RX1,YY和和RXRX,ZZ。n因为因为X1YX1Y,所以,所以R(XR(X,Y Y,Z)=RX1Z)=RX1,YY* *RX1RX1,X2X2,Z=RX1Z=RX1,YY* *RXRX,ZZ,即,即R R等于其投影等于其投影RX1RX1,YY和和XX,ZZ在在X1X1上的上的自然连接自然连接,R R的分解的分解具有具有无损连接性无损连接性。pf2NF2

53、NF的缺点的缺点n2NF2NF的关系模式在进行数据操作时,仍然存在着一些问题:的关系模式在进行数据操作时,仍然存在着一些问题:n1 1数据冗余。每个系名和系主任的名字存储的次数等于该系的学生数据冗余。每个系名和系主任的名字存储的次数等于该系的学生人数。人数。n2 2插入异常。当一个新系没有招生时,有关该系的信息无法插入。插入异常。当一个新系没有招生时,有关该系的信息无法插入。n3 3删除异常。某系学生全部毕业而没有招生时,删除全部学生的记删除异常。某系学生全部毕业而没有招生时,删除全部学生的记录也随之删除了该系的有关信息。录也随之删除了该系的有关信息。n4 4更新异常。更换系主任时,仍需改动较

54、多的学生记录。更新异常。更换系主任时,仍需改动较多的学生记录。n之所以存在这些问题,是由于在之所以存在这些问题,是由于在SCDSCD中存在着中存在着非主属性对主非主属性对主键的传递依赖键的传递依赖。n分析分析SCDSCD中的函数依赖关系,中的函数依赖关系,SNOSNSNOSN,SNOAGESNOAGE,SNODEPTSNODEPT,DEPTMNDEPTMN,SNO MNSNO MN,非主属性,非主属性MNMN对主键对主键SNOSNO传递依赖。传递依赖。 t第三范式第三范式定义定义1010 如果关系模式如果关系模式R R 2NF2NF,且每个非主属性都不,且每个非主属性都不传递依赖于传递依赖于R

55、 R的每个关系键,则称的每个关系键,则称R R属于第三范式属于第三范式(Third Normal Form),简称,简称3NF3NF,记作,记作R R 3NF3NF。n第三范式具有如下性质:第三范式具有如下性质:1 1如果如果R R 3NF3NF,则,则R R也是也是2NF2NF。2. 2. 如果如果R R 2NF2NF,则,则R R不一定是不一定是3NF3NF。n例如,我们前面由关系模式例如,我们前面由关系模式SCDSCD分解而得到的分解而得到的SDSD和和SCSC都为都为2NF2NF,其中,其中,SCSC 3NF3NF,但在,但在SDSD中存在着非主属性中存在着非主属性MNMN对主键对主键

56、SNOSNO传递依赖,传递依赖,SD3NFSD3NF。对于。对于SDSD,应该进一步进行分解,应该进一步进行分解,使其转换成使其转换成3NF3NF。3NF3NF规范化规范化n3NF3NF规范化规范化是指把是指把2NF2NF关系模式通过投影分解转换成关系模式通过投影分解转换成3NF3NF关系关系模式的集合。模式的集合。n和和2NF2NF的规范化时遵循的原则相同,即的规范化时遵循的原则相同,即“一事一地一事一地”,让一,让一个关系只描述一个实体或者实体间的联系。个关系只描述一个实体或者实体间的联系。n将将SD(SNO,SN,AGE,DEPT,MN)SD(SNO,SN,AGE,DEPT,MN)规范到

57、规范到3NF3NF。n 分析SD的属性组成,可以判断,关系SD实际上描述了两个实体:n 一个为学生实体,属性有SNO,SN,AGE,DEPT;n 另一个是系的实体,其属性DEPT和MN。S DDEPTMN计算机刘伟信息王平自动化刘向SNOSNAGEDEPTS1赵亦17计算机S2钱尔18信息S3孙珊20信息S4李思21自动化对于分解后的两个关系S和D,主键分别为SNO和DEPT,不存在非主属性对主键的传递函数依赖。因此,S3NF,D3NF。关系关系S S和和D DBC范式n3NF只限制了非主属性对键的依赖关系,而没有限制主属性对键的依赖关系。n如果发生了这种依赖,仍有可能存在数据冗余、插入异常、

58、删除异常和修改异常。n这时,则需对3NF进一步规范化,消除主属性对键的依赖关系,为了解决这种问题,Boyce与Codd共同提出了一个新范式的定义,这就是Boyce-Codd范式,通常简称BCNF或BC范式。它弥补了3NF的不足BCBC范式的定义和性质范式的定义和性质定义定义1111 如果关系模式如果关系模式R R 1NF1NF,且所有的函数依,且所有的函数依赖赖XYXY(Y XY X), ,决定因素决定因素X X都包含了都包含了R R的一个的一个候选键,则称候选键,则称R R属于属于BCBC范式范式(Boyce-Codd Normal Form),记作,记作R R BCNFBCNF。BCNFB

59、CNF具有如下性质:具有如下性质:n1 1满足满足BCNFBCNF的关系将消除任何属性(主属性或非主的关系将消除任何属性(主属性或非主属性)对键的部分函数依赖和传递函数依赖。也就属性)对键的部分函数依赖和传递函数依赖。也就是说,如果是说,如果R R BCNFBCNF,则,则R R也是也是3NF3NF。BC范式的定义和性质范式的定义和性质2 2如果如果R R 3NF3NF,则,则R R不一定是不一定是BCNFBCNF。n现举例说明。设关系模式现举例说明。设关系模式SNCSNC(SNOSNO,SNSN,CN0CN0,SCORESCORE),),其中其中SNOSNO代表学号,代表学号,SNSN代表学

60、生姓名并假设没有重名,代表学生姓名并假设没有重名,CNOCNO代表课程号,代表课程号,SCORESCORE代表成绩。可以判定,代表成绩。可以判定,SNCSNC有两个有两个候选键(候选键(SNOSNO,CNOCNO)和()和(SNSN,CNOCNO),其函数依赖如下:),其函数依赖如下:n SNO SNSNO SNn(SNOSNO,CNOCNO)SCORESCOREn(SNSN,CNOCNO)SCORESCORE。n但是,存在着主属性对键的部分函数依赖:但是,存在着主属性对键的部分函数依赖: (SNOSNO,CNOCNO) SNSN,(,(SNSN,CNOCNO) SNOSNO,所以,所以SNC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论