收藏 分享(赏)

13043295c-1C9.ppt

上传人:dzzj200808 文档编号:5750183 上传时间:2019-03-15 格式:PPT 页数:44 大小:205KB
下载 相关 举报
13043295c-1C9.ppt_第1页
第1页 / 共44页
13043295c-1C9.ppt_第2页
第2页 / 共44页
13043295c-1C9.ppt_第3页
第3页 / 共44页
13043295c-1C9.ppt_第4页
第4页 / 共44页
13043295c-1C9.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、第4章 关系数据库设计理论,41数据依赖 42范式 43关系模式的规范化,数据依赖,411关系模式中的数据依赖 412数据依赖对关系模式的影响 413有关概念,411关系模式中的数据依赖,关系模式是关系的描述,它由五部分组成,即为五元组: R(U,D,DOM,F) 其中R为关系名,U是属性集合,DOM属性源域(属性集合U中属性所来自的域),DOM为属性向域的映象集合,F为属性间的数据依赖关系集合。 而属性间数据的依赖关系集合就是描述关系的元组语义,它是限定组成关系的保个元组必须满足的完整性约束条件。它确定属性取值范围的限定,或属性值间的相互关联,这些关联称为数据依赖,是数据库模式设计的关键。

2、在数据库模式设计中,D和DOM对其影响不大,因此一般讨论时将关系模式简化为三元组: R(U,F),412数据依赖对关系模式的影响,数据依赖是通过一个关系中属性间值相等与否体现出来的数据间的相互关系。是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。最重要的数据依赖主要有函数依赖(functional dependency,简称FD)和多值依赖(multivalued dependency,简称MVD)。 关系的规范化理论就是用于改造关系模式,通过分解关系模式来消除其中不合适的数据依赖 ,从而消除由此产生的关系模式的存储和操作问题。,413有关概念,1函数依赖 2平凡函数依赖与非平

3、凡函数依赖 3完全函数依赖和部分函数依赖 4传递函数依赖 5码,1函数依赖,定义4.1 设R(U)是一关系模式,U是R的属性集合。X和Y是U的子集,对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作XY。,说明,1)函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。(不仅对R中现有的元组,而且针对所有将来进行R中的元组。) 2)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。只能根据数据的语义来确定函数依赖。(所谓数据的语义,可以认为

4、是现实世界的经验或常识,是依赖于具体现实环境的。)如“姓名年龄”的前提是无同名同姓的人。如果有相同姓名的人存在,则“年龄”就不再函数依赖于“姓名”了。 3)数据库设计者可以对现实民世界作强制的规定。如规定不允许出现同名同姓的情况,则“姓名年龄”成立。一旦做此规定,当插入的元组与已有的元组出现同名同姓时,则拒绝。 4)若XY,则X称为这个函数依赖的决定属性集(determinant)。 5)若XY且YX,则记XY。 6)若Y不函数依赖于X,则记X Y。,2平凡函数依赖与非平凡函数依赖,定义4.2 在关系模式R(U)中,对于U的子集X和Y,如果XY,但Y X,则称XY是非平凡函数依赖。若Y X,则

5、称XY为平凡函数依赖。 对任一关系模式,平凡函数依赖都必然成立,不能反映新的语义,故一般只讨论非平凡的函数依赖。,3完全函数依赖和部分函数依赖,定义4.3 在关系模式R(U)中,如果XY,且对于X的任一真子集X,都有X Y,则称Y完全函数依赖于X,记X Y。若XY,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记X Y。 如关系SC(Sno,Cno,Grade)中,由于 Sno Grade,Cno Grade。所以有 (Sno,Cno) Grade。,范式,范式是符合某一级别的关系模式的集合。目前主要有六种范式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BD范式(BCNF

6、)、第四范式(4NF)和第五范式(5NF)。它们之间有如下的关系。 1NF 2NF 3NF BCNF 4NF 5NF 若R为第n范式,则记RnNF。 421 第一范式(1NF) 422 第二范式(2NF) 423 第三范式(3NF) 424 BC范式(BCNF) 425 多值依赖与第四范式(4NF),关系模式的规范化,通过分解模式得到较高级的模式过程。 431步骤 432关系模式的分解,4传递函数依赖,定义4.4 在关系模式R(U)中,如果XY,YZ且Z Y(即Z-Y),Y X,则称Z传递函数依赖于X。记作X Y。 说明,YZ且Z Y(即Z-Y)是指Y与Z之间的函数依赖是非平凡的。而加上条件:

7、 Y X,否则因为如果YX,则XY,故 X Z。并非传递函数依赖了。如关系Std(Sno,Sdept,Mname)中有SnoSdept,SdeptMname,且Sdept Sno,故 Sno Mname。,5码,此处严格定义关系模式的码。 定义4.5 设K为关系模式R中属性或属性组合。若KU,则K称为R的一个候选码(candidate key)。若关系模式R有多个候选码,则选定其中一个作为主码(primary key) 定义:设有关系模式R,如果属性A是R的某一候选码的一部分,则称A是R的主属性。如果A不是任何候选码的一部分,则称A是R的非主属性。,分类,码的分类,候选码:在一个关系中,如果某

8、一属性集合K取定值后,关系中其它属性的值也就唯一确定了,且删除属性集合后,该属性不再有上述特性,那么称该关系属性集合K为候选码。简记为K-u,u是关系中的其它属性。 主码:若候选码多于一个时,通常选一个作为主码,作为插入、删除、检索元组的操作变量。 合成码:当某个候选码包含多个属性时,则称该候选码为合成码。 外部码:如果关系R的某一属性组A不是R的候选码,而是另一关系S的候选码,则称A为R的外部码。 合成码和外部码提供了一种表示两个关系联系的方法。,421第一范式(1NF ),定义4.6 如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF。1NF是关系模式的最起码要求,不满足第一范

9、式的数据库模式不能称为关系数据库。,示例,422第二范式(2NF),定义4.7 若关系模式R1NF,并且每一个非主属性都完全函数依赖于R的码,则R2NF。,示例,423第三范式(3NF),定义4.8 如果关系模式R中不存在候选码X,属性组Y以及非主属性Z ( Z Y,即Z-Y),使XY,YZ和Y X成立,则R3NF。 定理4.1:一个3NF的关系必定是2NF的。 证明,示例,424 BC范式(BCNF),定义4.9 设关系模式R1NF。如果对于R的每个函数依赖XY,若Y X,则X必含有候选码,那么RBCNF(Boyce Codd Normal Form)。 定理4.2:若R是BCNF,则必有R

10、3NF 证明 实际上即说,在BCNF中,每一个决定属性集都包含候选码。BCNF为Boyce和Codd两个提出的,比3NF更进一步,通常认为是修正的第三范式,所以有时也称为第三范式。,示例,性质,425多值依赖与第四范式(4NF),1多值依赖 定义4.10 设R(U)是一个属性集U上的一个关系模式,X,Y和Z是U的子集,并且Z=U-X-Y,多值依赖XY成立当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值,而与Z值无关。 若XY而Z=,则称XY为平凡的多值依赖,否则称XY为非平凡的多值依赖。 定义4.11 在关系模式R(U)的任一关系r中,如果对于任意两个元组

11、t、s,有tX=sX,就必然存在元组w、vr(w和v可以与s和t相同),使wX=vX=tX,而wY=tY,wZ=sZ,vY=sY,vZ=tZ,即交换s、t元组的Y值所得的两个元组必在r中,则称Y多值依赖于X,记为XY,其中X和Y是U的子集,Z=U-X-Y。 定义4.10与定义4.11完全等价。 多值依赖有如下性质。,定理4.1 证明,证明:反证法。假定R3NF,且不是2NF的。那么必有非主属性A部分函数依赖于码X,即XA。则必有X的真子集Y存在,使YA。由于A是非主属性,X是码。所以A-X(空集,说明X不包含A)。又因为Y是X的真子集,则亦有A-Y(Y也不包含A),所以有: XY,Y X,YA

12、及A-Y( A Y)。 因此,非主属性A传递函数依赖于码X。这与R3NF矛盾。,定理4.2 证明,证明:反证法。设R是BCNF的关系,但不是3NF的关系。那么存在非主属性A,候选码X,使XY,Y X,YA且A-Y(A Y)。但根据BCNF的定义有YA且A Y,则必有Y含有码,于是应有YX,这与Y X矛盾。,多值依赖的性质,1) 多值依赖具有对称性,即XY,则必有XZ,其中Z=U-X-Y。如CT,则CB。 2) 多值依赖具有传递性,即或XY,YZ,则XZ。 3) 函数依赖可以看作是多值依赖的特殊情况(即所谓对应的一组Y值中只包含了一个Y值时为函数依赖),即若XY,则XY。 4) 若XY,XZ,则

13、XYZ。 5) 若XY,XZ,则XYZ。 6) 若XY,XZ,则XY-Z,XZ-Y。 7) 多值依赖的有效性和属性集的范围有关。XY在U上成立,若 W U,则XY在W上成立。但XY在W(W U)上成立,则XY在U上未必成立。因为U中的Z可能不在W中。如果XY在W(W U)上成立,则XY在U上成立,则称XY为R的嵌入型多值依赖。 8) 若多值依赖XY在R(U)上成立,对于Y Y,并不一定有XY成立。但如函数依赖XY在R上成立,则对于任何Y Y,均有XY成立。,多值依赖的脆弱性,2第四范式(4NF),定义4.12 关系模式R1NF,如果对R的每个非平凡多值依赖XY (Y X),X都含有候选码,则R

14、4NF。,示例,1NF示例,SLC(Sno,Sdept,Sloc,Cno,Grade)。 其中Sno表示学号 Sdept表示所在系 Sloc表示系址 Cno表示课程号 Grade表示成绩 存在问题: 1)插入异常。如未选课的学生不能插入。 2)删除异常。如选修一门课程的学生决定不选修该门课程了,在删除这位学生的选修课程时,将导致该学生被删除。 3)数据冗余度大。如所在系和所在系地址被不断重复。 4)修改复杂。如学生转系,不仅要改Sdept还需要改其Sloc,而且修改可能涉及多个元组(依据选修课程的多少而定),改进,2NF示例,关系SLC出现上述4个问题,主要原因是Sdept,Sloc对码的部分

15、函数依赖。可以采用投影分解法将关系SLC(Sno,Sdept,Sloc,Cno,Grade)分解为两个关系: SC(Sno,Cno,Grade) SL(Sno,Sdept,Sloc) 如此将消除Sdept,Sloc对码(Sno)的部分函数依赖。它将缓解上述4个问题: 1)SL中可以插入尚未选课的学生插入异常缓解。 2)删除学生选修情况只涉及SC,而不涉及SL,不会丢失学生信息删除异常缓解。 3)选修课与学生基本情况分开存储降低冗余。 4)转系时只需要修改SL关系中该学生元组的Sdept和Sloc简化修改。 存在问题,3NF示例,前面提到的问题主要是因为关系SL中存在着传递函数依赖,如果消除了其

16、中的传递函数依赖,即SnoSdept,SdeptSloc,故Sno Sloc,则会消除上述问题或至少降低上述问题的严重程度。 同样可以使用投影分解法,将SL(Sno,Sdept,Sloc)分解为两个关系: SD(Sno,Sdept)和DL(Sdept,Sloc) 在这两个关系中,已经不存在传递函数依赖,所以上述问题得以缓解: 1)DL关系中可以插入无在校学生的系的信息插入异常缓解。 2)某个系的学生即使全部毕业了,也只删除SD中的相应元组,DL关系中仍然可以找到有关系的信息删除异常缓解。 3)系的处所信息只在DL中存储一次降低冗余。 4)如果调整处所,只需修改DL关系中的一个元组简化修改。,3

17、NF的问题,BCNF示例,如果将属于3NF的STJ关系通过投影分解法分解得到两个BCNF的关系代替原来的STJ,那么上述提及的4种问题就会得到缓解。 采用投影分解法,分解STJ(S,T,J)为两个关系: ST(S,T),其中S是码,即ST。 TJ(T,J),其中T是码,即TJ。 实际上,这一过程是消除了原有的主属性传递函数依赖于码和部分函数依赖于码。(注:由于前提是一个教师只开一门课,所以不存在一个学生对应两个教师的情形,否则一个教师就要上二门以上的课了。),BCNF的问题,4NF示例,通过投影分解法可以消除非平凡的多值依赖,得到符合4NF的两个关系: CT(C,T) CB(C,B) 如此,上

18、述问题将得到缓解: 1)参考书只需要在CB关系中存储一次降低冗余。 2)当某一课程增加一名任课教师时,只需要在CT中加一元组降低增加的复杂性。 3)当某一门课程要去掉一本参考书时,只需要在CB中删除一元组降低删除复杂性。,2NF存在问题,考察关系:SL(Sno,Sdept,Sloc) 它有下列问题: 1)插入异常。如没有在校学生的话,就无法将系的信息存储在数据库中。 2)删除异常。如某系学生全部毕业,删除学生将导致系的信息丢失。 3)数据冗余度大。如同系的学生中有关系的处所等信息不断重复。 4)修改复杂。如在调整学生系所在处所,则所有系的学生的Sloc都要修改。,改进,3NF存在的问题,3NF

19、就是不允许关系模式的属性间有这样的非平凡函数依赖XY,而其中X不包含码,Y是非主属性。 X不包含码有两种情况:一种是X为码的真子集,这是2NF也不允许的;另一种是X含有非主属性,这是3NF进一步限制的。 当2NF经过分解,转化为3NF后,也并没有完全消除所有的问题。 考察下面的例子。,3NF存在的问题,考察关系模式STJ(S,T,J)。其中S表示学生,T表示教师,J表示课程。假设每一教师只都一门课,每门课由若干教师讲授。则有如下函数依赖: (S,J)T,(S,T)J,TJ 显然,(S,J)和(S,T)都可作候选码,且S,JS,T=S。如此,则关系STJ中的所以属性都是主属性,就不存在非主属性对

20、码传递函数依赖或部分函数依赖,故STJ3NF。 由于TJ,即T是决定属性集,T是主属性,但不是候选码,也不包含候选码。 在这种情况下,这个属于3NF的STJ会有下列问题: 1)插入异常。如新生入校而未选修课程,由于J是主属性,不能为空,所以不能插入;又如新开的课还未有学生选修,也由于主属性不能为空,所以不能插入。 2)删除异常。如选修过某门课程的学生全部毕业,要被删除,则相对应的教师及课程也会被同时删除,可能造成教师信息和课程信息的丢失。 3)数据冗余大。如一个教师只能都一门课,但所有选修学生都要重复记录这一信息。 4)修改复杂。如课程改名,则所有选修学生所在元组都要改。,改进,BCNF的问题

21、缓解,1)ST关系中可以存储未选修课程的学生;TJ关系可以存储未有学生选修的课程插入异常缓解。 2)选修过某门课程的学生若全部毕业,只会删除ST中相应的元组,不影响TJ中教师开设课程的信息删除异常缓解。 3)每个教师开设课程的信息只在TJ中存储一次降低了冗余。 4)选课或改名,只需要修改TJ中的一个元组简化修改。,BCNF的性质,BCNF都具有3个性质: 1)所有非主属性都完全函数依赖于每个候选码。 2)所有主属性都完全函数依赖于每个不包含它的候选码(非平凡的函数依赖)。 3)没有任何属性完全函数依赖于非码的任何一组属性,BCNF的判断,考察关系Student(Sno,Sname,Ssex,S

22、age,Sdept),因为Sname允许重名,故只有一个码Sno,所以StudentBCNF。 考察关系Course(Cno,Cname,Cpno,Ccredit),由于课程名不允许重名,故Cno和Cname都是码,但Cno和Cname都是单个属性(不存在其它主属性决定其它属性的情况,即不存在主属性的传递函数依赖),且CnoCname=,所以CourseBCNF。 考察关系SC(Sno,Cno,Grade),(Sno,Cno)是码,且是唯一的码,所以SCBCNF。 考察关系SJP(S,J,P),其中S表示学生,J表示课程,P表示名次。每一个学生每门课程都有一个确定的名次,每门课程中每一名次只有

23、一个学生。由此语义得到下面的函数依赖: (S,J)P (S,P)S 显然,S,JS,P=S,但无其它决定属性。所以SJPBCNF。,3NF和BCNF的关系,如果关系模式RBCNF,由定义可知,R中不存在任何属性传递依赖于或部分函数依赖于任何候选码,所以必定有R3NF。但R3NF,却未必属于BCNF。 如STJ3NF,但STJ BCNF。不过,如果R只有一个候选码,则若R3NF,必有RBCNF(此时若有主属性A决定其它属性,如AY,Y A,由于A是主属性,必定为那个唯一的候选码X的一部分,即A X,所以存在X Y,不符3NF要求)。 3NF和BCNF是以函数为基础的关系模式规范化程度的测度。 3

24、NF和BCNF在函数依赖的条件下,已达到较完美的程度。BCNF已在函数范围内,实现了彻底的分离,已经消除了插入和删除等异常现象。3NF稍有些不彻底,这主要表现在可能存在主属性的部分函数依赖和传递函数依赖。,BCNF的问题,考察关系Teach(C,T,B)。其中C表示课程,T表示教师,B表示参考书。该关系的语义描述包括:一门课程可以由多个教师上,但各教师为该门选用的参考书都相同。 显然(C,T,B)为码,不可以存在主属性的部分依赖或传递依赖,所以TeachBCNF。但分析这一关系,会发现它存在以下问题: 冗余。每一门课选用的参考书是固定的,但由于有若干教师上,所以参考书要重复存储多次。 增加烦。

25、如增加一名教师,由于要用若干本参考书,所以增加的信息与参考书的数量有关。 删除烦。如删除一本参考书,由于上同一门课程的每个教师都使用这一参考书,所以要删除所有上同门课程的对应的相关信息。 修改烦。如改动一本参考书,会由于同样的原因要修改同门课程教师对应的所有参考书。造成这些问题的原因是,B与T彼此无关,却因为C而掺在一起。这里存在一咱称之为多值依赖的数据依赖。,改进,多值依赖的脆弱性,在关系中,若删除一些元组,多值依赖可能被破坏。 关系R的元组如表所示:,由这些元组可以得x1对应一组固定的Y值是y1,y2,x2得到固定的Y值是y2。不管Z取z1还是取z2,都不妨碍上述关系。所以XY。 但若删除

26、(x1,y2,z2)元组后,x1对应于值y1,y2仅当Z=z1;而x1对应于值y1仅当Z=z2;x2对应y2不受影响。 如此,Z的取值将对x1、x2对应的一组Y值产生影响,故不存在XY。,定义4.11的描述,定义4.11描述的过程可以用表表示如下:,步骤,规范化实质是概念的单一化。 1NF2NF3NFBCNF4NF5NF。,5NF为目前的终极态。,关系模式的分解,R分解为R1,R2,Rn 其中U=U1U2Un,且不存在Ui Uj。 Ri为F在Ui上的投影。 如关系SL(Sno,Sdept,Sloc)在下列函数依赖: SnoSdept,SdeptSloc,SnoSloc 对其进行分解可能会得到四

27、组关系模式: 1) SN(Sno),SD(Sdept),SO(Sloc) 2) NL(Sno,Sloc),DL(Sdept,Sloc) 3) ND(Sno,Sdept),NL(Sno,Sloc) 4) ND(Sno,Sdept),DL(Sdept,Sloc),分解的等价性,分解前后关系的等价性,为了保证分解前后模式等价,有三个标准: 1) 分解具有无损连接性,即信息不丢失。如第3组。 2) 分解要保持函数依赖,即减轻或解决各种异常。如第2组。 3) 分解既要保持函数依赖,又要具有无损连接性。如第4组。 设关系模式R被分解为若干个关系模式R1,R2,Rn。若R与R1,R2,Rn自然连接的结果相等

28、,则称关系模式R的这个分解具有无损连接性(lossless join)。 若F所逻辑蕴含的函数依赖一定由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(preserve dependency)。 如果要求分解始终达到具有无损连接性,则分解一定能达到4NF。要求分解始终达到保持函数依赖,则一定能达到3NF,但不一定能达到BCNF。要求分解始终保持函数依赖并且具有无损连接性,则一定能达到3NF,但不一定能达到BCNF。,属性间的相互关系抽象,考察关系Student(Sno,Sname,Sdept)。 这是一个描述学生信息的关系,其中Sno为学生的学号,S

29、name为学生姓名,Sdept为学生所在系。 根据常识,确定学生的学号,就可以唯一的确定该学生的姓名和所在系,所以称Sno函数决定Sname和Sdept。或者称Sname和Sdept函数依赖于Sno,记为SnoSname,SnoSdept。,语义的体现,再考察一个学校的数据库模式,设只含单一的关系模式Student,则关系模式的属性集合为: U=Sno,Sdept,Mname,Cname,Grade 其中Sno是学号,Sdept是所在系,Mname为系主任姓名,Cname为课程名,Grade为成绩。根据一般的事实,有: 1)一个系有若干学生,而一个学生只属于一个系; 2)一个系只有一名系主任;

30、 3)一个学生可以选修多门课程,每门课程也可以有多个学生选修; 4)每个学生的每门课程都只有一个成绩。 据此(语义),可以得到一个关系属性集合U上的一组函依赖F: F=SnoSdept,SdeptMname,(Sno,Cname)Grade,有害的属性间关系,有关系Student( Sno,Sdept,Mname,Cname,Grade ) 其函数依赖集如下: F=SnoSdept,SdeptMname,(Sno,Cname)Grade 数据冗余太大。每个系主任的姓名会依据学生选修的课程重复出现。 更新异常(update anomalies),如更换系主任,须修改与该系学生有关的每一个元组。 插入异常(insertion anomalies),如某系即将成立,但还未有学生,该系的有关信息(如系主任等)就无法正常存入数据库。 删除异常(deletion anomalies),如某系学生全部毕业,则该系相关的信息就会丢失。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报