《关系数据库的规范化设计.ppt》由会员分享,可在线阅读,更多相关《关系数据库的规范化设计.ppt(105页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第5章章 关系数据关系数据库库的的 规范化设计规范化设计本章概要本章概要前面已经讲述了前面已经讲述了关系数据库关系数据库、关系模型关系模型的基本概念以及关系数据的基本概念以及关系数据库的库的标准语言标准语言。如何使用关系模型设计关系数据库,也就是面对一个现实问题,如何使用关系模型设计关系数据库,也就是面对一个现实问题,如何选择一个比较好的关系模式的集合,每个关系又应该由哪些如何选择一个比较好的关系模式的集合,每个关系又应该由哪些属性组成。这属于数据库设计的问题,确切地讲是数据库属性组成。这属于数据库设计的问题,确切地讲是数据库逻辑设逻辑设计计的问题,有关数据库设计的全过程将在后续章节详细讨论
2、的问题,有关数据库设计的全过程将在后续章节详细讨论本章讲述本章讲述关系数据库规范化理论关系数据库规范化理论,这是数据库逻辑设计的理论依,这是数据库逻辑设计的理论依据。据。n要求了解规范化理论的研究动机及其在数据库设计中的作用要求了解规范化理论的研究动机及其在数据库设计中的作用n掌握函数依赖的有关概念,掌握函数依赖的有关概念,n第一范式、第二范式、第三范式的定义,第一范式、第二范式、第三范式的定义,n重点掌握并能够灵活运用关系模式规范化的方法和关系模式重点掌握并能够灵活运用关系模式规范化的方法和关系模式分解的方法,这也是本章的难点。分解的方法,这也是本章的难点。5.1 5.1 规范化问题的提出规
3、范化问题的提出5.1.1 5.1.1 规范化理论的主要内容规范化理论的主要内容n关关系系数数据据库库的的规规范范化化理理论论最最早早是是由由关关系系数数据据库库的创始人的创始人E.F.CoddE.F.Codd提出的提出的n在在该该理理论论出出现现以以前前,层层次次和和网网状状数数据据库库的的设设计计只只是是遵遵循循其其模模型型本本身身固固有有的的原原则则,而而无无具具体体的的理理论论依依据据可可言言,因因而而带带有有盲盲目目性性,可可能能在在以以后后的运行和使用中发生许多预想不到的问题。的运行和使用中发生许多预想不到的问题。n在在关关系系数数据据库库系系统统中中,关关系系模模型型包包括括一一组
4、组关关系系模模式式,各各个个关关系系不不是是完完全全孤孤立立的的,数数据据库库的的设设计较层次和网状模型更为重要计较层次和网状模型更为重要如何设计一个适合的关系数据库系统,关键如何设计一个适合的关系数据库系统,关键是关系数据库是关系数据库模式模式的设计,一个好的关系数的设计,一个好的关系数据库模式应该包括多少据库模式应该包括多少关系模式关系模式,而每一个,而每一个关系模式又应该包括哪些关系模式又应该包括哪些属性属性,又如何将这,又如何将这些相互关联的关系模式组建一个适合的些相互关联的关系模式组建一个适合的关系关系模型模型,这些工作决定了到整个系统运行的效,这些工作决定了到整个系统运行的效率,也
5、是系统成败的关键所在,所以必须在率,也是系统成败的关键所在,所以必须在关系数据库的关系数据库的规范化理论规范化理论的指导下逐步完成的指导下逐步完成 n关系数据库的规范化理论主要包括三个方面的内容关系数据库的规范化理论主要包括三个方面的内容:函数函数依依赖赖范式范式(Normal FormNormal Form)模式设计模式设计n其其中中,函函数数依依赖赖起起着着核核心心的的作作用用,是是模模式式分分解解和和模式设计的基础,范式是模式分解的标准。模式设计的基础,范式是模式分解的标准。5.1.2 5.1.2 关系模式的存储异常问题关系模式的存储异常问题n数据库的逻辑设计为什么要遵循一定的规范化理论
6、?数据库的逻辑设计为什么要遵循一定的规范化理论?n什么是好的关系模式?什么是好的关系模式?n某些不好的关系模式可能导致哪些问题?某些不好的关系模式可能导致哪些问题?n下面通过例子进行分析下面通过例子进行分析:例如例如要求设计要求设计教学管理数据库教学管理数据库,其关系模式,其关系模式SCDSCD如下:如下:SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)n其其中中,SNOSNO表表示示学学生生学学号号,SNSN表表示示学学生生姓姓名名,AGEAGE表表示示学学生生年年龄龄,DEPTDEPT表表示示学学生生所所在
7、在的的系系别别,MNMN表表示示系系主任姓名,主任姓名,CNOCNO表示课程号,表示课程号,SCORESCORE表示成绩。表示成绩。根据实际情况,这些数据有如下语义规定:根据实际情况,这些数据有如下语义规定:一个系有若干个学生,但一个学生只属于一个系;一个系有若干个学生,但一个学生只属于一个系;一一个个系系只只有有一一名名系系主主任任,但但一一个个系系主主任任可可以以同同时时兼几个系的系主任;兼几个系的系主任;一一个个学学生生可可以以选选修修多多门门功功课课,每每门门课课程程可可有有若若干干学生选修学生选修每个学生学习课程有一个成绩每个学生学习课程有一个成绩图图5.1 5.1 关系关系SCDS
8、CDSNOSNOSNSNAGEAGEDEPTDEPTMNMNCNOCNOSCORESCORES1赵亦17计算机刘伟C190S1赵亦17计算机刘伟C285S2钱尔18信息王平C557S2钱尔18信息王平C680S2钱尔18信息王平C770S2钱尔18信息王平C570S3孙珊20信息王平C10S3孙珊20信息王平C270S3孙珊20信息王平C485S4李思男自动化刘伟C193根根据据上上述述的的语语义义规规定定,并并分分析析以以上上关关系系中中的的数数据据,我我们们可可以以看看出出:(SNO,CNO)属属性性的的组组合合能能唯唯一一标标识识一一个个元元组组,所所以以(SNO,CNO)是是该该关关系
9、系模模式式的的主主关关系系键键。但但在在进进行行数数据据库库的的操操作作时时,会会出出现现以以下下几几方方面的问题。面的问题。1.1.数数据据冗冗余余。每每个个系系名名和和系系主主任任的的名名字字存存储储的的次次数数等等于于该该系系的的学学生生人人数数乘乘以以每每个个学学生生选选修修的的课课程程门门数数,同同时时学学生生的的姓姓名名、年年龄龄也也都都要要重重复复存存储储多多次次,数数据据的的冗冗余余度度很很大大,浪费了存储空间。浪费了存储空间。2.2.插插入入异异常常。如如果果某某个个新新系系没没有有招招生生,尚尚无无学学生生时时,则则系系名名和和系系主主任任的的信信息息无无法法插插入入到数据
10、库中。到数据库中。v因因为为在在这这个个关关系系模模式式中中,(SNO,CNO)是是主主关关系系键键。根根据据关关系系的的实实体体完完整整性性约约束束,主主关关系系键键的的值值不不能能为为空空,而而这这时时没没有有学学生生,SNOSNO和和CNOCNO均均无无值,因此不能进行插入操作值,因此不能进行插入操作。v另另外外,当当某某个个学学生生尚尚未未选选课课,即即CNOCNO未未知知,实实体体完完整整性性约约束束还还规规定定,主主关关系系键键的的值值不不能能部部分分为空,同样不能进行插入操作为空,同样不能进行插入操作3.3.删除异常删除异常某某系系学学生生全全部部毕毕业业而而没没有有招招生生时时
11、,删删除除全全部部学学生生的的记记录录则则系系名名、系系主主任任也也随随之之删删除除,而而这这个个系系依依然然存存在在,在在数数据据库库中中却无法找到该系的信息。却无法找到该系的信息。另另外外,如如果果某某个个学学生生不不再再选选修修C1C1课课程程,本本应应该该只只删删去去C1C1,但但C1C1是是主主关关系系键键的的一一部部分分,为为保保证证实实体体完完整整性性,必必须须将将整整个个元组一起删掉,这样,有关该学生的其它信息也随之丢失。元组一起删掉,这样,有关该学生的其它信息也随之丢失。4.4.更新异常更新异常如果学生改名,则该学生的所有记录都要逐一修改如果学生改名,则该学生的所有记录都要逐
12、一修改SNSN;又又如如某某系系更更换换系系主主任任,则则属属于于该该系系的的学学生生记记录录都都要要修修改改MNMN的的内内容容,稍稍有有不不慎慎,就就有有可可能能漏漏改改某某些些记记录录,这这就就会会造造成成数数据的不一致性,破坏了数据的完整性。据的不一致性,破坏了数据的完整性。v由由于于存存在在以以上上问问题题,我我们们说说,SCDSCD是是一一个个不不好好的的关关系系模模式式。产产生生上上述述问问题题的的原原因因,直直观观地地说说,是是因因为为关关系系中中“包包罗罗万象万象”,内容太杂了。,内容太杂了。v那么,怎样才能得到一个好的关系模式呢?那么,怎样才能得到一个好的关系模式呢?v我我
13、们们把把关关系系模模式式SCDSCD分分解解为为下下面面三三个个结结构构简简单单的的关关系系模模式式,如图如图5.25.2所示。所示。学生关系学生关系 S (SNO,SN,AGE,DEPT)S (SNO,SN,AGE,DEPT)选课关系选课关系 SC(SNO,CNO,SCORE)SC(SNO,CNO,SCORE)系关系系关系 D (DEPT,MN)D (DEPT,MN)S SCS SCS SCS SCSNOSNOSNSNAGEAGEDEPTDEPTSNOSNOCNOCNOSCORESCORES1赵亦17计算机S1S1C1C19090S2钱尔18信息S1C285S3孙珊20信息S2C557S4李
14、思21自动化S2C680S2C7D D D DS2C570DEPTDEPTMNMNS3C10计算机计算机刘伟刘伟S3C270信息信息王平王平S3C485自动化自动化刘伟刘伟S4C193图图5.2 5.2 分解后的关系模式分解后的关系模式 n在以上三个关系模式中,实现了信息的某在以上三个关系模式中,实现了信息的某种程度的分离种程度的分离S S中存储学生基本信息,与所选课程及系主任中存储学生基本信息,与所选课程及系主任无关;无关;D D中存储系的有关信息,与学生无关;中存储系的有关信息,与学生无关;SCSC中存储学生选课的信息,而与所学生及系中存储学生选课的信息,而与所学生及系的有关信息无关。的有
15、关信息无关。n与与SCDSCD相比,分解为三个关系模式后,数据的相比,分解为三个关系模式后,数据的冗余度明显降低。冗余度明显降低。当新插入一个系时,只要在关系当新插入一个系时,只要在关系D D中添加一条记中添加一条记录。录。当某个学生尚未选课,只要在关系当某个学生尚未选课,只要在关系S S中添加一条中添加一条学生记录,而与选课关系无关,这就避免了学生记录,而与选课关系无关,这就避免了插入插入异常异常。当一个系的学生全部毕业时,只需在当一个系的学生全部毕业时,只需在S S中删除该中删除该系的全部学生记录,而关系系的全部学生记录,而关系D D中有关该系的信息中有关该系的信息仍然保留,从而不会引起仍
16、然保留,从而不会引起删除异常删除异常。同时,由于数据冗余度的降低,数据没有重复存同时,由于数据冗余度的降低,数据没有重复存储,也不会引起储,也不会引起更新异常更新异常。n经经过过上上述述分分析析,我我们们说说分分解解后后的的关关系系模模式是一个好的关系数据库模式。式是一个好的关系数据库模式。n从从而而得得出出结结论论,一一个个好好的的关关系系模模式式应应该该具备以下四个条件:具备以下四个条件:1.1.尽可能少的数据冗余尽可能少的数据冗余。2.2.没有插入异常没有插入异常。3.3.没有删除异常没有删除异常。4.4.没有更新异常没有更新异常。v但但要要注注意意,一一个个好好的的关关系系模模式式并并
17、不不是是在在任任何何情情况况下下都都是是最优的最优的n比比如如查查询询某某个个学学生生选选修修课课程程名名及及所所在在系系的的系系主主任任时时,要要通通过过连连接接,而而连连接接所所需需要要的的系系统统开开销销非非常常大大,因因此此要以实际设计的目标出发进行设计要以实际设计的目标出发进行设计如何按照一定的规范设计关系模式,将结构复杂的关系如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把不好的关系数据库模式分解成结构简单的关系,从而把不好的关系数据库模式转变为好的关系数据库模式,这就是转变为好的关系数据库模式,这就是关系的规范化关系的规范化。我们要设计的关系模式中的各
18、属性是相互依赖、相互制我们要设计的关系模式中的各属性是相互依赖、相互制约的,这样才构成了一个结构严谨的整体。约的,这样才构成了一个结构严谨的整体。因此在设计关模式时,必须从语义上分析这些因此在设计关模式时,必须从语义上分析这些依赖关系依赖关系。数据库模式的好坏和关系中各属性间的依赖关系有关,数据库模式的好坏和关系中各属性间的依赖关系有关,因此,我们先讨论属性间的依赖关系,然后再讨论关系因此,我们先讨论属性间的依赖关系,然后再讨论关系规范化理论。规范化理论。5.2 5.2 函数依赖函数依赖5.2.15.2.1函数依赖的定义及性质函数依赖的定义及性质关关系系模模式式中中的的各各属属性性之之间间相相
19、互互依依赖赖、相相互互制制约约的的联联系称为系称为数据依赖数据依赖。数据依赖一般分为数据依赖一般分为函数依赖函数依赖、多值依赖多值依赖和和连接依赖连接依赖。其中其中,函数依赖函数依赖是最重要的数据依赖。是最重要的数据依赖。函函数数依依赖赖(Functional Functional DependencyDependency)是是关关系系模模式式中属性之间的一种中属性之间的一种逻辑依赖关系逻辑依赖关系。v例例如如在在上上一一节节介介绍绍的的关关系系模模式式SCDSCD中中,SNOSNO与与SNSN、AGEAGE、DEPTDEPT之间都有一种依赖关系。之间都有一种依赖关系。v由由于于一一个个SNO
20、SNO只只对对应应一一个个学学生生,而而一一个个学学生生只只能能属属于于一一个个系系,所所以以当当SNOSNO的的值值确确定定之之后后,SNSN,AGEAGE,DEPTDEPT的值也随之被唯一的确定了。的值也随之被唯一的确定了。v这这类类似似于于变变量量之之间间的的单单值值函函数数关关系系。设设单单值值函函数数Y=F(X)Y=F(X),自变量自变量X X的值可以决定一个唯一的函数值的值可以决定一个唯一的函数值Y Y。v在在这这里里,我我们们说说SNOSNO决决定定函函数数(SNSN,AGEAGE,DEPTDEPT),或者说(或者说(SNSN,AGEAGE,DEPTDEPT)函数依赖于函数依赖于
21、SNOSNO5.2 5.2 函数依赖函数依赖定定义义5.15.1设设关关系系模模式式R(UR(U,F)F),U U是是属属性性全全集集,F F是是U U上上的的函函数数依依赖赖集集,X X和和Y Y是是U U的的子子集集,如如果果对对于于R(U)R(U)的的任任意意一一个个可可能能的的关关系系r r,对对于于X X的的每每一一个个具具体体值值,Y Y都都有有唯唯一一的的具具体体值值与与之之对对应应,则则称称X X决决定定函函数数Y Y,或或Y Y函函数依赖于数依赖于X X,记作记作XYXY。我们称我们称X X为为决定因素决定因素,Y Y为为依赖因素依赖因素。当当Y Y不函数依赖于不函数依赖于X
22、 X时,记作:时,记作:X YX Y。当当XYXY且且YXYX时,则记作:时,则记作:X YX Y。5.2.1.15.2.1.1 函数依赖的定义函数依赖的定义v对于关系模式对于关系模式SCDSCDU=SNO,SN,AGE,DEPT,MN,CNO,SCOREU=SNO,SN,AGE,DEPT,MN,CNO,SCOREF=SNOSNF=SNOSN,SNOAGESNOAGE,SNODEPTSNODEPTv一一个个SNOSNO有有多多个个SCORESCORE的的值值与与其其对对应应,因因此此SCORESCORE不不能能唯唯一一地地确确定定,即即SCORESCORE不不能能函函数数依依赖赖于于SNOSN
23、O,所所以有:以有:SNO SCORESNO SCORE。v但是但是SCORESCORE可以被(可以被(SNOSNO,CNOCNO)唯一地确定。所以唯一地确定。所以可表示为:(可表示为:(SNOSNO,CNOCNO)SCORESCORE。函数依赖函数依赖检验:检验:AC?CA?ABD?辨识:辨识:n满足依赖的关系满足依赖的关系:依赖在模式的某个关系实例上成立:依赖在模式的某个关系实例上成立n模式上成立的依赖模式上成立的依赖:依赖在模式的所有关系实例上都:依赖在模式的所有关系实例上都成立成立ABCDa1b1c1d1a1b2c1d2a2b2c2d2a2b3c2d3a3b3c2d4ABC123423
24、533练习练习有关函数依赖的几点说明:有关函数依赖的几点说明:1 1平凡的函数依赖与非平凡的函数依赖平凡的函数依赖与非平凡的函数依赖。当当属属性性集集Y Y是是属属性性集集X X的的子子集集时时,则则必必然然存存在在着着函函数数依依赖赖XY,XY,这这种种类类型型的的函函数数依依赖赖称称为为平平凡凡的的函数依赖。函数依赖。如如果果Y Y不不是是X X的的子子集集,则则称称XYXY为为非非平平凡凡的的函函数数依赖。依赖。若若不不特特别别声声明明,我我们们讨讨论论的的都都是是非非平平凡凡的的函函数数依赖依赖2 2函数依赖是语义范畴的概念函数依赖是语义范畴的概念。我我们们只只能能根根据据语语义义来来
25、确确定定一一个个函函数数依依赖赖,而而不不能能按照其形式化定义来证明一个函数依赖是否成立。按照其形式化定义来证明一个函数依赖是否成立。例例如如,对对于于关关系系模模式式S S,当当学学生生不不存存在在重重名名的的情情况下,可以得到况下,可以得到:SNAGESNAGESNDEPTSNDEPT这种函数依赖关系,必须是在没有重名的学生条这种函数依赖关系,必须是在没有重名的学生条件下才成立的,否则就不存在函数依赖了。件下才成立的,否则就不存在函数依赖了。所以函数依赖反映了一种语义完整性约束所以函数依赖反映了一种语义完整性约束3 3函数依赖与属性之间的联系类型有关函数依赖与属性之间的联系类型有关。(1
26、1)在在一一个个关关系系模模式式中中,如如果果属属性性X X与与Y Y有有1:11:1联联系系时时,则则存存在在函函数数依依赖赖XYXY,YXYX,即即X YX Y。例如,当学生无重名时,例如,当学生无重名时,SNO SNSNO SN(2 2)如如果果属属性性X X与与Y Y有有1:m1:m的的联联系系时时,则则只只存存在函数依赖在函数依赖XYXY。例例如如,SNOSNO与与AGEAGE,DEPTDEPT之之间间均均为为1:m1:m联联系系,所所以以有有SNOAGESNOAGE,SNODEPTSNODEPT(3 3)如如果果属属性性X X与与Y Y有有m:m:n n的的联联系系时时,则则X X
27、与与Y Y之间不存在任何函数依赖关系。之间不存在任何函数依赖关系。例例如如,一一个个学学生生可可以以选选修修多多门门课课程程,一一门门课课程程又又可可以以为为多多个个学学生生选选修修,所所以以SNOSNO与与CNOCNO之之间间不存在函数依赖关系不存在函数依赖关系。v由于函数依赖与属性之间的联系类型有关,由于函数依赖与属性之间的联系类型有关,所以在确定属性间的函数依赖关系时,可所以在确定属性间的函数依赖关系时,可以从分析以从分析属性间的联系类型属性间的联系类型入手,便可确入手,便可确定属性间的函数依赖定属性间的函数依赖4 4函数依赖关系的存在与时间无关函数依赖关系的存在与时间无关。因为函数依赖
28、是指关系中的所有元组应该满足的约束因为函数依赖是指关系中的所有元组应该满足的约束条件,而不是指关系中某个或某些元组所满足的约束条件,而不是指关系中某个或某些元组所满足的约束条件。条件。当关系中的元组增加、删除或更新后都不能破坏这种当关系中的元组增加、删除或更新后都不能破坏这种函数依赖。函数依赖。因此,必须根据语义来确定属性之间的函数依赖,而因此,必须根据语义来确定属性之间的函数依赖,而不能单凭某一时刻关系中的实际数据值来判断。不能单凭某一时刻关系中的实际数据值来判断。例如,对于关系模式例如,对于关系模式S,假设没有给出无重名的学生这假设没有给出无重名的学生这种语义规定,则即使当前关系中没有重名
29、的记录,也种语义规定,则即使当前关系中没有重名的记录,也只能存在函数依赖只能存在函数依赖SNOSN,而不能存在函数依赖而不能存在函数依赖SNSNO,因为如果新增加一个重名的学生,函数依因为如果新增加一个重名的学生,函数依赖赖SNSNO必然不成立。必然不成立。所以函数依赖关系的存在所以函数依赖关系的存在与时间无关与时间无关,而只与数据之,而只与数据之间的间的语义规定语义规定有关。有关。5 5函数依赖可以保证关系分解的无损连接性函数依赖可以保证关系分解的无损连接性。设设R R(X X,Y Y,Z Z),X X,Y Y,Z Z为为不不相相交交的的属属性性集集合合,如如果果XYXY或或XZ,XZ,则有
30、则有R(XR(X,Y Y,Z)=RXZ)=RX,Y RXY RX,ZZ,其其中中,RXRX,YY表表示示关关系系R R在在属属性性(X X,Y Y)上上的的投投影影,即即R R等等于于其其投投影影在在X X上上的的自自然然连连接接,这这样样便便保保证证了了关关系系R R分分解解后不会丢失原有的信息,称作后不会丢失原有的信息,称作关系分解的无损连接性关系分解的无损连接性。例如,对于关系模式例如,对于关系模式SCDSCD,有有SNOSNO(SNSN,AGEAGE,DEPTDEPT,MNMN),),SCDSCD(SNOSNO,SNSN,AGEAGE,DEPTDEPT,MNMN,CNOCNO,SCOR
31、ESCORE)=SCDSNO=SCDSNO,SNSN,AGEAGE,DEPTDEPT,MN SCDSNOMN SCDSNO,CNOCNO,SCORESCORE,也就是说,用其投影在也就是说,用其投影在SNOSNO上的自然连接上的自然连接可复原关系模式可复原关系模式SCDSCD。这一性质非常重要,在后一节的这一性质非常重要,在后一节的关系规范化关系规范化中要用到。中要用到。5.2.1.2 5.2.1.2 函数依赖的基本性质函数依赖的基本性质1 1投影性投影性根根据据平平凡凡的的函函数数依依赖赖的的定定义义可可知知,一一组组属属性性函数决定它的所有子集函数决定它的所有子集例例如如,在在关关系系SC
32、DSCD中中,(SNOSNO,CNOCNO)SNOSNO和和(SNOSNO,CNOCNO)CNOCNO2 2扩张性扩张性若若XYXY且且WZWZ,则(则(X X,W W)(Y Y,Z Z)例例如如,SNOSNO(SNSN,AGEAGE),DEPTMNDEPTMN,则则有有(SNOSNO,DEPTDEPT)(SNSN,AGEAGE,MNMN)3 3合并性合并性若若XYXY且且XZXZ则必有则必有XX(Y Y,Z Z)。)。例例 如如,在在 关关 系系 SCDSCD中中,SNOSNO(SN,AGESN,AGE),SNOSNO(DEPT,MNDEPT,MN),则则 有有 SNOSNO(SN,AGES
33、N,AGE,DEPTDEPT,MNMN)。4 4分解性分解性若若XX(Y Y,Z Z),则则XYXY且且XZXZ。很很显显然然,分分解解性性为为合合并性的逆过程。并性的逆过程。由合并性和分解性,很容易得到以下事实:由合并性和分解性,很容易得到以下事实:XAXA1 1,A A2 2,,A,An n成立的充分必要条件是成立的充分必要条件是XAXAi i(i=1,2,ni=1,2,n)成立成立。5.2.2 5.2.2 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖定定义义5.25.2 设设关关系系模模式式R(U)R(U),U U是是属属性性全全集集,X X和和Y Y是是U U的子集的子集n如如
34、果果XYXY,并并且且对对于于X X的的任任何何一一个个真真子子集集X,X,都都有有X X Y Y,则则称称Y Y对对X X完完全全函函数数依依赖赖(Full Functional Dependency),记作,记作 X Y X Y。n如如果果对对X X的的某某个个真真子子集集XX,有有XYXY,则则称称Y Y对对部部分分函函数数依依赖赖(Partial Functional Dependency),记作记作X YX Y。n例例如如,在在关关系系模模式式SCDSCD中中,因因为为SNO SNO SCORESCORE,且且CNO CNO SCORESCORE,所所以以有有:(SNOSNO,CNO
35、CNO)SCORE SCORE。n而而SNOAGESNOAGE,所以(,所以(SNOSNO,CNOCNO)AGE AGE。n由定义由定义5.25.2可知:可知:只有当决定因素是组合属性时,讨论部分函数只有当决定因素是组合属性时,讨论部分函数依赖才有意义,依赖才有意义,当决定因素是单属性时,只能是完全函数依赖。当决定因素是单属性时,只能是完全函数依赖。例如,在关系模式例如,在关系模式S S(SNOSNO,SNSN,AGEAGE,DEPTDEPT),),决定因素为单属性决定因素为单属性SNOSNO,有有SNOSNO(SNSN,AGEAGE,DEPTDEPT),),不存在部分函数依赖不存在部分函数依
36、赖5.2.3 5.2.3 传递函数依赖传递函数依赖定定义义5.35.3 设设有有关关系系模模式式R R(U U),U U是是属属性性全全集集,X X,Y Y,Z Z是是U U的子集,的子集,若若XYXY,但但Y Y X X,而而YZYZ(Y Y X X,Z Z Y Y),则则称称Z Z对对X X传传递递函函数数依依赖赖(Transitive Functional Dependency),记作:记作:X X Z Z。如如果果YXYX,则则X X Y Y,这这时时称称Z Z对对X X直直接接函函数数依依赖赖,而不是传递函数依赖。而不是传递函数依赖。例例如如,在在关关系系模模式式SCDSCD中中,S
37、NODEPTNSNODEPTN,但但DEPTN DEPTN SNOSNO,而而DEPTNMNDEPTNMN,则则有有SNO SNO MNMN。当当学学生生不不存存在在重重名名的的情情况况下下,有有SNOSNSNOSN,SNSNOSNSNO,SNO SNO SNSN,SNDEPTNSNDEPTN,这这时时DEPTNDEPTN对对SNOSNO是是直直接接函函数数依依赖赖,而不是传递函数依赖,而不是传递函数依赖5.3 范范 式式 规范化的规范化的基本思想基本思想是消除关系模式中的数据冗余,消除数据依是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除时发生异常现象赖中的不合适
38、的部分,解决数据插入、删除时发生异常现象这就要求关系数据库设计出来的关系模式要满足一定的条件。这就要求关系数据库设计出来的关系模式要满足一定的条件。我们把关系数据库的规范化过程中为不同程度的规范化要求设我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为立的不同标准称为范式范式(Normal FormNormal Form)。)。由于规范化的程度不同,就产生了由于规范化的程度不同,就产生了不同的范式不同的范式。满足最基本规范化要求的关系模式叫满足最基本规范化要求的关系模式叫第一范式第一范式,在第一范式中进一步满足一些要求为在第一范式中进一步满足一些要求为第二范式第二范式,以此
39、类推就产生了以此类推就产生了第三范式第三范式等概念。等概念。每种范式都规定了一些限制约束条件。每种范式都规定了一些限制约束条件。n范式的概念最早由范式的概念最早由E.F.CoddE.F.Codd提出。提出。n从从19711971年年起起,CoddCodd相相继继提提出出了了关关系系的的三三级级规规范范化化形形式式,即即第第一一范范式式(1NF1NF)、第第二二范范式式(2NF2NF)、第三范式()、第三范式(3NF3NF)。)。n19741974年年,CoddCodd和和BoyceBoyce以以共共同同提提出出了了一一个个新新的的范范式式的的概概念念,即即Boyce-CoddBoyce-Cod
40、d范范式式,简简称称BCBC范范式。式。n19761976年年FaginFagin提出了第四范式提出了第四范式(4NF)(4NF)n后后 来来 又又 有有 人人 定定 义义 了了 第第 五五 范范 式式(ProjectJoinNF)(ProjectJoinNF)n各个范式之间的联系可以表示为:各个范式之间的联系可以表示为:n5NF 4NF BCNF 3NF 2NF 1NF5NF 4NF BCNF 3NF 2NF 1NF 图图5.3 5.3 各种范式之间的关系各种范式之间的关系5.3.1 5.3.1 第一范式第一范式n第第一一范范式式(First Normal Form)是是最最基基本本的的规规
41、范形式,即关系中每个属性都是不可再分的简单项范形式,即关系中每个属性都是不可再分的简单项定定义义5.45.4 如如果果关关系系模模式式R R,其其所所有有的的属属性性均均为为简简单单属属性性,即即每每个个属属性性都都城城是是不不可可再再分分的的,则则称称R R属属于于第一范式,简称第一范式,简称1NF1NF,记作,记作R R 1NF1NF。在第在第3 3章讨论关系的性质时,我们把满足这个条件的关系章讨论关系的性质时,我们把满足这个条件的关系称为称为规范化关系规范化关系在关系数据库系统中只讨论规范化的关系,凡是非规范化在关系数据库系统中只讨论规范化的关系,凡是非规范化的关系模式必须化成规范化的关
42、系。的关系模式必须化成规范化的关系。在非规范化的关系中去掉组合项就能化成规范化的关系。在非规范化的关系中去掉组合项就能化成规范化的关系。每个规范化的关系都属于每个规范化的关系都属于1NF1NF,这也是它之所以称为,这也是它之所以称为“第第一一”的原因。的原因。1NF分量是否需要再分,与具体应用有关。如果用到分量是否需要再分,与具体应用有关。如果用到值的一部分,则需要进一步分割值的一部分,则需要进一步分割 如果只是查询出生日期,则它满足如果只是查询出生日期,则它满足1NF如果查询两人生日是否相同,则只比较月、日,如果查询两人生日是否相同,则只比较月、日,需要将生日分解,就不满足需要将生日分解,就
43、不满足1NF如果比较两人的生肖呢?如果比较两人的生肖呢?姓名姓名生日生日王军王军78.7.10张立张立79.7.10李明李明80.3.28姓名姓名年年月日月日王军王军687.10张立张立697.10李明李明803.28在在5.15.1节节中中给给出出的的关关系系模模式式SCDSCD属属于于第第一一范范式式,但但其其具具有有大大量量的的数数据据冗冗余余,具具有有插插入异常、删除异常、更新异常等弊端。入异常、删除异常、更新异常等弊端。为什么会存在这种问题呢?为什么会存在这种问题呢?让让我我们们分分析析一一下下SCDSCD中中的的函函数数依依赖赖关关系系,它它的的关关系系键键是是(SNOSNO,CN
44、OCNO)的的属属性性组组合合,所以有:所以有:n(SNOSNO,CNOCNO)SCORE SCOREnSNOSNSNOSN,(,(SNOSNO,CNOCNO)SN SNnSNOAGESNOAGE,(,(SNOSNO,CNOCNO)AGE AGEnSNODEPTSNODEPT,(,(SNOSNO,CNOCNO)DEPT DEPTnSNO MNSNO MN,(,(SNOSNO,CNOCNO)MN MN 我们可以用函数信赖图表示以上函数依赖关系,如图我们可以用函数信赖图表示以上函数依赖关系,如图5.45.4所示。所示。SNSNMNMNscorescore图图图图5.4 SCD5.4 SCD5.4
45、SCD5.4 SCD中的函数依赖关系中的函数依赖关系中的函数依赖关系中的函数依赖关系SNOSNOCNOCNOPPf由此可见,在由此可见,在SCDSCD中,既存在完全函数依赖,又存在部分函数中,既存在完全函数依赖,又存在部分函数依赖和传递函数依赖。依赖和传递函数依赖。这种情况往往在数据库中是不允许的,也正是由于关系中存在这种情况往往在数据库中是不允许的,也正是由于关系中存在着复杂的函数依赖,才导致数据操作中出现了种弊端。着复杂的函数依赖,才导致数据操作中出现了种弊端。克服这些弊端的方法是用投影运算将关系分解,去掉过于复杂克服这些弊端的方法是用投影运算将关系分解,去掉过于复杂的函数依赖关系,向更高
46、一级的范式进行转换。的函数依赖关系,向更高一级的范式进行转换。5.3.2 5.3.2 第二范式第二范式v定定义义5.55.5 如如果果关关系系模模式式R R 1NF1NF,且且每每个个非非主主属属性性都都完完全全函函数数依依赖赖于于R R的的每每个个关关系系键键,则则称称R R属属于于第第二二范范式式(Second Normal Form),简称,简称2NF2NF,记作,记作R R 2NF2NF。在关系模式在关系模式SCDSCD中,中,SNOSNO,CNOCNO为主属性,为主属性,AGEAGE,DEPTDEPT,MNMN,MNMN,SCORESCORE均为非主属性,经上述分析,存在非主属性对关
47、均为非主属性,经上述分析,存在非主属性对关系键的部分函数依赖,所以系键的部分函数依赖,所以SCD 2NFSCD 2NF。而如图而如图5.25.2所示的由所示的由SCDSCD分解的三个关系模式分解的三个关系模式S S,D D,SCSC,其,其中中S S的关系键为的关系键为SNOSNO,D D的关系键为的关系键为DEPTDEPT,都是单属性,不可,都是单属性,不可能存在部分函数依赖。能存在部分函数依赖。而对于而对于SCSC,(,(SNOSNO,CNOCNO)SCORE SCORE。所以。所以SCDSCD分解后,消分解后,消除了非主属性对关系键的部分函数依赖,除了非主属性对关系键的部分函数依赖,S
48、S,D D,SCSC均属于均属于2NF2NF。n又又如如在在第第3 3章章中中,讲讲述述全全码码的的概概念念时时给给出出的的关系模式关系模式TCSTCS(T T,C C,S S),),一一个个教教师师可可以以讲讲授授多多门门课课程程,一一门门课课程程可可以以为为多个教师讲授,多个教师讲授,同同样样一一个个学学生生可可以以选选听听多多门门课课程程,一一门门课课程程可可以为多个学生选听,以为多个学生选听,(T,C,S)T,C,S)三三个个属属性性的的组组合合是是关关系系键键,T,C,ST,C,S都都是是主主属属性性,而而无无非非主主属属性性,所所以以也也就就不不可可能能存存在在非主属性对关系键的部
49、分函数依赖,非主属性对关系键的部分函数依赖,TCSTCS 2NF2NF。n经以上分析,可以得到两个结论:经以上分析,可以得到两个结论:1 1从从1 1NFNF关关系系中中消消除除非非主主属属性性对对关关系系键键的的部部分函数依赖,则可得到分函数依赖,则可得到2 2NFNF关系关系2 2如如果果R R的的关关系系键键为为单单属属性性,或或R R的的全全体体属属性均为主属性,则性均为主属性,则R R 2NF2NF5.3.2.2 2NF5.3.2.2 2NF规范化规范化2NF2NF规规范范化化是是指指把把1NF1NF关关系系模模式式通通过过投投影影分分解解转转换换成成2NF2NF关系模式的集合。关系
50、模式的集合。分分解解时时遵遵循循的的基基本本原原则则就就是是“一一事事一一地地”,让让一一个个关关系系只只描描述述一一个个实实体体或或者者实实体体间间的的联联系系。如如果果多于一个实体或联系,则进行投影分解。多于一个实体或联系,则进行投影分解。下下面面以以关关系系模模式式SCDSCD为为例例,来来说说明明2NF2NF规规范范化化的的过过程程v例例5.15.1 将将SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)规规范范到到2 2NFNF。由由SNOSNSNOSN,SNOAGESNOAGE,SNODEPTSNOD