SQLServer教案第03周关系模式的规范化设计_第1页
SQLServer教案第03周关系模式的规范化设计_第2页
SQLServer教案第03周关系模式的规范化设计_第3页
SQLServer教案第03周关系模式的规范化设计_第4页
SQLServer教案第03周关系模式的规范化设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

数据库原理与应用一一SQLServer数据库原理与应用一一SQLServer2005教案 邹竞授课日期年月曰 第3周 授课形式 讲课 授课时数 4章节名称第03章关系模式的规范化设计教学目的与要求理解函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的概念掌握Armstrong公理系统(自反律、增广律、传递律、合并规则、伪传递规则、分解规则)掌握函数依赖集的闭包和属性闭包的求法理解最小函数依赖集的定义,掌握最小函数依赖集的求法掌握将E-R图转换成为关系模式的方法掌握根据某个关系的函数依赖找候选键的方法。理解第范式、第—范式、第三范式、 BC范式、第四范式、第五范式的概念掌握将不满足第三范式的关系模式进行分解,令分解后的关系模式满足第三范式的方法教学重点第范式、第—范式、第三范式教学难点根据某个关系的函数依赖找候选键的方法教学方法和手段讲授法结合课堂实例分析讨论教学过程与组织导入新课关系数据库是以数学理论为基础的。 基于这种理论上的优势,关系模型可以设计得较为科学, 关系操作可以较好地进行优化,许多技术问题可以得到较好地解决。讲授新课第三章关系模式的对范化设计第01节关系模式的设计问题3.1.1问题的提出设有一个关系模式R(U),其中U为由属性SNO、CNO、TNO、TNAME、TDEPT、和G组成的属性集合,其中SNO为学生学号,CNO为课程号,TNO为任课教师编号,TNAME为任课教师姓名,TDEPT为教师所在系, G为课程成绩。该关系具有如下语义:•1位学生只有1个学号,1位教师只有一个教师号,1门课程只有1个课程号;•每位学生选修的每门课程都有 1个成绩;•每门课程只有1位教师任课,每位教师可以担任多门课程;•每个教师只能在1个系,每个系可有多个教师;根据上述语义和常识,可以知道 R的候选键:{SNO,CNO}。选定{SNO,CNO}作为主键。通过分析关系模式R(U),我们可以发现下面2类冋题。第1类问题是数据大量冗余,表现在:•每门课程的任课教师的教师编号、姓名必须对选修该门课程的学生重复 1次;•每门课程的任课教师所在的系必须对选修该门课程的学生重复 1次。第2类冋题是更新出现异常(updateanomalies),表现在:•修改异常(modificationanomalies):修改一门课程的任课教师,或者一门课程由另一位教师开设,就需要修改多个兀组。如果不分修改,部分不修改,就会出现数据间的不一致。•插入异常(insertanomalies):由于主键中兀素的属性值不能取空值,如果某系的一位教师不开课或一位教师所开的课程无人选修, 则这位教师的姓名和所属的系名就不能插入; 如果一门课程列入计划而目前不开,则有关这门课的数据(CNO、TNAME和TDPT)也无法插入。•删除异常(deletionanomalies):如果所有学生都退选一门课,则有关这门课的其他数据(TNAME和TDPT)也将删除;同样,如果一位教师因故暂时停开,则这位教师的其他信息 (TDPT,CNO)也将被删除。3.1.2问题的分析这两类现象的根本原因在于关系的结构。 如果在构造关系模式的时候,不从语义上研究和考虑到属性间的这种关联,简单地将属性随意编排在一起,就必然发生某种冲突,即冗余度水平较高,更新产生异常。解决问题的根本方法就是将关系模式进行分解,也就是进行关系的规范化。3.1.3问题的解决方案在关系数据库的设计当中, 不是随便一种关系模式设计方案都是可行的。 数据库中的每一个关系模式的属性之间需要满足某种内在的必然联系。 因此,设计一个好的数据库的根本方法是先要分析和掌握属性间的语义关联,然后再依据这些关联得到相应的设计方案。人们认识到属性之间一般有 2种依赖关系,一种是函数依赖关系,一种是多值依赖关系。函数依赖关系与更新异常密切相关,多值依赖与数据冗余密切联系。基于对这两种依赖关系不同层面上的具体要求,人们又将属性之间的联系分为若干等级,这就是所谓的关系的规范化 (normalization)。解决问题的基本方案就是分析研究属性之间的联系, 按照每个关系中属性间满足某种内在语义条件来构造关系。由此产生的一整套有关理论称之为关系数据库的规范化理论。第02节函数依赖3.2.1函数依赖的概念设有关系模式R(A1,A2,,,An),简记为R(U),其中U={A1,A2,,,An}。设X、Y是U的子集,r是R的任一具体关系,r的任意两个元组门,「2,若「1[X]=r2[X](元组门、「2在X上的属性值相等)则r1[Y]=r2[丫](元组H、r2在Y上的属性值相等),则称X函数决定Y(或Y函数依赖于X),记为X宀Y。称XtY为R的一个函数依赖(简称FD)。可以这样理解:XtY的意思是:在当前值r的两个不同元组中,如果X值相同,则Y值也相同;或者说,对于X的每一个具体值,都有Y唯一的具体值与之对应,即Y值由X值决定。例3-1设有关系模式R(SNO,SNAME,CNO,SG,CNAME,TNO,TNAME),其中各属性的含义为:SNO为学生学号,SNAME为学生姓名,CNO为课程号,SG为最终成绩,CNAME为课程名。在R的关系r中,存在着如下函数依赖:SNOtSNAME(每个学号只能有1个学生姓名,SNAME函数依赖于SNO)CNOtCNAME(每个课程号只能对应1门课程名,CNAME函数依赖于CNO)(SNO,CNO)tSG(每个学生学习一门课只能有 1个最终成绩,SG函数依赖于SNO和CNO)3.2.2函数依赖的分类(1)完全函数依赖在关系模式R(U)中,如果XtY,并且对于X的任意一个真子集X1,X1tY均不成立,则称Y完全依赖于X。例如:(学号,课程号)t最终成绩部分函数依赖在关系模式R(U)中,如果XtY,并且至少存在X的一个真子集X1,使得X1tY成立,则称Y部分依赖于X。例如:(学号,课程号)t姓名传递函数依赖在关系模式R(U)中,如果XtY并且YtZ,则称Z传递依赖于X。例如:学号t系主任 (学号t系名,系名T系主任)3.2.3函数依赖的逻辑蕴涵与推理规则函数依赖的逻辑蕴涵设U为关系模式R(U,F)的所有属性的集合,F为属性集U上的所有函数依赖的集合, X、丫是U的子集,如果从F能推出函数依赖XtY,则称F逻辑蕴涵XtY。函数依赖的推理规则前面我们提到由函数依赖、函数依赖集 (F)可以推出另外的函数依赖 (XtY),那么从一个函数依赖集如何推出另外一个函数依赖?推理依据什么规则呢 ?函数依赖的推理规则是W.W.Armstrong1974年首先提出来的,称为Armstrong公理系统,由3条公理和3条推理规则构成。设有关系R(U),U是R属性的集合,F是R上函数依赖的集合。Armstrong公理系统的3条公理自反律:如果YXU,则F逻辑蕴涵Xty。增广律:若F逻辑蕴涵Xt丫,且Z5U,贝UF逻辑蕴涵XZtYZ传递律:F逻辑蕴涵Xty、Ytz,则F逻辑蕴涵XtZArmstrong公理系统的3条推理规则合并规则:F逻辑蕴涵Xty、Xtz,贝UXtYZ。证明:利用增广律将函数依赖 XtY、XtZ进行扩充得:XtxyXYtYZ由传递律得:XtYZ。伪传递规则:F逻辑蕴涵Xty、WYtz,贝UXWtz。证明:利用增广律将函数依赖 XtY进行扩充得:WXtWY,再由WXtWY、WYtZ,根据传递律得: XWtz。分解规则:F逻辑蕴涵XtY且Z二丫,则F逻辑蕴涵XtZ证明:由ZY根据自反律得:Yt乙再由XtY、YtZ根据传递律得:XtZ。定理3-1函数依赖Xty逻辑蕴涵于F的充要条件是:函数依赖Xty,可根据F,由Armstrong推理规则推出。3.2.4函数依赖集的闭包与属性闭包设F是函数依赖集,F及由F推出的所有函数依赖(即为F所逻辑蕴含的函数依赖的集合),称为函数依赖集F的闭包,记为F+。一般情况下,F<F+。如果F=F+,则称F是函数依赖的完备集。

设有关系模式tAi中Ai的属性集为X的属性闭包,记作Xf设有关系模式tAi中Ai的属性集为X的属性闭包,记作Xf+={Ai|Ai?U,Xtai?F+)由公理的自反性可知Xt算法3-1求属性集闭包输入:有限的属性集合Xf+。即:X,因此XXf+。Xf+的算法。输出:X关于F的闭包XF+。方法:①置Xf+=的初值为X;②依次扫描输出:X关于F的闭包XF+。方法:①置Xf+=的初值为X;②依次扫描则置xf+=xf+uZ;③输出xf+,算法结束。例3-2设有关系模式(AB)f+。(注:“ABCDE”解:①置F中的每个函数依赖YtZ,若Y;=XF+且Z二XfR(U,F),其中U={ABCDE},F={ABtC,BtD,CtE,ECtB,ACtB),求为“a,b,c,d,e”的简写,其它类同)(AB)f+=ab;(置属性集闭包(AB)f+初值为{AB})②依次扫描F中的每个函数依赖:•/ABtC,AB工(AB)f+,C二(AB)f+BtD,B-(AB)f+,D二(AB)F+CtE,C-(AB)f+,E二(AB)f+•/ECtB,EC』(AB)f+,B—(AB)f+•/ACtb,ACm(AB)f+,Bm(AB)f+(AB)f+=(AB)f+uc=abc,扫描下一个函数依赖(AB)f+=(ab)f+ud=abcd,扫描下一个函数依赖(AB)f+=(ab)f+ue=abcde,扫描下一个函数依赖(AB)f+不变,扫描下一个函数依赖(AB)f+不变,扫描结束输出:xf+=abcde即XF+={A,B,C,D,E}3.2.5函数依赖集的等价和覆盖(1)函数依赖集的等价概念设F和G是两个函数依赖集,如果 F+=G+,则称F和G等价,又称为F覆盖G或G覆盖F。(2)判断两个函数依赖集等价的方法在G上计算Xg+,看是否Y^XG+。若是,则说明XtY?G+,于是继续检查F中的其他依赖,如果全部满足XtY?G+,则F〈G+。如果在检查中发现有一个 XtY不属于G+,就可以判定FG+不成立,即F和G不等价。如果经判断FG+,则类似地重复上述做法,判断是否GF+,如果成立则可断定F和G等价。定理3-2F+=G+的充分必要条件是F5G+且G5F+。3.2.6函数依赖集的最小化(1)最小函数依赖集的定义如果函数依赖集F同时满足下列3个条件,则称F为一个极小函数依赖集(亦称为最小依赖集或最小覆盖),记为Fmin。F中任一函数依赖的右部都是单属性。F中的任一函数依赖Xta,其F-{XtA)与F不等价。F中的任一函数依赖Xta,其X有真子集Z,F-{XtA}U{ZtA}与F不等价。条件①说明在最小函数依赖集中的所有函数依赖都应该是 “右端没有多余属性”的最简单的形式;条件②保证了最小函数依赖集中无多余的函数依赖; 条件③要求最小函数依赖集中的每个函数依赖的左端没有多余属性。(2)最小函数依赖集的求法定理3-3每一个函数依赖集F均等价于一个极小函数依赖集 Fm,此Fm称为F的最小依赖集。算法3-2求最小函数依赖集的算法(本算法也是对定理 3-3的证明)。可以分三步对F进行“极小化处理”,找出F的一个最小依赖集:逐一检查F中各函数依赖Xty,若Y=A[A2,Ak,k>2,则用{XtAj|j=1,2,,k}取代Xty。逐一检查F中各函数依赖Xta,令G=F-{XtA},若A?XG+,则从F中去掉此函数依赖。逐一取出F中各函数依赖Xta,设X=B1B2,Bm,逐一检查Bi(i=1,2,,,m),如果A?(X-Bi)F+,则以X-Bi取代X。因为对F的每一次改造都保证了改造前后的两个函数依赖集等价,所以最后得到的 F就是极小依赖集,并且与原来的 F等价。注意:F的最小依赖集Fm不一定是唯一的,它与对各函数依赖及Xta中X各属性的处置有关。例3-3设F={Atbc,BtAC,CtA),对F进行极小化处理。解:①根据分解规则把 F中的函数依赖转换成右部都是单属性的函数依赖集合,分解后的函数依赖集仍用F表示:F={AtB,AtC,BtA,BtC,CtA}②去掉F中冗余的函数依赖:

判断AtB是否冗余:设:G仁{AtC,BtA,BtC,CtA),得:AG1+=AC•/B-AG1+ •••AtB不冗余判断AtC是否冗余:设:G2={AtB,BtA,BC,CA),得:AG2+=ABC•/C?Ag2+ 二AtC冗余(以后的检查不再考虑AtC)判断Bta是否冗余:设:G3={AtB,BtC,CtA},得:BG3+=BCA•/A?BG3+ •••Bta冗余(以后的检查不再考虑BtA)判断BtC是否冗余:设:G4={AtB,CtA},得:BG4+=B•/C-一BG4+ •BtC不冗余判断CtA是否冗余:设:G5={AtB,BtC),得:CG5+=CTA七Cg5+ •-CtA不冗余由于该例中的函数依赖表达式的左部均为单属性,因而它不需要进行算法 3-2中第③步的检查。上述结果为最小函数依赖集,用 Fm表示为:Fm={Atb,btC,CtA}例3-4求F={ABtC,Atb,btA}的最小函数依赖集Fm。解:①将F中的函数依赖都分解为右部为单属性的函数依赖: F已经满足该条件。②去掉F中冗余的函数依赖:判断ABtC是否冗余:设:G仁{AtB,BtA},得:(AB)G1+=AB•/C-(AB)g1+ •-ABtC不冗余判断AtB是否冗余:设:G2={ABtC,BtA},得:AG2+=A•••B'(AB)G2+ •-AtB不冗余判断BtA是否冗余。设:G3={ABtC,AtB},得:BG3+=BTA二Bg3+ •-BtA不冗余经过检验后的函数依赖集仍然为 F。去掉各函数依赖左部冗余的属性:本题只需考虑 ABtC的情况。方法1:在决定因素中去掉B,若C?AF+,则以AtC代替ABtCo求得:Af+=ABC•/C?AF+ •••以atC代替ABtcFm={AtC,AtB,BtA}方法2:在决定因素中去掉A,若C?BF+,则以BtC代替ABtCo求得:bf+=abc•/C?BF+ •以Btc代替ABtcFm={BtC,AtB,BtA}(3)极小化算法在数据库设计中的应用在数据库的概念模型设计中,实体及属性的冗余可以通过分析确定, 而联系的冗余可以通过函数依赖集的极小化算法查出和消除。利用函数依赖集最小化算法消除概念模型中的联系冗余的步骤为:把E-R图中的实体、联系和属性符号化:符号化的信息模型比较简洁,有利于化简。将实体之间的联系用实体主键之间的联系表示,并转换为函数依赖表达式。对于1:1联系,转化为两个函数依赖表达式。例如图3-1中的1:1联系可转化为A.atB.b和B.bTA.b,实体集A、B的主键分别为a和boA.aM~<^A_B^^IB.b图3-1实体间1:1联系对于1:n的联系,每个联系转化为一个函数依赖表达式, 函数依赖表达式中的决定因素为联系的n方实体集,依赖因素为1方实体集。例如图3-2中的1:n联系可转化为B.btA.a,实体集A、B的主键分别为a和b。A.a IB.b图3-2实体间1:n联系对于m:n的联系,每个联系转化为一个函数依赖表达式。函数依赖表达式中的决定因素为相关实体集的组合,依赖因素为联系的属性(当联系无属性时,依赖因素为联系名) 。例如图3-3可以转化为(A.a,B.b)tCo利用求函数依赖集的最小化算法进行极小化处理。 处理时应把重要的联系放在后面, 以免冗余时被消除。重新确定函数依赖集:设原函数依赖表达式集合为 F,最小函数依赖集为 G,差集为D,则D=F-G。逐一考查D中每一个函数依赖表达式,根据实际情况确定是否应该去掉。最后得出一组函数依赖表达式。用新得出的函数依赖表达式形成新 E-R图。3.2.4侯选键(1) 候选建的定义与求法设有关系模式R(U),F是R上的函数依赖集,K是U的一个子集。如果F逻辑蕴涵KU,且不存在K的任何真子集Ki使得F逻辑蕴涵 U,则称K是R的侯选键。该定义也可以用F的闭包形式表述如下:设R(A1,A2,,An)为一关系模式,F为R所满足的一组函数依赖,K为{A1,A2,,An}的一个子集,如果K满足下列2个条件,则称K是关系模式R的候选键。KtA1,KtA2,,KtAn均?F+。不存在K的任何真子集Ki,使得K〔tA[、Kita?、,、KitAn?F+。上述定义实际上也就是求关系模式键的方法。侯选键常简称为键或码。(2) 几个重要相关概念主键他称关键字),当侯选键多于1个时,可以选中其中的 1个作为主键。所有侯选键的属性称为主属性。不包含在任何侯选键中的属性称为非主属性。例3-5关系模式T(学号課程号,教师号,教师姓名,联系电话)。在T中存在下列自然的函数依赖集:F={(学号,课程号)T教师号,教师号T教师姓名,教师号T联系电话}确定侯选键、关键字、主属性、非主属性。分析:由函数依赖集F,根据传递规则可以推出:(学号,课程号)T教师姓名,(学号,课程号)T联系电话。再根据自反律可以推出: (学号,课程号)t(学号,课程号)进一步根据增广律推出:(学号,课程号)t(学号,课程号,教师号,教师姓名,联系电话)因此(学号,课程号)是该关系模式的侯选键,并且在这个关系模式中没有其他的侯选键 ,因此该关系模式的主属性:学号,课程号;非主属性:教师号,教师姓名。第03节范式理论第一范式如果关系模式R的每个属性都是简单属性(不可再细分的简单项,不是属性组合或组属性) ,则称R属于第一范式(FirstNormalForm,简称为1NF),记为:R?1NF。例3-6关系模式R(教师号,教师姓名,联系方式,课程号,课程名)。其中的联系方式由联系电话和通讯地址两列组成,不是简单属性,因此 R不属于1NF,是非规范化关系。应当把R中的联系方式分解为联系电话、通讯地址两个属性,使 R的每个属性都是简单属性,从而使R属于1NF。第一范式只要求关系模式的关系是标准的二维表,没有论及关系模式中所存在的函数依赖关系。这种范式是规范化的关系模式最基本的要求,是所有范式的基础。第二范式如果关系模式R?1NF,且每一个非主属性完全函数依赖于 R的某个侯选键,则称R属于第二范式(简称为2NF),记为R?2NF。2NF就是不允许关系模式的非主属性与侯选键之间的部分函数依赖。例3-7设关系模式R(教师号,教师姓名,联系电话,课程号,课程名)中,每位教师只有1个教师号、1个姓名、1个联系电话,1个教师号只能给一个教师使用, 1门课程可由多位教师授课。则 R的侯选键是(教师号,课程号),即:

(教师号,课程号)t教师姓名(教师号,课程号)t联系电话(教师号,课程号)t课程名但教师号、课程号分别是(教师号,课程号)的子集,实际上:教师号t教师姓名教师号T联系电话课程号T课程名也就是说在关系R中存在着非主属性对侯选键的部分依赖。因此关系 R不是第二范式。考虑将关系R分解为:R1(教师号,教师姓名,联系电话)R2(教师号,课程号,课程名)则由于R1的侯选键只有教师号,在R1中不存在非主属性对侯选键的部分函数依赖 ,因此R1?2NF。第二范式如果关系模式R?2NF,且每一个非主属性都不传递依赖于某个侯选键, 贝U称R属于第三范式(简称为3NF),记为:R?3NF。例3-8关系模式S(SNO,SNAME,SAGE,DNO,DNAME)。其中:SNO为学生学号,SNAME为学生姓名,SAGE为学生年龄,DNO为学生所在的系号, DNAME为学生所在系的系名;这个关系模式中存在的函数依赖集:F={SNOtNAME,SNOtSAGE,SNOtDNO,DNOtDNAME}在这个关系模式中,显然SNOt(SNO,SNAME,SAGE,DNO,DNAME),即SNO是关系模式的侯选键,且是唯一的侯选键,并且非主属性对侯选键是完全函数依赖,不存在非主属性对侯选键的部分函键,且是唯一的侯选键,并且非主属性对侯选键是完全函数依赖,不存在非主属性对侯选键的部分函数依赖。因此,关系模式依赖推出的,我们称系名我们考察关系模式S?2NF,然而SNOtDNAME是由SNOtDNO、DNOt数依赖。因此,关系模式依赖推出的,我们称系名我们考察关系模式(DNAME)传递依赖于学号(SNO),因此S不属于第三范式。S的关系实例,很容易发现这种关系中同样存在着前面提到的数据存储和数据操作的弊端。如果我们将上述关系分解成:S1=(SNO,SNAME,SAGE,DNO)S2=(DNO,DNAME)则S1?3NF,S2?3NF,它们各自的关系实例克服了存储上的数据冗余,操作上的更新异常、删除异常、插入异常等问题。说明:我们还可以从直观的角度来判断一个关系模式是否是 3NF。如果关系模式属于3NF,那么,不允许关系模式的属性之间存在这样的非平凡函数依赖 XtY:X不包含侯选键,Y是非主属性。对于例3-8的关系模式S(SNO,SNAME,SAGE,DNO,DNAME),侯选键是SNO,但在它的函数依赖集F中存在这样的函数依赖, DNOtDNAME,而SNO不包含DNO,所以S不属于3NF。BCNF范式BCNF由Boyce和Codd提出,通常认为是3NF的改进形式。设R(U,F)是一个关系模式,X?U,A?U,且X不包含A,如果R?1NF,且对于任意Xta,X都包含了R的一个候选键,则称R满足Boyce-Codd范式(BCNF),记为R?BCNF。由于BCNF排除了任何属性对键的传递依赖和部分依赖, 所以,如果R?BCNF,则必定R?3NF;但是,如果R?3NF,不一定有R?BCNF成立。因此,BCNF比3NF更为严格。例3-9设关系模式STC(SNO,TNO,CNO)表达了学生选课信息。其中: SNO为学生学号,TNO为教师号,CNO为课程号。规定每位教师只教 1门课程,1门课程可由多位教师讲授,每位学生的每一门课程只由1位教师授课。因此,对于STC有:TNOtCNO、(CNO,SNO)宀TNOSTC显然满足3NF。STC的候选键有两种:①(TNO,SNO)•,②(CNO,SNO)。而函数依赖TNOtCNO中,TNO显然没有包含任何候选键。所以,STC不属于BCNF。如果已经设置了课程,并确定了任课教师,但是还没有学生选修, 则教师与课程信息就不能插入,而删除某个学生时,连同教师和课程的信息也删除了。考虑把STC分解为SC(SNO,CNO)、ST(SNO,TNO)两个关系模式,贝USC?BCNF、ST?BCNF。一个RDBMS模式中的关系模式如果都属于 BCNF,则在函数依赖的范畴内, 已经实现了彻底的分离,消除了插入、删除和修改的异常。 3NF的“不彻底”表现在当关系模式具有多个候选键,且这些候选建具有公共属性时,这些候选键可能存在部分函数依赖和传递函数依赖。3.3.5多值依赖与第四范式(1)多值依赖设有关系模式R(U),U是属性集,X、Y、Z是U的子集,Z=U-X-Y。如果R的任一关系,对于X的一个确定值,都存在Y的一组值与之对应,且Y的这组值又与Z中的属性值不相关,则称Y多值依赖于X,或称X多值决定Y,记为XttY。为了说明多值函数依赖,请观察下面这张表:公司产品销售国家IBMPC中国IBMPC德国IBMPC美国IBMNOTEBOOK中国IBMNOTEBOOK德国IBMNOTEBOOK美国ASUSDVDROM中国ASUSDVDROM韩国ASUSNOTEBOOK中国ASUSNOTEBOOK韩国MSI主板日本MSI主板法国在关系模式R中,对于(公司,销售国家)的一个值(IBM,中国),有一组产品值{PC,NOTEBOOK}与之对性,这组值仅仅函数依赖于公司,而与销售国家无关,于是产品多值函数依赖于公司, 而和销售国家无关,即公司tt产品。R的主键是(公司,产品,销售国家),R是ALL-KEY键,但是也存在另一种冗余性, 例如ASUS公司新增了一种产品,则必须为 ASUS销售的每一个国家增加一条记录,同样,如果 IBM新增了一个销售国家,就必须为每个产品增加一条记录。关于多值依赖的另一个等价的定义是:设 R(U)是属性集U上的一个关系模式,X、Y是U的子集,对于R(U)的任一关系r,设t和s是r中的两个元组,有t[X]=s[X],贝Ur中也存在元组u和v,有①u[X]=v[X]=t[X]=s[X] :②u[Y]=t[Y],u[U-X-Y]=s[U-X-Y]:③v[Y]=s[Y],v[U-X-Y]=t[U-X-Y]则称Y多值函数依赖于X,记作Xtt丫。意思是:如果r有两个元组在属性X上的值相等,则交换着两个元组在与X无关的属性Y上的值,得到的两个新元组必定也在 r中。多值依赖具有以下性质:多值依赖具有对称性:如果 XnY,贝UXnZ。(Z=U-X-Y)多值依赖中,若XnY且Z工^,则XnY为非平凡的多值依赖, 否则为平凡的多值依赖。函数依赖可以看作多值依赖的特例:如果 XtY,则XnY。多值依赖与函数依赖的之间存在以下基本区别:多值依赖的有效性与属性集的范围有关:在关系模式 R中,函数依赖XtY的有效性仅仅决定于X、Y这两个属性集;在多值依赖中,XttY在U上是否成立,而且要检查Z的值。因此,即使XttY在V上成立(VU),但在U上不一定成立。多值依赖没有自反律:如果函数依赖 XtY在R上成立,则对于任何Y'Y,都有XtY'成立;对于多值依赖XttY,如果在R上成立,却不一定对于任何 Y'Y都有XttY'成立。(2)第四范式设R?1NF,如果对于R的每个非平凡多值依赖Xt丫(丫二X),X都含有主属性,则称R属于第四范式(简称为4NF),记为R?4NF。4NF限制关系模式的属性之间不能有非平凡且非函数依赖的多值依赖。因为 4NF要求每个非平凡多值依赖XttY,X都含有主属性,则必然有 XtY,所以4NF所允许的非平凡多值依赖实际上是函数依赖。显然,如果 R?4NF,则R?BCNF。简单来说,如果在关系数据库的每一张表中, 对于任何一个非平凡多值依赖 Xtt丫(其中丫非空,也不是X的子集,X、Y并未包含该表的全部字段),X都包含了该表的一个候选键,则称该数据库满足第四范式。例如,上例关系模式R(公司,产品,销售国家)就存在非平凡多值依赖:公司tt产品,但是,R是All-Key的,即主属性为(公司产品,销售国家),这样,属性公司”未包含该模式的主属性,故R不满足4NF。如果将R分解为R1(公司产品),R2(公司,销售国家),则分解后的关系满足4NF。例3-10设关系模式SPW(SNO,SPN,SWN)表达了学生的娱乐爱好(如足球)和社会兼职(如家教)信息(其中SNO为学生学号,SPN为娱乐爱好,SWN为社会兼职)。由于每个学生可以有0或多个娱乐爱好和社会兼职,故SNO与SPN、SWN之间是一对多关系,且SPN与SWN无直接联系(即设SU=(SNO,SPN,SWN),贝USWN=U-SNO-SPN),即有SNOttSPN、SNOttSWN,使得SPW表中可能有数据冗余,有大量空值存在。显然,SPW不属于4NF。考虑把SPW分解为SP(SNO,SPN)、SW(SNO,SWN)两个关系模式,则SP?4NF、SW?4NF。336连接依赖与第五范式(1)连接依赖设R(U)是属性集U上的关系模式,X2、…、Xn是U的子集,且X1UX2U…UXn=U,如果R=R(X1R(X2)I…•I,R(Xn)对R的一切关系均成立,则称 R在X1、X2、…、Xn上具有n目依赖连接,记为1 [[Xi][X2]…[Xn]。连接依赖也是一种数据依赖,它不能直接从语义中推出,只能从连接运算中反映出来。例3-11设关系模式SPW(SNO,SPN,SWN)。设有关系SPW,如果将SPW模式分解为SP、PW、WS,并进行sPPW及sPpWWS的自然连接,其操作数据及连接结果如图3-4。从图中可以看出,SPW中存在连接依赖「[SP][PW][WS]。

SPWSPPWWSSNOSPNSWNs1p1w2s1p2:SPWSPPWWSSNOSPNSWNs1p1w2s1p2:w1s2p1w1s1p1w1splPWSNOSPNs1p1s1Pp2s2p1SPNSWNp1w2p2w1p1w1SWNSNOw2s1w1s1w1s2SPIPWIWSSNOSPNSWNs1p1w2s1p1w1Ps1p2:w2s1p2w1s2p1w2s2p1w1SNOSPNSWNs1p1w2s1p2w1s2p1w1s1p1w1图3-4 连接依赖举例(2)第五范式如果关系模式R中的每个连接依赖均由 R的候选键所隐含(即在连接时,所连接的属性均为候选键),则称R属于第五范式(简称为5NF),记为R?5NF。例3-11中,因为SPW仅有的候选键(SNO,SPN,SWN)不是SPW是3个投影SP、PW、WS自然连接的公共属性

温馨提示

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

最新文档

评论

0/150

提交评论