关系数据库规范化相关设计_第1页
关系数据库规范化相关设计_第2页
关系数据库规范化相关设计_第3页
关系数据库规范化相关设计_第4页
关系数据库规范化相关设计_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

关系数据库规范化相关设计2023/3/202本章重要概念(1)关系模式的冗余和异常问题。(2)FD的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系;平凡的FD;属性集的闭包;推理规则的正确性和完备性;FD集的等价;最小依赖集。(3)无损分解的定义、性质、测试;保持依赖集的分解。(4)关系模式的范式:1NF,2NF,3NF,BCNF。分解成2NF、3NF模式集的算法。2023/3/203前言关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好的关系模式集合。规范化设计理论主要包括三个方面的内容:数据依赖、范式和模式设计方法。其中数据依赖起着核心的作用。数据依赖研究数据之间的联系,范式是关系模式的标准,模式设计方法是自动化设计的基础。规范化设计理论对关系数据库结构的设计起着重要的作用。2023/3/2044.1.1关系模型的外延和内涵外延就是通常所说的关系、表或当前值,它的基本性质已在前面介绍过。由于用户经常对关系进行插入、删除和修改操作,因此外延是与时间有关的,随着时间的推移在不断变化。内涵是与时间独立的,是对数据的定义以及数据完整性约束的定义。对数据的定义包括对关系、属性、域的定义和说明。对数据完整性约束的定义涉及面较广,主要包括以下几个方面:静态约束,涉及到数据之间联系(称为“数据依赖,datadependences)、主键和值域的设计。动态约束,定义各种操作(插入、删除、修改)对关系值的影响。2023/3/2054.1.2关系模式的冗余和异常问题(一)例4.1TNAMEADDRESSC#CNAMEt1a1c1n1t1a1c2n2t1a1c3n3t2a2c4n4t2a2c5n2t3a3c6n4图4.1关系模式R的实例

2023/3/2064.1.2关系模式的冗余和异常问题(二)数据冗余如果一个教师教几门课程,那么这个教师的地址就要重复几次存储。操作异常由于数据的冗余,在对数据操作时会引起各种异常:修改异常。例如教师t1教三门课程,在关系中就会有三个元组。如果他的地址变了,这三个元组中的地址都要改变。若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象。插入异常。如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性C#和CNAME上就没有值(空值)。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦。删除异常。如果在图4.1中要取消教师t3的教学任务,那么就要把这个教师的元组删去,同时也把t3的地址信息从表中删去了。这是一种不合适的现象。2023/3/2074.1.2关系模式的冗余和异常问题(三)TNAMEADDRESSTNAMEC#CNAMEt1a1t1c1n1t2a2t1c2n2t3a3t1c3n3

t2c4n4

t2c5n2

t3c6n4图4.2关系模式分解的实例

(a)关系模式R1的实例

(b)关系模式R2的实例

2023/3/2084.2.1函数依赖的定义(一)定义4.1设有关系模式R(U),X和Y是属性集U的子集,函数依赖(FunctionalDependency,简记为FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FDX→Y在关系模式R(U)中成立。2023/3/2094.2.1函数依赖的定义(二)例4.2ABCDABCDa1b1c1d1a1b1c1d1a1b1c2d2a1b2c2d2a2b2c3d3a2b2c3d3a3b1c4d4a3b2c4d4图4.3关系模式R的两个关系

2023/3/20104.2.1函数依赖的定义(三)

例4.3

有一个关于学生选课、教师任课的关系模式:

R(S#,SNAME,C#,GRADE,CNAME,TNAME,TAGE) 属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。

如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列FD形式:

S#→SNAME C#→CNAME 每个学生每学一门课程,有一个成绩,那么可写出下列FD:

(S#,C#)→GRADE 还可以写出其他一些FD:

C#→(CNAME,TNAME,TAGE)TNAME→TAGE2023/3/20114.2.2FD的逻辑蕴涵定义4.2设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖。如果对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F⊨X→Y。定义4.3设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(closure),记为F+。即F+={X→Y|记为F⊨X→Y。}2023/3/20124.2.3FD的推理规则(一)设U是关系模式R的属性集,F是R上成立的只涉及到U中属性的函数依赖集。FD的推理规则有以下三条:A1(自反性,Reflexivity):若YXU,则X→Y在R上成立。A2(增广性,Augmentation):若X→Y在R上成立,且ZU,则XZ→YZ在R上成立。A3(传递性,Transitivity):若X→Y和Y→Z在R上成立,则X→Z在R上成立。2023/3/20134.2.3FD的推理规则(二)定理4.1FD推理规则A1、A2和A3是正确的。也就是,如果X→Y是从F用推理规则导出,那么X→Y在F+中。定理4.2FD的其他五条推理规则:(1)A4(合并性,Union):{X→Y,X→Z}⊨X→YZ。(2)A5(分解性,Decomposition):{X→Y,ZY}X→Z。(3)A6(伪传递性):{X→Y,WY→Z}⊨WX→Z。(4)A7(复合性,Composition):{X→Y,W→Z}XW→YZ。(5)A8{X→Y,W→Z}⊨X∪(W-Y)→YZ。2023/3/20144.2.3FD的推理规则(三)例4.5已知关系模式R(ABC),F={A→B,B→C},求F+。 根据FD的推理规则,可推出F的F+有43个FD。 例如,据规则A1可推出A→φ(φ表示空属性集),A→A,…。据已知的A→B及规则A2可推出AC→BC,AB→B,A→AB,…。据已知条件及规则A3可推出A→C等。 有兴趣的同学可推出这43个FD。2023/3/20154.2.3FD的推理规则(四)定义4.4对于FDX→Y,如果YX,那么称X→Y是一个“平凡的FD”,否则称为“非平凡的FD”。定理4.3如果A1…An是关系模式R的属性集,那么X→A1…An成立的充分必要条件是X→Ai(i=1,…,n)成立。2023/3/20164.2.4FD和关键码的联系定义4.5设关系模式R的属性集是U,X是U的一个子集。如果X→U在R上成立,那么称X是R的一个超键。如果X→U在R上成立,但对于X的任一真子集X1都有X1→U不成立,那么称X是R上的一个候选键。本章的键都是指候选键。 例4.6在学生选课、教师任课的关系模式中: R(S#,SNAME,C#,GRADE,CNAME,TNAME,TAGE) 如果规定:每个学生每学一门课只有一个成绩;每个学生只有一个姓名;每个课程号只有一个课程名;每门课程只有一个任课教师。 根据这些规则,可以知道(S#,C#)能函数决定R的全部属性,并且是一个候选键。虽然(S#,SNAME,C#,TNAME)也能函数决定R的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。

2023/3/20174.2.5属性集的闭包定义4.6设F是属性集U上的FD集,X是U的子集,那么(相对于F)属性集X的闭包用X+表示,它是一个从F集使用FD推理规则推出的所有满足X→A的属性A的集合:X+={属性A|X→A在F+中}定理4.4X→Y能用FD推理规则推出的充分必要条件是YX+。例4.7属性集U为ABCD,FD集为{A→B,B→C,D→B}。则用上述算法,可求出A+=ABC,(AD)+=ABCD,(BD)+=BCD,等等。2023/3/20184.2.5FD推理规则的完备性推理规则的正确性是指“从FD集F使用推理规则集推出的FD必定在F+中”,完备性是指“F+中的FD都能从F集使用推理规则集导出”。也就是正确性保证了推出的所有FD是正确的,完备性保证了可以推出所有被蕴涵的FD。这就保证了推导的有效性和可靠性。定理4.5FD推理规则{A1,A2,A3}是完备的。2023/3/20194.2.6FD集的最小依赖集(一)定义4.7如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。定义4.8设F是属性集U上的FD集。如果Fmin是F的一个最小依赖集,那么Fmin应满足下列四个条件: ⑴F+min=F+; ⑵每个FD的右边都是单属性; ⑶Fmin中没有冗余的FD(即F中不存在这样的函数依赖X→Y,使得F与F-{X→Y}等价); ⑷每个FD的左边没有冗余的属性(即F中不存在这样的函数依赖X→Y,X有真子集W使得F-{X→Y}∪{W→Y}与F等价)。2023/3/20204.2.6FD集的最小依赖集(二) 例4.8设F是关系模式R(ABC)的FD集,F={A→BC,B→C,A→B,AB→C},试求Fmin。

①先把F中的FD写成右边是单属性形式: F={A→B,A→C,B→C,A→B,AB→C} 显然多了一个A→B,可删去。得F={A→B,A→C,B→C,AB→C} ②F中A→C可从A→B和B→C推出,因此A→C是冗余的,可删去。得F={A→B,B→C,AB→C} ③F中AB→C可从A→B和B→C推出,因此AB→C也可删去。最后得F={A→B,B→C},即所求的Fmin。2023/3/20214.3关系模式的分解

4.3.1模式分解问题(一)定义4.9设有关系模式R(U),属性集为U,R1、…、Rk都是U的子集,并且有R1∪R2∪…∪Rk=U。关系模式R1、…、Rk的集合用ρ表示,ρ={R1,…,Rk}。用ρ代替R的过程称为关系模式的分解。这里ρ称为R的一个分解,也称为数据库模式。2023/3/20224.3.1模式分解问题(二)图4.5模式分解示意图

2023/3/20234.3.2无损分解(一)例4.9rCC4343rABCr1AB2A111111112112图4.6未丢失信息的分解

(b)(c)(a)

rABCr1ABr2AC

r1r2AB1141114111231213111212(a)(b)(c)(d)图4.7丢失信息的分解

2023/3/20244.3.2无损分解(二)定义4.10设R是一个关系模式,F是R上的一个FD集。R分解成数据库模式ρ={R1,…,Rk

}。如果对R中满足F的每一个关系r,都有r=πR1(r)⋈πR2(r)⋈…⋈πRk(r)那么称分解ρ相对于F是“无损联接分解”(losslessjoindecomposition),简称为“无损分解”,否则称为“损失分解”(lossydecomposition)。2023/3/20254.3.2无损分解(三)定理4.6设ρ={R1,…,Rk

}是关系模式R的一个分解,r是R的任一关系,ri=πRi(r)(1≤i≤k),那么有下列性质:rmρ(r);若s=mρ(r),则πRi(s)=ri;mρ(mρ(r))=mρ(r),这个性质称为幂等性(

Idempotent)。2023/3/20264.3.2无损分解(四)Rρ={R1,R2,…,Rk}rr1,r2,…,rkss1,s2,…,skπππ图中:ri=πRi(r)(1≤i≤k)si=πRi(r)(1≤i≤k)据性质1.有rmρ(r)据性质2.有si=ri(1≤i≤k)图4.8r的投影连接变换示意图

2023/3/20274.3.2无损分解(五)图4.9泛关系假设下的示意图

图4.9泛关系假设时的示意图

2023/3/20284.3.2无损分解(六)例4.10设关系模式R(ABC)分解成ρ={AB,BC}。(a)和(b)分别是模式AB和BC上的值r1和r2,(c)是r1⋈r2的值。显然πBC(r1⋈r2)≠r2。这里r2中元组(b2c2)就是一个悬挂元组,由于它的存在,使得r1和r2不存在泛关系r。r1ABr2BCABCa1b1a1b1c1bc1b12c2(a)关系r1(b)关系r2rr12(c)rr122023/3/20294.3.3无损分解的测试方法(一) 算法4.3无损分解的测试构造一张k行n列的表格,每列对应一个属性Aj(1≤j≤n),每行对应一个模式Ri(1≤i≤k)。如果Aj在Ri中,那么在表格的第i行第j列处填上符号aj,否则填上bij。把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的值。修改方法如下:对于F中一个FDX→Y,如果表格中有两行在X值上相等,在Y值上不相等,那么把这两行在Y值上也改成相等的值。如果Y值中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中一个bij替换另一个值(尽量把下标ij改成较小的数)。一直到表格不能修改为止。(这个过程称为chase过程)若修改的最后一张表格中有一行是全a,即a1a2…an,那么称ρ相对于F是无损分解,否则称损失分解。2023/3/20304.3.3无损分解的测试方法(二)a4a3b32b31CDb24a3a2b21BCb14b13a2a1ABDCBAa4a3b32b31CDa4a3a2a1BCb14b13a2a1ABDCBA图4.12算法4.3的运用示意图(一)

(a)初始表格

(a)修改后的表格

a4a3b32b31CDb24a3a2b21BCb14b13a2a1ABDCBAa4a3b32b31CDa4a3a2b1BCb14b13a2b1ABDCBA(a)初始表格

(a)修改后的表格

图4.13算法4.3的运用示意图(二)

2023/3/20314.3.3无损分解的测试方法(三)定理4.7设ρ={R1,R2

}是关系模式R的一个分解,F是R上成立的FD集,那么分解ρ相对于F是无损分解的充分必要条件是(R1∩R2)→(R1-R2)或(R1∩R2)→(R2-R1)。定理4.8如果FDX→Y在模式R上成立,且X∩Y=φ,那么R分解成ρ={R-Y,XY}是无损分解。2023/3/20324.3.4保持函数依赖的分解(一)定义4.11设F是属性集U上的FD集,Z是U的子集,F在Z上的投影用πZ(F)表示,定义为πZ(F)={X→Y|X→Y∈F+,且XYZ}定义4.12设ρ={R1,…,Rk}是R的一个分解,F是R上的FD集,如果有∪πRi(F)⊨F,那么称分解ρ保持函数依赖集F。

2023/3/20334.3.4保持函数依赖的分解(二)WNOWSWNOWGWNOWSWGW18级W12000W18级2000W26级W21600W26级1600W36级W31400W36级1400例4.12

(c)rr12(a)关系r1(b)关系r22023/3/20344.3.5模式分解与模式等价问题(一) 本节讨论的关系模式分解的两个特性实际上涉及到两个数据库模式的等价问题,这种等价包括数据等价和依赖等价两个方面。数据等价是指两个数据库实例应表示同样的信息内容,用“无损分解”衡量。如果是无损分解,那么对泛关系反复的投影和联接都不会丢失信息。依赖等价是指两个数据库模式应有相同的依赖集闭包。在依赖集闭包相等情况下,数据的语义是不会出差错的。违反数据等价或依赖等价的分解很难说是一个好的模式设计。2023/3/20354.3.5模式分解与模式等价问题(二)

例4.13设关系模式R(ABC),ρ={AB,AC}是R的一个分解。试分析分别在F1={A→B},F2={A→C,B→C},F3={B→A},F4={C→B,B→A}情况下,ρ是否具有无损分解和保持FD的分解特性。相对于F1={A→B},分解ρ是无损分解且保持FD的分解。相对于F2

={A→C,B→C},分解ρ是无损分解,但不保持FD集。因为B→C丢失了。相对于F3

={B→A},分解ρ是损失分解但保持FD集的分解。相对于F4

={C→B,B→A},分解ρ是损失分解且不保持FD集的分解(丢失了C→B)

2023/3/20364.4关系模式的范式关系模式的好与坏,用什么标准衡量?这个标准就是模式的范式(NormalForms,简记为NF)。范式的种类与数据依赖有着直接的联系,基于FD的范式有1NF、2NF、3NF、BCNF等多种。在不提及FD时,关系中是不可能有冗余的问题,但是当存在FD时,关系中就有可能存在数据冗余问题。1NF是关系模式的基础;2NF已成为历史,一般不再提及;在数据库设计中最常用的是3NF和BCNF。为了叙述的方便,我们还是从1NF、2NF、3NF、BCNF顺序来介绍。2023/3/20374.4.1第一范式(1NF)定义4.13如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式(firstnormalform,简记为1NF)的模式。满足1NF的关系称为规范化的关系,否则称为非规范化的关系。关系数据库研究的关系都是规范化的关系。例如关系模式R(NAME,ADDRESS,PHONE),如果一个人有两个号码(PHONE),那么在关系中至少要出现两个元组,以便存储这两个号码。1NF是关系模式应具备的最起码的条件。2023/3/2038满足第一范式的(不好的)关系模式的例子

例4:设有一关系R(S#,C#,G,TN,D),其中(S#)为学号,C#为课程号,G为成绩,TN为任课教师姓名,D为教师所在系名,这些数据具有下列语义:(1)学号是一个学生的标识,课程号是一门课程的标识。(2)一位学生所修的每门课程都有一个成绩。(3)每门课程只有一位任课教师,但一位教师可以教多门课。(4)教师中没有重名,每位教师只属于一个系。2023/3/2039下面是一个具体实例:S#C#GTNDs1c1g1t1d1s1c2g2t2d2s2c1g3t1d1s2c2g4t2d2s3c2g5t2d2s3c3g6t2d2学号课程号成绩教师系名2023/3/2040虽然上述的关系模式只有四个属性,但在使用过程中有以下几个问题:

(1)数据冗余。例如,教师所在系名对选该教师所开课的所有学生都重复一次。

(2)插入异常。由于关系的主键{S#,C#}不能为空值,如果一个教师不教课,则这位教师的姓名及所属的系名就不能插入表中。2023/3/2041

(3)删除异常。如果所有学生都退选某一门课,则有关该门课的其它数据(任课教师名及所在系名)也将被删除。

(4)修改异常。例如,如果改变一门课的任课教师,则需要修改表中的多行记录,如果部分修改,部分不修改,则会导致数据的不一致。上述关系模式只所以是一个不好的关系模式,是因为模式中存在部分函数依赖和传递函数依赖。消除这些部分函数依赖和传递函数依赖,就可以得到一个比较好的关系模式。2023/3/20424.4.2第二范式(2NF)(一)定义4.14对于FDW→A,如果存在X⊂W有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。完全依赖也称为“左部不可约依赖”。定义4.15如果A是关系模式R的候选键中属性,那么称A是R的主属性;否则称A是R的非主属性。定义4.16如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。如果数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。2023/3/20434.4.2第二范式(2NF)(二)

例4.14

设关系模式R(S#,C#,GRADE,TNAME,TADDR)的属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名和教师地址等意义。(S#,C#)是R的候选键。 R上有两个FD:(S#,C#)→(TNAME,TADDR)和C#→(TNAME,TADDR),因此前一个FD是局部依赖,R不是2NF模式。此时R的关系就会出现冗余和异常现象。譬如某一门课程有100个学生选修,那么在关系中就会存在100个元组,因而教师的姓名和地址就会重复100次。 如果把R分解成R1(C#,TNAME,TADDR)和R2(S#,C#,GRADE)后,局部依赖(S#,C#)→(TNAME,TADDR)就消失了。R1和R2都是2NF模式。

2023/3/20444.4.2第二范式(2NF)(三)

算法4.4

分解成2NF模式集的算法 设关系模式R(U),主键是W,R上还存在FDX→Z,并且Z是非主属性和XW,那么W→Z就是一个局部依赖。此时应把R分解成两个模式 R1(XZ),主键是X; R2(Y),其中Y=U-Z,主键仍是W,外键是X(REFERENCESR1)。 利用外键和主键的联接可以从R1和R2重新得到R。 如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中每一个关系模式都是2NF为止。2023/3/2045例:是1NF但不是2NF的关系模式设有关系模式如下:

REPROT(S#,C#,TITLE,LNAME,ROOM#,MARKS),其中S#是学号,C#是课程号,TITLE为课程名,LNAME是教师名,ROOM#是教室号,MARKS是分数。关系中的一个元组<s,c,t,l,r,m>表示学生s在课程c中的得分为m,课程名为t,由教师l讲授,其教室编号为r。

若每门课只由一位教师讲授,每位教师只有一个教室,即只在一个教室中讲课,则REPORT的函数依赖如下:(S#,C#)MARKSC#TITLEC#LNAMELNAMEROOM#2023/3/2046关系模式REPROT(S#,C#,TITLE,LNAME,ROOM#,MARKS)的码是(S#,C#),非主属性TITLE,LNAME和ROOM#对码是部分函数依赖,并存在传递函数依赖C#LNAME,LNAMEROOM#。REPORT属于1NF,不属于2NF。S#C#MARKSTITLELANMEROOM#图5-32023/3/2047消除部分函数依赖为消除部分函数依赖,将REPORT关系模式分解为REPORT1和COURSE这二个关系模式:

REPORT1(S#,C#,MARKS)

函数依赖是(S#,C#)MARKSCOURSE(C#,TITLE,LNAME,ROOM#)

函数依赖是C#TITLE,C#LNAME,LNAMEROOM#。

REPORT1和COURSE都消除了对码的部分函数依赖,因此都属于2NF。2023/3/2048一个关系模式仅仅满足2NF仍是不够的,如在关系模式COURSE(C#,TITLE,LNAME,ROOM#)中,仍存在着插入,删除和修改异常问题:新来的教师,还没有分配授课之前,教师的姓名及教室编号都不能加到关系模式中;如果要修改教室编号,必须修改与教师授课相对应的各元组中的教室编号,因为一位教师可能会教多门课。

存在上述这些问题的原因是关系模式COURSE中存在传递函数依赖,所以要把关系模式COURSE向第三范式转化,除去非主属性对码的传递函数依赖。2023/3/20494.4.3第三范式(3NF)(一)定义4.17如果X→Y,Y→A,且Y→X和A∈Y,那么称X→A是传递依赖(A传递依赖于X)。定义4.18如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式。如果数据库模式中每个关系模式都是3NF,则称其为3NF的数据库模式。2023/3/20504.4.3第三范式(3NF)(二)例4.15

在例4.14中,R2是2NF模式,而且也已是3NF模式。但R1(C#,TNAME,TADDR)是2NF模式,却不一定是3NF模式。如果R1中存在函数依赖C#→TNAME和TNAME→TADDR,那么C#→TADDR就是一个传递依赖,即R1不是3NF模式。此时R1的关系中也会出现冗余和异常操作。譬如一个教师开设五门课程,那么关系中就会出现五个元组,教师的地址就会重复五次。如果把R2分解成R21(TNAME,TADDR)和R22(C#,TNAME)后,C#→TADDR就不会出现在R21和R22中。这样R21和R22都是3NF模式。

2023/3/20514.4.3第三范式(3NF)(三)

算法4.5

分解成3NF模式集的算法 设关系模式R(U),主键是W,R上还存在FDX→Z。并且Z是非主属性,ZX,X不是候选键,这样W→Z就是一个传递依赖。此时应把R分解成两个模式: R1(XZ),主键是X; R2(Y),其中Y=U-Z,主键仍是W,外键是X(REFERENCESR1)。 利用外键和主键相匹配机制,R1和R2通过联接可以重新得到R。 如果R1和R2还不是3NF,则重复上述过程,一直到数据库模式中每一个关系模式都是3NF为止。2023/3/20524.4.3第三范式(3NF)(四)定理4.9 如果R是3NF模式,那么R也是2NF模式。定理4.10设关系模式R,当R上每一个FDX→A满足下列三个条件之一时:A∈X(即X→A是一个平凡的FD);X是R的超键; A是主属性。关系模式R就是3NF模式。2023/3/20534.4.3第三范式(3NF)(五)图4.15违反3NF的传递依赖的三种情况

2023/3/2054

在前面的例子中,关系模式:

COURSE(C#,TITLE,LNAME,ROOM#)其中存在非主属性ROOM#对码的传递依赖,即:

C#LNAME,LNAMEROOM#,因此COURSE不属于3NF。将COURSE分解为:

COURSE1(C#,TITLE,LNAME)

LECTURE(LNAME,ROOM#),

则关系模式COURSE1和LECTURE中都没有传递函数依赖,因此COURSE1和LECTURE都属于3NF。2023/3/2055至此,关系模式REPORT分解为下列3个属于3NF的一组关系模式:REPORT1(S#,C#,MARKS)COURSE1(C#,TITLE,LNAME)

LECTURE(LNAME,ROOM#)和关系模式REPORT相比,这些关系模式是对现实世界更加精确的描述。把这3个关系进行连接,总能重构初始的关系。2023/3/20564.4.4BCNF(Boyce–CoddNF)(一)图4.16主属性对候选键的传递依赖

2023/3/20574.4.4BCNF(Boyce–CoddNF)(二)定义4.19如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。如果数据库模式中每个关系模式都是BCNF,则称为BCNF的数据库模式。定理4.11如果R是BCNF模式,那么R也是3NF模式。定义4.19’设F是关系模式R的FD集,如果对F中每个非平凡的FDX→Y,都有X是R的超键,那么称R是BCNF的模式。2023/3/20584.4.5分解成BCNF模式集的算法 算法4.6无损分解成BCNF模式集 对于关系模式R的分解ρ(初始时ρ={R}),如果ρ中有一个关系模式Ri相对于πRi(F)不是BCNF。据定义4-20可知,Ri中存在一个非平凡FDX→Y,有X不包含超键。此时把Ri分解成XY和Ri-Y两个模式。重复上述过程,一直到ρ中每一个模式都是BCNF。2023/3/2059例:一个是3NF但不是BCNF的关系模式设有关系模式STJ(S,T,J),S表示学生,T表示教师,J表示课程。每一教师只教一门课,每门课有若干教师,某一学生选定某门课,就对应一个固定的教师,由语义可得到如下的函数依赖。(S,J)T;(S,T)J;TJ,即学生,所选课程决定授课教师;学生,授课教师决定所选课程;教师决定所授课程;如下图所示:2023/3/2060则(S,J),(S,T)都是候选码;S,T,J都是主属性。STJ3NF,因为没有任何非主属性对候选码的传递依赖或部分依赖。STJBCNF,因为主属性J传递函数依赖于候选码S,J。SJTSTJ图

STJ中的函数依赖2023/3/2061模式设计示例例:学生基本情况的关系模式:STUDENT(SNO,SNAME,AGE,SEX,CLASS,DEP,CNO,CNAME,GRADE,SCORE)该关系模式的函数依赖集F={SNOSNAME,SNOAGE,SNOSEX, SNOCLASS,SNODEP,CLASSDEP, CNOCNAME,CNOSCORE, SNO+CNOGRADE}

该模式的码是(SNO,CNO)

该模式是属于1NF:满足的条件是元组的每个分量必须是不可分的数据项。不是一个好的关系模式。同学自己分析为什么是一个不好的关系模式?2023/3/2062修改设计使其满足第二范式2NF关系模式STUDENT不符合2NF要求。因为其中存在部分函数依赖。关系模式STUDENT的主码是(SNO,CNO)。非主属性SNAME,AGE,SEX,CLASS,DEP, CNAME,GRADE,SCORE

非主属性中存在对码的部分函数依赖,如,SNOSNAME,CNOCNAME。2023/3/2063消除部分函数依赖将STUDENT关系模式分解,消除部分函数依赖,得到三个关系模式符合2NF要求:STUDENT2(SNO,SNAME,AGE,SEX,CLASS,DEP)COURSE(CNO,CNAME,SCORE)SC(SNO,CNO,GRADE) 在STUDENT2模式中,仍然存在数据冗余,以及插入和删除异常。2023/3/2064修改设计使其满足第三范式3NF关系模式STUDENT2不满足第三范式要求,存在传递依赖。如SNOCLASSDEP,消除传递依赖,分解STUDENT2如下:STUDENT3(SNO,SNAME,AGE,SEX,CLASS)CLASS(CLASS,DEP)2023/3/2065满足第三范式要求至此,关系模式STUDENT分解为4个3NF的关系模式:STUDENT3(SNO,SNAME,AGE,SEX,CLASS)CLASS(CLASS,DEP)COURSE(CNO,CNAME,SCORE)SC(SNO,CNO,GRADE)2023/3/2066修改设计使其满足BCNF范式例如,关系模式课程COUSE(CNO,CNAME,SCORE),只有一个码CNO,没有任何属性对码有部分和传递函数以来,所以COUSE3NF。同时,COUSE中CNO是唯一的决定因素,因此COUSEBCNF。2023/3/2067模式分解习题设有关系模式R(U,F),其中U={A,B,C,D,E},F={ABC,BD,DE,CB},试问R最高为第几范式,并解释原因?如果R不是3NF或BCNF,要求将其分解为3NF和BCNF。2023/3/2068关系R中的函数依赖如下图表示R(A,B,C,D,E

温馨提示

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

评论

0/150

提交评论