第六章关系数据库设计理论12问题的提出基本概念34规范化函数依赖的公理系统5模式分解6.1问题的提出针对一个具体问题,设计一个好的关系数据库系统,关键是要构造一个适合于它的数据模式(数据库逻辑设计问题)数据库逻辑设计主要解决的问题:应该构造几个关系模式每个关系模式包括哪些属性数据库逻辑设计工具─关系数据库的规范化理论6.1问题的提出例:描述电力设备存放管理的数据库数据库:WAE(仓库号,所在区域,区域主管,设备号,数量)语义:⒈一个区域有多个仓库,一个仓库只能属于一个区域;⒉一个区域只有一个区域主管;⒊一个仓库可以存放多种设备,每种设备可以存放在多个仓库中;⒋每个仓库的每种设备都有一个库存数量。6.1问题的提出⒈数据冗余太大–浪费大量的存储空间⒉更新异常–更新代价大,可能导致数据不一致⒊插入异常–该插的数据插不进去⒋删除异常–不该删除的数据不得不删,造成某些数据丢失存在的问题:6.1问题的提出结论:•WAE关系模式不是一个好的模式。•“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖。6.1问题的提出•分解成三个关系模式即可:W(仓库号,所在区域);A(区域,区域主管);WE(仓库号,设备号,数量)6.2基本概念规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余等问题。6.2.1函数依赖定义6.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,对t1,t2r,若t1[X]=t2[X],则t1[Y]=t2[Y]则称X函数决定Y或Y函数依赖X,记作X→Y。如:仓库号所在区域所在区域区域主管(仓库号,设备号)数量若Y不函数依赖于X,则记为X→Y若X→Y,并且Y→X,则记为X←→Y若X→Y,则称X为这个函数依赖的决定因素。6.2.1函数依赖1.函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖。例:“区域主管→所在区域”只有在不允许有同名人的条件下成立2.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。3.函数依赖存在的时间无关性。说明:6.2.1函数依赖•函数依赖与属性间的联系类型有关(1)若属性X和Y之间有“一对一”的联系则:X→Y,Y→X,X←→Y(2)若属性X和Y之间有“多对一”的联系则:X→Y,但Y→X(3)若属性X和Y之间有“多对多”的联系则:X与Y之间不存在任何函数依赖注:当确定函数依赖关系时,可从属性间的联系入手6.2.1函数依赖•平凡函数依赖与非平凡函数依赖定义6.2在关系模式R(U)中,对于U的子集X和Y:若X→Y,但YX,则称X→Y是非平凡函数依赖.若X→Y,但YX,则称X→Y是平凡函数依赖.例:在关系WAE中,非平凡函数依赖:(仓库号,设备号)数量平凡函数依赖:(仓库号,设备号)仓库号(仓库号,设备号)设备号注:对任一关系模式,平凡函数依赖必然存在,则一般讨论非平凡函数依赖。6.2.1函数依赖•完全函数依赖与部分函数依赖定义6.3在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’→Y,则称Y对X完全函数依赖,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPY。例:在关系WAE中,由于:(仓库号,设备号)数量,但仓库号→数量,设备号→数量因此:(仓库号,设备号)f数量6.2.1函数依赖•传递函数依赖与直接函数依赖如果Y→X,即X←→Y,则Z对X直接函数依赖。例:在关系wae中有:定义6.4在R(U)中,如果X→Y,Y→Z,且YX,Y→X,则称Z对X传递函数依赖,记作XtZ。仓库号→所在区域,所在区域→区域主管可得到传递函数依赖:仓库号t区域主管6.2.2码定义6.5设K为RU,F中的属性或属性组合。若KFU,则K称为R的一个侯选码。若关系模式R有多个候选码,则选定其中的一个做为主码。•主属性:包含在任何一个候选码中的属性•非主属性:不包含在任何一个码中的属性•全码:整个属性组全是码6.2.2码定义6.5关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码,也称外码。注:主码和外码一起提供了表示关系间联系的手段。例:在关系SC(Sno,Cno,Grade)中,由于:Sno不是SC的码,但是另一个关系S的码因此:Sno是SC的外码6.3规范化•范式是对关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准。•范式是符合某一种级别的关系模式的集合。•范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)6.3规范化•各种范式之间存在联系:5NF4NFBCNF3NF2NF1NF•某一关系模式R为第n范式,可简记为R∈nNF。•通过模式分解将一个低级范式的关系模式转换为若干个高级范式的关系模式的过程称作规范化。6.3.1第一范式(1NF)•定义6.7满足最低要求的范式。如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。•第一范式是对关系模式的最起码要求。•不满足第一范式的数据库模式不能称为关系数据库。•但满足第一范式的关系模式并不一定是一个好的关系模式。6.3.2第二范式(2NF)定义6.8若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。即:消除非主属性对码的部分依赖•如果一个数据库模式中的每个关系模式都是第二范式的,则称此数据库模式属于第二范式的数据库模式。•从1NF中消除非主属性对候选码的部分函数依赖,则获得2NF。6.3.2第二范式(2NF)例:关系模式WAE中:WAE(仓库号,所在区域,区域主管,设备号,数量)•码:(仓库号,设备号)•主属性:仓库号,设备号•非主属性:所在区域、区域主管和数量•函数依赖:6.3.2第二范式(2NF)仓库号设备号数量所在区域区域主管关系WAE•码为(仓库号,设备号)•非主属性所在区域和区域主管部分函数依赖于码•WAE满足第一范式,但不满足第二范式。6.3.2第二范式(2NF)•解决方法:将WAE分解为两个关系模式,消除这些部分函数依赖:即:WE(仓库号,设备号,数量)WA(仓库号,所在区域,区域主管)仓库号设备号数量关系WE关系WA仓库号所在区域区域主管WE∈2NF,WA∈2NF6.3.2第二范式(2NF)注:•采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。•将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。•如:(1)若某个区域刚刚设立还没有仓库,则所在区域和区域主管的值无法插入,造成插入异常。(2)有一定的数据冗余,当多个仓库处于同一个区域时,区域主管的值被多次存储。(3)若某区域要更换区域主管,则要逐一地修改该区域的所有区域主管记录,稍有不慎,就有可能漏改某些记录,造成更新异常。6.3.3第三范式(3NF)•如果一个数据库模式中的每个关系模式都是第三范式的,则称此数据库模式属于第三范式的数据库模式。•从2NF中消除非主属性对候选码的传递依赖,则获得3NF。定义6.9如果关系模式R∈2NF,且每个非主属性都不传递函数依赖于R的候选码,则称R属于第三范式,简称3NF,记作R∈3NF。即:消除非主属性对码的部分依赖和传递依赖6.3.3第三范式(3NF)例:WE(仓库号,设备号,数量)WA(仓库号,所在区域,区域主管)•函数依赖:WE中:(仓库号,设备号)f数量WA中:仓库号→所在区域,所在区域→区域主管可得到传递函数依赖:仓库号f区域主管•因此:WE∈3NF,而WA∈3NF6.3.3第三范式(3NF)•原因:区域主管传递依赖于码。•解决方法:将WA分解为两个关系模式,消除这些传递依赖:即:W(仓库号,所在区域)A(所在区域,区域主管)仓库号所在区域关系W关系A所在区域区域主管W∈3NF,A∈3NF6.3.3第三范式(3NF)注:•采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上减轻原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。•将一个2NF关系分解为多个3NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。表现在可能存在主属性对码的部分和传递依赖。6.3.4BC范式(BCNF)•BCNF范式是第三范式的改进形式,建立在第一范式的基础上,消除了主属性对码的部分和传递依赖。定义6.10设关系模式R∈1NF,若对于R的每个函数依赖X→Y,若Y不属于X,则X必含有候选码,那么R∈BCNF。即:每一个决定因素(决定属性集)都包含码6.3.4BC范式(BCNF)证明:BCNF3NF反证:若RBCNF,但R3NF,则按3NF定义,一定有非主属性对码的传递依赖。于是存在:R的码X,属性组Y,以及非主属性Z(ZY),使得XY,YZ,YX成立。由YZ,按BCNF定义,Y含有码,则是YX成立,这与YX矛盾。所以:R3NF。6.3.4BC范式(BCNF)注意:•若R∈BCNF,则R∈3NF•若R∈3NF,则R不一定属于BCNF若R∈BCNF•所有非主属性对每一个候选码都是完全函数依赖;•所有主属性对每一个不包含它的候选码都是完全函数依赖;•没有任何属性完全函数依赖于非码的任何一组属性。6.3.4BC范式(BCNF)例1:Course(Cno,Creidt,Pcno)•函数依赖:Cno→Credit,Cno→Pcno即:无部分依赖和传递依赖,且Cno是唯一决定因素•因此:Course∈3NF,且Course∈BCNF•码:Cno即为主属性,决定因素6.3.4BC范式(BCNF)例2:在关系模式SCP(S,C,P)中,S表示学生,C表示课程,P表示名次。说明:每一个学生选修每一门课程都有一个固定的名次:每一门课程中每一名次只对应一个学生(假设没有相同名次的学生):(S,C)→P(C,P)→S6.3.4BC范式(BCNF)SCPCPS关系SCP•候选码:(S,C)和(C,P)即:S,C和P都是主属性•决定因素:(S,C)和(C,P)•结论:SCP∈BCNF•只有(S,C)和(C,P)决定因素且包含候选码,无其他决定因素SCP∈3NF•S、C、P都是主属性•无部分依赖和传递依赖6.3.4BC范式(BCNF)例3:在关系模式WES(仓库号,设备号,职工号)中。说明:1.一个仓库可以有多个职工;2.一个职工仅在一个仓库工作;3.每个仓库一种设备仅由一名职工保管,但每名职工可以保管多种设备.问:该关系的码?属于第几范式?答:码:(仓库号,设备号)属于3NF,但不属于BCNF•非BCNF的不良特性:某位职工刚分配到一个仓库工作,但尚未负责具体设备,这样的信息就无法插入。职工号仓库号(仓库号,设备号)职工号6.3.5多值依赖与第四范式课程C教员T参考书B物理数学计算数学李勇王军李勇张平张平周峰普通物理学光学原理物理习题集数学分析微分方程高等代数数学分析例:学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。即:关系模式Teaching(C,T,B)课程C、教师T和参考书B6.3.5多值依赖与第四范式普通物理学光学原理物理习题集普通物理学光学原理物理习题集数学分析微分方程高等代数数学分析微分方程高等代数…李勇李勇李勇王军王军王军李勇李勇李勇张平张平张平…物理物理物理物理物理物理数学数学数学数学数学数学…参考书B教员T课程C用二维表表示Teaching6.3.5多值依赖与第四范式•Teach具有唯一候选码(C,T,B),即全码•Teaching∈BCNF•存在的问题(1)数据冗余:有多少名任课教师,参考书就要存储多少次;(2)插入异常:当某一课程增加一名任课教