第10部分数据依赖和关系模式的规范化.ppt

上传人:本田雅阁 文档编号:2565607 上传时间:2019-04-09 格式:PPT 页数:65 大小:428.51KB
返回 下载 相关 举报
第10部分数据依赖和关系模式的规范化.ppt_第1页
第1页 / 共65页
第10部分数据依赖和关系模式的规范化.ppt_第2页
第2页 / 共65页
第10部分数据依赖和关系模式的规范化.ppt_第3页
第3页 / 共65页
第10部分数据依赖和关系模式的规范化.ppt_第4页
第4页 / 共65页
第10部分数据依赖和关系模式的规范化.ppt_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《第10部分数据依赖和关系模式的规范化.ppt》由会员分享,可在线阅读,更多相关《第10部分数据依赖和关系模式的规范化.ppt(65页珍藏版)》请在三一文库上搜索。

1、第10章 数据依赖和关系模式的规范化,10.1 关系模式设计中的一些数据语义问题,数据的语义不但表现为完整性约束,对数据库的状态或状态的转换施加一定的限制,而且对关系模式的设计也提出一定的要求。 属性间往往存在一定的依赖关系,而最基本的依赖关系是函数依赖。所谓函数依赖是指一个或一组属性的值可以决定其他属性的值。,一般地讲,设,是关系的两个不同的属性组,如果函数依赖于,或函数决定,则其依赖关系可表示为。 设有一关系,具有下列属性:学号(S)、课程号(C)、成绩(G)、任课教师姓名(TN)、教师所在系名(D)。这些数据具有下列语义:,()学号是一个学生的标识,课程号是一门课程的标识,这些标识与其代

2、表的学生和课程分别一一对应; ()一位学生所修的每门课程都有一个成绩; ()每门课程(注意:不是每种课程!同一种课,如数学课,可以开好多门,每门课有一个课程号)只有一位任课教师,但一位教师可以教多门课; ()教师中没有重名,每位教师只属于一个系。,根据上述语义,可以确认下面函数依赖的集合: , 从图可以看出,属性集,可以 决定其他所有属性的值,而,的任何子集 则不能,故,是这个关系的主键。这样的 关系用来查询是很方便的。,计算机系通知教师准备给学生补考,可以“查询图10-1 函数依赖计算机系所开课程的不及格学生的学号、不及 格课程号以及任课教师的姓名” .查询仅涉及一个关 系,是一元查询,不须

3、做连接运算,可以用下面的SQL语 句来表达: SELECT S,C,TN FROM R WHERE CSAND F;,但是这样的关系也有问题,首先数据冗余太多,如一门课程的教师名须对选这门课的所有学生重复一次;一个系名须对选该系所开课程的所有学生重复一次。除冗余外,在进行增、删、改操作时,还会发生所谓更新异常现象: ()由于冗余,在修改时往往会导致数据的不一致。例如,改变一门课程的任课教师,或一门课改由另一个系开出,则需要修改多个元组。如果部分修改,部分不修改,则会导致数据的不一致。这叫修改异常。,()由于主属性不能为空值,如某系有位教师不教课,则这位教师的姓名及所属的系名就不能插入;同样,如

4、果一位教师所开的课暂时无人选,或是列入计划而目前不开,则也无法插入。这叫插入异常。 ()如果所有学生都退选一门课,则有关这门课的其他数据(任课教师名及所属系名)也将被删除。如果一位教师因病暂时停开他所开的课,则有关这位教师的其他信息(所属系、可开课程)都将被删去。这叫删除异常。,在上例的关系中,包含了三方面的信息:学生各门课程 的成绩,各门课程开课的教师以及各个教师所属的系。 上例中,所有这三方面的数据都集中在一个关系中,此 关系的主键为属性集S,C。 (C,TN)和(TN,D)本来可以作为独立的关系而存 在,而今却不得不依附于其他关系。这就是说,必须对应 一个主键S,C的值,才能插入或存在一

5、个(C, TN)或(TN,D)的值。这是关系结构带来的限制,不是现 实世界的真实反映。,解决这个问题的途径是把关系分解,也就是进行所谓关系规范化。例如,把上例的关系分解为下列三个关系: SCG(S,C,G) CTN(C,TN) TND(TN,D),这样的分解使关系的语义单纯化,使之符合“一地一事”的原则。但是分解以后,对某些查询必须进行开销很大的连接操作,影响数据库的性能。 关系的规范化主要是对关系进行必要的分解,但如何分解,分解后是否有损于原来的信息,回答这些问题需要理论的指导,下面将讨论这些问题。,表示一个关系的模式,U=A1,A2,An是R的所有属性的集合,F是R中函数依赖的集合,r是R

6、所取的值,即R实有元组的集合。 定义10-1 设有一关系模式R(A1,A2,An),X和Y为其属性的子集。设t1,t2是关系R中的任意两个元组,如果t1X=t2X,则t1Y=t2Y。这时我们称Y函数依赖于X,或X函数决定Y,X称为决定子(determinant)。,一个函数依赖要能成立,不但要求关系的当前值都能满足函数依赖条件,而且还要求关系的任一可能值都能满足函数依赖条件。确认一个函数依赖,需要弄清数据的语义,而语义是现实世界的反映,不是主观的臆断。 如果为的子集,显然成立,这称为平凡函数依赖(trivial functional dependency)。平凡函数依赖必然成立,它不反映新的语

7、义。我们平常所指的函数依赖一般都指非平凡函数依赖(nontrivial functional dependency)。,如果不函数依赖于,则记做 。 如果且,则与一一对应,可记做 。 定义10-2 设X,Y是某关系的不同属性集,如XY,且不存在X为X的子集,使XY,则称Y完全函数依赖(full functional dependency)于X,记做X Y;否则称Y部分函数依赖p(partial functional dependency)于X,记做X Y。,在10.1节的例子中,S,C是主键,故S,CTN,但CTN,故S,p f CTN,而S,CG。 定义10-3 设X,Y,Z是某关系的不同的

8、属性集,如果XY,Y X,YZ,则称传递函数依赖(transitive functional dependency)于X。,定义10-4 设F是R的函数依赖集合,XY是R的一个函数依赖。如果一个关系模式满足F,则必然满足XY,就称F逻辑蕴涵XY,或表示为F|=XY。 定义10-5 函数依赖集合所逻辑蕴涵的函数依赖的全体称为F的闭包(closure),记为F,即FXYF|=XY。,为了从已知的函数依赖推导出其他函数依赖,Armstrong提出了一套推理规则,我们常称为Armstrong公理( Armstrong saxions)。其推理规则可归结为如下三条: A1:自反律(reflexivity

9、) 如果,则成立。这是一个平凡函数依赖。 A2:扩展律(augumentation) 如果成立,且,则成立。式中,和是和的简写,以后将沿用此表示法。 A3:传递律(transitivity) 如果,成立,则成立。,引理10-1 Armstrong公理是正确的(sound),即如果F 成立,则由F根据Armstrong公理所推导的函数依赖总是 成立的。 引理10-2 下列三条推理规则是正确的。 (1)合并规则(the union rule) ,|=。 (2)伪传递规则(the pseudo transitivity rule):,|=。 (3)分解规则(the decomposition rul

10、e):如果且为的子集,则成立。,定义10-6 设为的子集,则属性集关于函数依 赖集的闭包定义为且 可由Armstrong公理导出。 引理10-3 能由Armstrong公理导出的充分必 要条件是。 定理10-1 Armstrong公理是正确的、完备的(complete),算法10-1 计算属性集关于的闭包。 输入:属性集为的子集,函数依赖集。 输出:。 方法:按下列方法计算属性集序列X(0),X(1),(i) (1)初始化X()X,i。 (2)求属性集B=A|(V)(W)(VWFVX(i)AW)。 (3)X(i+1)BX(i)。 (4)判别X(i+1)X(i)。 (5)若不等,ii1,返回(2

11、);若相等,X+=X(i),结束。,【例10-1】 设ABC,DEG,CA,BEC,BCD,CGBD,ACDB,CEAG,试用算法10-1计算(BD)+ 。 解:令(0)BD。 找左部为BD的子集的函数依赖,只有。(1)BDEGBDEG,找左部为BDEG的子集的函数依赖,有DEG,BEC。X(2) BDEG EGC BCDEG 找左部为BCDEG的子集的函数依赖,有DEG,CA,BEC,BCD,CGBD,CEAG。X(3) BCDEG ABCDEG= ABCDEG,因X(3)U,一望可知不必再进行计算了,(BD)+= ABCDEG。可是在算法10-1中,还要迭代一次才能结束。,定义10-7 设

12、F,G为两个函数依赖集,如果F+G+, 则称F和G是等价的,也可称F覆盖(cover)G,或G 覆盖F;也可说F和G互相覆盖。 引理10-4 FG的充分必要条件是FG+且GF+。 引理10-5 任一函数依赖集F总可以为一右部恒为单 属性的函数依赖集所覆盖.,定义10-8 函数依赖集如果满足下列条件,则称为极 小函数依赖集或最小覆盖。 (1)F中每个函数依赖的右部为单属性。 (2)F中不存在这样的函数依赖XA,使得FXA与F等价。 (3)在F中也不存在这样的XA,使得FXAZA与F等价,式中,Z为X的子集。 定理10-2 任一函数依赖集F都与一最小函数依赖集F 等价。F称为F的最小覆盖。,10.

13、3 多值依赖,除了函数依赖外,关系的属性间还有其他一些依赖关 系,多值依赖(MultiValued Dependency,MVD)是其中 之一。 在多值依赖(表示为,读做多值决定, 或多值依赖于)中,对于给定的值,其对应的是 的一组数值(其个数可以从零到多个),而且这种对 应关系,对于给定的值所对应的()每 个值都能成立。,定义10-9 设,是关系模式的属性集,如果对于 的任何值,都有如下的性质: 则称满足XY。 与函数依赖一样,多值依赖也有一组公理: :互补律 如果,则()。 如果需要,可用()表示多值依赖,以强调其互补关系。 :扩展律(多值依赖) 如果,而,则。,A6:传递律(多值依赖)

14、如果,且,则()。 下面两个公理与函数依赖和多值依赖都有关。 A7:如果,则,即函数依赖是多值依赖的特例。 A8:如果,而且对某个与不 相交的,有,则。,由前述公理,还可以推导出下列个多值依赖推理规则。 ()多值依赖合并规则 如果,则。 ()多值依赖伪传递规则 如果,则()。 ()混合伪传递规则 如果,则()。 ()多值依赖分解规则 如果,则(),()及()均成立。,10.4 连接依赖,前面所讲的函数依赖和多值依赖都是数据语义对数据所 施加的某种限制。这些依赖关系可以统称为数据依赖(Data Dependency,DD)。数据依赖不仅包含函数依赖和多值依 赖,还有其他一些依赖。 函数依赖实际表

15、现为对属性值的约束,例如,王平是计 算机系的教师,若有函数依赖TND(参看图10-1),则在 TN为王平的元组中,其对应的D必为计算机系,不能为其他 值。,多值依赖实际上表示为对元组值的约束,如在 图10-3中,由于TSC,如果出现元组Li,No1 physics及Li,No2 chemistry,则必有元组Li, No2 physics及Li,No1 chemistry。 推广这个概念,还可以发现其他依赖关系,连 接依赖(Join Dependency,JD)就是其中之一。,定义10-10 设X1,X2,Xn是关系R的属性集U的子 集,且XiU。若对R的任一值,RXi均成立, 则称R具有连接

16、依赖,记为(X1,X2,Xn)。 注: 表示连接操作,10.5 关系模式的分解及其问题,在10.1节中讨论过由函数依赖所引起的更新异常问 题。同样,多值依赖和连接依赖也会引起类似的问题。 解决这些问题的途径,就是按照前面曾提到过的“一地一 事”原则,对关系模式进行分解,使其语义单纯化。 定义10-11 设有一关系模式R(U),若用一关系模式的集 合R1(U1),R2(U2),Rk(Uk)来取代,其中,U U,则称此关系模式的集合为的一个分解,用 =R1,R2,Rk表示。,定义10-12 F在属性集Ui(为的真子集)上的投影定 义为i(F)XYXYF+XY为Ui的子集 定义10-13 设R1,R

17、2,Rn是R的一个分解,r是R 的任一个值,如果满足条件rU1(r)U2(r)Uk(r) 则称是无损连接分解或简称无损分解。 定义10-14 设=R1,R2,Rn是R的一个分解,如 Ui(F)|=,则称分解保持函数依赖,或简称保持 依赖。,关系模式经分解后与原来的关系等价。所谓“等价”不是“等同”,“等价”是指两者对数据的使用者来说应是等价的,即对分解前后的数据,做同样内容的查询,应产生同样的结果。这是对模式分解的最基本的要求,否则,不能进行分解。 如果硬要进行分解的话,那就意味着分解前后的模式代表着两个不同的现实世界。因此,无损分解应是关系模式分解时所必须满足的条件。不是任意的分解都是无损的

18、。,关系分解还带来保持依赖的问题。不满足保持依赖条件,并不意味着某些函数依赖真正丢失了,而是某些函数依赖的有关属性分散在不同的关系中,不能被的所有投影所蕴涵。不同关系的属性间的函数依赖关系并不是不可能存在的,问题在于这种函数依赖所代表的语义约束不如在一个关系中容易检查,一般须在检查前对有关的关系做一次连接运算。此外,不保持依赖还会引起一些更新异常,这可以通过下面的例子说明。,【例10-3】 取图10-1的一部分组成关系模式R(C,TN,D),其函数依赖关系见图10-6,即FCTN,TND。C为所逻辑蕴涵,如图10-6中虚线所示。如果R分解为两个关系R1(C,TN),R2(C,D),则由于是的主

19、键,故R1和R2中都含有。如前所述,这样的分解是无损分解。但函数依赖TN不能被TN,所逻辑蕴涵,故分解 R1,R2不保持依赖。TN和分属于R1和R2。 R2中某门课的系名D应是R1中教该门课的教师所在系。如果R1中的教师所在的系变了,则需要修改R2中相应的属性的值。更有甚者,如果一位教师不教课,则无法表示这位教师所在系的信息。,综上所述,关系模式的分解主要有两种准则: ()只满足无损分解要求; ()既满足无损分解要求,又满足保持依赖要求。 准则()要比准则()理想,但分解要受到更多的限制。当然,只满足保持依赖,而不满足无损分解要求的分解是存在的。,下面进一步讨论无损分解和保持依赖的性质及其判别

20、方法。 首先介绍一些记号。设=R1,R2,Rn是R的一个分解,r为R的一个值,Ri(r)为r在Ri的属性(即Ui)上的投影,t为r中的一个元组,tRitUi是t在Ri的属性上的投影。定义m为m(r)= Ri(r),引理10-6 设=R1,R2,Rn是R的一个分解,r为R 的一个值,riRi(r),则有: ()r是m(r)的子集; ()如果s= m(r) ,则Ri(s)ri; ()m m(r)= m(r) .,【例10-4】 设有两个关系模式R1(AB)和R2(BC),r1,r2为其值。若r1a1b1,r2b1c1,b2c2,则s r1 r2a1b1 c1,2(s)=b1c1为r2的子集。r2中

21、的元组b2c2由于在r1中找不到匹配对象而不出现在s中。这些通过连接而被淘汰的元组称为不连接(dangling)元组。在图10-6所示的关系R(C,TN,D)中,如果一位教师不教课,则其所属的系也不能在此关系中表示。如果分解为R1(C,TN)和R3(TN,D)两个关系,就可以解决此问题。实际上,对应不教课教师的元组是以R3中的不连接元组出现的。从中也可看出,为什么通过分解可以消除更新异常。,下面介绍无损分解的测试算法。 算法10-2 检验一个分解是否无损分解。 输入:关系模式R(A1,A2,An);R上的函数依赖集F;R上的分解R1,R2,Rk。 输出:是否无损分解。 方法:建立kn的矩阵M(

22、见图10-7),其中每列对应于R的一个属性,每行对应于中的一个关系模式。 矩阵各元素的值由下面的规则确定:,对中的每一函数依赖反复进行下面的检查和处理,直至无可改变为止。检查中的属性所对应的列,找出相等的那些行。如果找到相等的两个行(或多行),就把对应行中的属性所对应的符号改成一致,即如果其中之一为aj,则其他的也改成aj ;如果这两个符号为bij和l,则将它们统一成bij和l。 如此进行到无可改变时,如果发现某一行变成了a1,a2,an,则是无损分解,否则,不是无损分解。,【例10-5】 设有关系模式(ABCDE),R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE)是R的

23、一个分解。在R上有下列函数依赖:,DE,CE。试判断是否为无损分解。 解:先构造初始矩阵,如图10-8(a)所示。然后按下列次序反复检查和修改。 b13,b23,b53b13 b13,b33b13 a4,b24,b34,b54a4 DE a3,b13a3(该列其余行的b13都须改成a3,以保持它们的一致),CE b31,b41,a1a1 再进行下去,将无任何改动,检查和修改到此结束。 最后的示于图10-8(c)。从中可以看出,第三行都是, 故是无损分解。,定理10-3 算法10-2可以正确判断一个分解是否无损分解。 定理10-4 设R1(U1),R2(U2)是R(U)的一个分解,则 为无损分解

24、的充分必要条件为(U1U2)(U1U2)或 (U1U2)(U2U1)。,【例10-6】 在图10-6所示的关系中,有 R(C,TN,D) FCTN,TND R1(C,TN) R2(TN,D)试证R1,R2是R的无损分解。 解:U1C,TN,U2TN,D,U1U2TN,U1U2C,U2U1D。 因TND,故(U1U2)(U2U1)。 上述两条件之一成立,故是无损分解。,下面介绍保持依赖的检验方法。 算法10-3 检验一个分解是否保持依赖。 输入:分解R1,R2,Rk和函数依赖集F。 输出:是否保持F。 方法:令GUi(F)。 为了检验G是否覆盖F,可对F中的每一函数依赖进行下列检查。 计算关于的

25、闭包+,并且检查是否包含在+中。为了计算+ ,不必求出G,可以分别地、反复地计算Ui(F)对X所增加的属性。,这可以用下面的算法: WHILE 有改变 DO FOR i to do :=(Ui)+Ui) Ui是中与Ri有关的属性。(Ui)+是Ui关于F的闭包。 (Ui)+Ui是Ui(F)对X+所增加的属性。经反复计算,直至不变为止。最终的就是关于的闭包X+。如果Y是X+子集,则G+。 如果对F中的所有函数依赖经检查都属于G+ ,则保持依赖,否则不保持依赖。,【例10-7】设有关系模式R(ABCD),FAB,BC,CD,DA,试判别分解=R1(AB),R2(BC),R3(CD)是否保持依赖。 解

26、:U1(F)AB,U2(F)BC,U3(F)CD,F中的前三个函数依赖已明显地在中,只要检验是否为G所蕴涵。 令ZD作为Z的初始值。 第一趟: U1DA,B空集,不变 U2DB,C空集,不变 U3DC,DD,D(D+C,D)D(A,B,C,DC,D)=C,D 第二趟: U1C,DA,B空集,不变 U2C,DB,CC C,D(C+B,C)C,D(A,B,C,DB,C)B,C,D U3B,C,DC,DC,D,B,C,D(C,D+C,D)B,C,D(A,B,C,DC,D)B,C,D,不变 第三趟: U1B,C,DA,BB B,C,D(B+A,B)B,C,D(A,B,C,DA,B))A,B,C,D 已

27、等于全部属性的集合,不可能再变,故D+A,B,C,D。因为A是A,B,C,D的子集,故属于G+,即可保持依赖。请注意,两个属性虽然不同时出现在任何分解关系中,但|=,故仍保持依赖。,10.6 关系模式的规范化,在10.1节中,我们讨论了关系数据库设计中的一些数据语义问题。数据依赖是数据语义的很小、但是很基本的一部分。数据依赖引起的主要问题是更新异常,解决的办法是进行关系模式的合理分解,也就是进行关系模式规范化。 在传统的关系数据模型中,曾限制关系的属性必须是原子的。此限制条件被命名为第一范式(1NF)。1NF既非数据语义上的限制,也非关系模型本身所固有的特性,而仅仅是语法上的一个规定,其目的在

28、于简化数据模型及其实现。,这在当时的技术条件下是合理的,事实上也满足了当时的主要应用的需要。随着技术的发展和应用的需求,关系模型进行了面向对象的扩充。在关系的框架下,允许用户自定义数据模型,关系属性中数据类型可以是组合数据、多媒体数据以及各行各业所需的特殊数据,从而突破了1NF的约束。,关系仅仅满足第一范式的条件是不够的,尤其在增、删、改时,往往会出现更新异常。为了消除这些异常,人们采用分解的办法,力求使关系的语义单纯化,这就是所谓的关系规范化。由于关系规范化的要求不同,出现了不同的范式,从1NF,2NF,3NF,BCNF,4NF,直至5NF。其规范化的条件按上述次序越来越强,后面的范式可以看

29、成前面范式的特例。 当然,从关系规范化的发展来看,有这样一些范式;在规范化时,不必按此次序一步步地去做。对于数据库设计者来说,1NF和2NF本身并不重要,最重要的是3NF和BCNF两种范式。,定义10-14 在一个关系模式的所有非平凡函数依赖中, 如果所有决定子都含有键(即决定子是超键),则此关 系属于BCNF(BoyceCodd Normal Form)。 定义10-15 在一个关系模式中,对任一非平凡函数依赖 ,如果满足下列两条件之一: ()是超键; ()是主属性;则此关系属于3NF。,比起BCNF的定义,3NF放松了一个限制,即如果是主属性,则允许其决定子不含键。因此,一个关系属于BCN

30、F,一定属于3NF,BCNF是3NF的特例。 从3NF的定义可知,违反3NF的定义可分为下面两种情况: ()是非主属性,而是键的真子集; ()是非主属性,而既非超键,也非键的真子集。,下面讨论规范化为及的算法,先介绍两个引理。 引理10-7 设是满足函数依赖集的关系模式, R1,R2,Rk是的一个无损分解,如果FiUi(F)是在Ri上的投影,S1,S2,Sm是Ri的一个无损分解,则 R1,Ri-1, S1 ,Sm,Ri+1,Rk是的一个无损分解。,引理10-8 设R是满足函数依赖集F的关系模式, =R1,R2,Rk是R的一个无损分解,则 = R1,R2,Rk ,Rk+1,Rn也是R的一个无损分

31、解。,算法10-4 求分解关系模式为BCNF的一个无损分解。 输入:关系模式R及其函数依赖集F。 输出:分解R为BCNF的一个无损分解。 方法:初始化R。 如果为中的一个非BCNF关系模式,则中必有非平凡函数依赖,其中不是的超键。将分解为S1(XA)和S2(UsA),式中US为S的属性集。由于(XA)(US),(XA)(USA)A,而成立,则有(XA)(USA)(XA)(USA),故S可以无损地分解为S1和S2,可用S1,S2取代中的S。如此反复进行下去,直至中所有关系模式都是BCNF为止。因为开始是无损分解(仅有R),且以后每次分解都是无损分解,所以根据引理10-7,始终都是无损分解。,【例

32、10-8】 图10-1所示的关系为R(S,C,G,TN,D),函数依赖集FS,CG,CTN,TND,试用算法10-4分解R为BCNF。 解:初始化R。 R的键为S,C。C,TN不是超键。首先从R中分出关系(TN,D),得R1(S,C,G,TN),R2(TN,D)。 再从R1中分出(C,TN),则得R3(S,C,G),R4(C,TN),R2(TN,D)。R2,R3,R4都属于BCNF,分解完成。,算法10-5 求分解关系模式为3NF的一个保持依赖的分解。 输入:关系模式及其函数依赖集。 输出:分解为3NF的一个保持依赖的分解。 方法:首先将以其最小覆盖代替,仍称为。找出不在中出现的中属性,把这些

33、属性单独组成一个关系模式,并且将它从中分离出去;所余的属性所组成的关系模式仍记为,其属性集仍记为。 如果最小覆盖中有一函数依赖含有中的所有属性,则把整个作为输出,算法结束。否则,进行下面的分解。 对于中所有函数依赖,将XA作为中的一个关系模式输出。但是,如果中有函数依赖A1,A2,An,可将XA1A2An作为一个关系模式输出。,定理10-5 算法10-5产生一个保持依赖且化为3NF的分解。 算法10-6 求分解关系模式为3NF的一个无损且保持依赖 的分解。 输入:关系模式及其函数依赖集。 输出:分解为3NF的一个无损且保持依赖的分解。 方法:首先用算法10-5求出分解R为3NF且保持依赖的分解

34、 ,设 R1,R2,Rk,设为的一个键,则 R(X)。,定理10-6 算法10-6产生一个保持依赖的化为3nf的无损 分解。 【例10-9】 设有关系模式R(S,SN,P,C,S,Z),其中S表示学号,SN表示学生姓名,P表示省,C表示市,S表示街道及号码,Z表示邮政编码。R满足函数依赖集FSSN,SP,SC,SS,SZP,C,SZ,ZP,ZC。试分解R为3NF。,解:首先只保持依赖,分解R为3NF。 求F的最小覆盖,所有函数依赖右边已是单属性,但有些函数依 赖是冗余的。 因为SP,SC,SS,故SP,C,S。根据传递 律可得SZ,即F中的SZ能由其他函数依赖导出,可以省去。 用算法10-5求 : (S,SN,P,C,S),(P,C,S,), (Z,P,C) 因的键为S,故可得 (S,SN,P,C,S), (P,C,S,Z),(Z,P,C),(S) 消除多余关系(S)及(Z,P,C),得 (,SN,),(,),定理10-7 设是一个关系模式,R1,R2是R的一 个分解。若是的函数依赖和多值依赖集,则为无 损分解,当且仅当(U1U2)(U1-U2)|(U2U1)。 定义10-16 在关系模式R中,若存在非平凡多值依赖 XY,则X必为R的超键。满足此条件的R属于4NF。 定义10-17 如果在关系模式中,除了由超键构成的连 接依赖外,别无其他连接依赖,则属于5NF。,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1