数据库原理与应用(MySQL版) 课件 第8章 关系规范化理论_第1页
数据库原理与应用(MySQL版) 课件 第8章 关系规范化理论_第2页
数据库原理与应用(MySQL版) 课件 第8章 关系规范化理论_第3页
数据库原理与应用(MySQL版) 课件 第8章 关系规范化理论_第4页
数据库原理与应用(MySQL版) 课件 第8章 关系规范化理论_第5页
已阅读5页,还剩122页未读 继续免费阅读

下载本文档

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

文档简介

第8章

关系规范化理论

数据库原理与应用1本章内容8.1关系规范化的意义8.2函数依赖8.3函数依赖的推理规则8.4范式8.5关系模式的分解准则28.1关系规范化的意义关系模式的好与坏直接影响到数据库中数据的操作效率。下面通过一个示例来分析“不好”的关系模式会带来的问题。3示例假设有描述学生借阅书籍的关系模式:S-B-B(SID,Email,ISBN,bname,category,price,borrow_time,return_time)其中各属性分别为:学号、邮箱、国际标准书号、图书名、图书分类、价格、借书时间和还书时间。该关系模式的主键为

(SID,ISBN,borrow_time)。4数据示例SIDEmailISBNbnamecategorypriceborrow_timereturn_time202101002liuchen@9787302505945零基础入门学习C语言TP792021-10-159:45:002021-10-2913:42:00202101004zxhong@9787302505945零基础入门学习C语言TP792021-10-118:45:002021-11-214:00:00202102001zhanghai@9787304103415我的最后一本发音书H482021-9-2110:05:002021-10-1214:00:00202102003zshshan@9787304103415我的最后一本发音书H482021-9-2411:15:002021-10-1414:00:00202101002liuchen@9787111641247深入理解Java虚拟机TP1292022-6-159:45:00NULL202101002liuchen@9787100158602牛津高阶英汉双解词典H1692022-6-159:45:00NULL5存在问题数据冗余问题数据更新问题数据插入问题数据删除问题6本章内容8.1关系规范化的意义8.2函数依赖8.3函数依赖的推理规则8.4范式8.5关系模式的分解准则78.2函数依赖函数依赖非平凡的函数依赖平凡的函数依赖完全函数依赖、部分函数依赖传递函数依赖候选键、主属性、非主属性81、函数依赖函数Y=f(X)表示的是X和Y的对应关系,即给定一个X值,都会有一个Y值和它对应。也可以说,X函数决定Y,或Y函数依赖于X。9函数依赖(续)函数依赖注重的是语义上的关系,如:

书名=f(ISBN)“ISBN”是自变量X,“书名”是因变量或函数值Y。一般把X函数决定Y,或Y函数依赖于X表示为:

X→Y。10示例学生关系模式Students(SID,Sname,gender,college,Email)有以下函数依赖关系:SID→Sname,

SID→gender,

SID→college,

SID→Email11函数依赖定义设有关系模式R(A1,A2,…,An),X和Y均为{A1,A2,…,An}的子集,r是R的任一具体关系,t1、t2是r中的任意两个元组;如果由t1[X]=t2[X]可以推导出t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。122、非平凡的函数依赖如果X→Y,但Y不包含于X,则称

X→Y是非平凡的函数依赖。Students(SID,Sname,gender,college,Email)的函数依赖:SID→Sname,SID→gender, SID→college,SID→Email均为非平凡的函数依赖。无特别声明,我们讨论的都是非平凡的函数依赖。133、平凡的函数依赖如果X→Y,但Y包含于X,则称X→Y是平凡的函数依赖。例如:(SID,Sname)→Sname144、完全函数依赖、部分函数依赖如果X→Y,并且对于X的一个任意真子集X'都有X'↛Y,则称Y完全函数依赖于X,记作:如果X'→Y成立,则称Y部分函数依赖于X,记作:155、传递函数依赖如果X→Y(非平凡函数依赖,并且Y↛X)、Y→Z,则称Z传递函数依赖于X。16例1设有关系模式S(Sno,Sname,Sdept,Dept_master),主键为Sno,则有如下函数依赖:由:可推出:176、候选键、主属性、非主属性设K为关系模式R的一个属性或属性组,若满足:则称K为关系模式R的候选键(也称为候选码)包含在候选键中的属性为主属性,不包含在任何候选键中的属性称为非主属性。18例8-2有关系模式:图书(书号,书名,出版日期,作者号,作者名,作者联系电话,图书价格),语义如下:每部图书有唯一的书号;每个作者有唯一的作者号;每部图书有唯一的作者,每个作者可以编写多部图书;19例8-2(续)每部图书有唯一的出版日期和价格;每个作者有唯一的联系电话;书名可能有重复;作者名可能有重复。判断该关系模式是否存在传递函数依赖。20例8-2(续)由:书号→作者号

作者号→作者名

作者号→作者联系电话

可推出:可见该关系模式存在传递函数依赖。21本章内容8.1关系规范化的意义8.2函数依赖8.3函数依赖的推理规则8.4范式8.5关系模式的分解准则228.3函数依赖的推理规则8.3.1Armstrong公理8.3.2闭包及候选键求解方法8.3.3极小函数依赖集238.3.1Armstrong公理函数依赖的推理规则最早出现在1974年W.W.Armstrong论文中,因此称这些规则为Armstrong公理。自反律增广律传递律合并规则分解规则伪传递规则复合规则241、自反律设有关系模式R(U,F),U为关系模式R上的属性全集,F是R上的函数依赖集,X,Y,Z,W均是U的子集,(用XY表示X∪Y)若Y⊆X⊆U,则X→Y在R上成立,即一组属性函数决定它的所有子集。例,对Students(SID,Sname,gender,college,Email),有:(SID,Sname)→Sname和(SID,Sname)→SID例,对Students(SID,Sname,gender,college,Email),有:(SID,Sname)→Sname和(SID,Sname)→SID252、增广律若X→Y在R上成立

,且Z⊆U,则XZ→YZ在R上也成立。例:Students(SID,Sname,gender,college,Email)因:SID→Sname

成立,则:(SID,Email)→(Sname,Email)263、传递律若X→Y和Y→Z在R上成立,则X→Z在R上也成立。对:S(SID,Sname,Sdept,Dept_master)由:SID→Sdept,Sdept→Dept_master可以推出:SID→Dept_master274、合并规则若X→Y和X→Z在R上成立,则X→YZ在R上也成立。对:Students(SID,Sname,gender,college,Email)有:SID→Sname,SID→Email则有:SID→(Sname,Email)成立285、分解规则若X→Y和Z⊆Y在R上成立,则X→Z在R上也成立。对:Students(SID,Sname,gender,college,Email)

有:SID→(Sname,gender,college,Email)则有:SID→Email

成立296、伪传递规则若X→Y和YW→Z在R上成立,则XW→Z在R上也成立。borrow(ISBD,SID,borrow_time,return_time)的函数依赖:(ISBD,SID,borrow_time)→return_time

增加属性IDentity,borrow(ISBD,SID,borrow_time,return_time,IDentity)有IDentity→SID,(ISBD,SID,borrow_time)→return_time则有:(ISBD,IDentity,borrow_time)→return_time307、复合规则若X→Y和W→Z在R上成立,则XW→YZ在R上也成立。对S(SID,Sname,Sdept,Dept_master)有函数依赖:

SID→Sname和Sdept→Dept_master则有:(SID,Sdept)→(Sname,Dept_master)318.3.2闭包及候选键求解方法对于一个关系模式R(U,F),引入了函数依赖集闭包概念,推导全部的函数依赖。321.函数依赖集的闭包定义:在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。设X、Y是U的子集,对于关系模式R的任何一个关系r,若函数依赖X→Y都成立(即r中任意两元组t,s,若t[X]=s[X],则t[Y]=s[Y])那么称F逻辑蕴涵X→Y,或称函数依赖X→Y可由F导出。所有被F逻辑蕴涵的函数依赖的全集称为F的闭包,记作F+。33例8-3设有关系模式R(A,B,C,G,H,I)及其函数依赖集F={A→B,A→C,CG→H,CG→I,B→H}判断A→H、CG→HI和AG→I是否属于F+。34例8-3(续)解:根据Armstrong公理系统:(1)由:A→B和B→H,根据传递性,可推出A→H。(2)由:CG→H和CG→I,根据合并规则,可推出CG→HI。(3)由:A→C和CG→I,根据伪传递规则,可推出AG→I。因此,A→H、CG→HI和AG→I均属于F+。35例8-4已知关系模式R(A,B,C,D,E,G)及其函数依赖集F:F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→BD,CE→AG}判断BD→AC是否属于F+。36例8-4(续)解:由D→EG,可推出:D→E,BD→BE…①又由BE→C,C→A,

可推出:BE→A,BE→AC…②由①、②,可推出BD→AC,因此BD→AC被F所蕴涵,即BD→AC属于F+。37计算F+的过程步骤1:

初始,F+=F。步骤2:

对F+中的每个函数依赖f,在f上应用自反性和增广性,将结果加入到F+中;对F+中的一对函数依赖f1和f2,如果f1和f2可以使用传递律结合起来,则将结果加入到F+中;对F+中的一对函数依赖f1和f2,如果能用合并规则、伪传递规则和复合规则,则将结果加入到F+中;对F+中的每个函数依赖f,如果能应用分解规则,将结果加入到F+中;38计算F+的过程(续)步骤3:重复步骤2,直到F+不再增大为止。例:有关系模式R<U,F>,U=(X,Y,Z),F={X→Y,Y→Z},应用Armstrong公理系统计算得出:F+={X→X,X→Y,X→Z,X→XY,X→YZ,X→XZ,Y→Y,Y→Z,Y→YZ,Z→Z,XY→X,XY→Y,XY→Z,XY→XY,XY→YZ,XY→XZ,XY→XYZ,XZ→X,XZ→Y,XZ→Z,XZ→XY,......}39函数依赖集的闭包(续)由于F+中包含大量的冗余信息,因此计算F+的全部函数依赖是不必要的。可用属性集闭包来判断X→Y是否为F所蕴涵。402、属性集闭包判定函数依赖X→Y是否能由F导出的问题,可转化为求X+并判定Y是否是X+子集的问题。即求函数依赖集闭包问题可转化为求属性集问题。定义:设有关系模式R(U,F),U为R的属性集,F是R上的函数依赖集,X是U的一个子集(X⊆U)。用函数依赖推理规则可从F推出的函数依赖X→A中所有A的集合,称为属性集X关于F的闭包,记为X+(或X+F)。412、属性集闭包(续)对关系模式R(U,F),求属性集X相对于函数依赖集F的闭包X+的算法如下:步骤1:初始,X+=X。步骤2:如果F中有某个函数依赖Y→Z满足Y⊆X+。

则X+=X+∪Z。步骤3:重复步骤2,直到X+

不再增大为止。42例8-5(续)步骤2:①对X+

中的X,∵有X→Y,∴X+=X+∪Y=XY②对X+

中的Y,∵有Y→Z,∴X+=X+∪Z=XYZ在函数依赖集F中,Z不出现在任何函数依赖的左部,因此X+将不会再扩大,所以最终X+=XYZ。43例8-5设有关系模式R(U,F),其中属性集U={X,Y,Z,W},函数依赖集F={X→Y,Y→Z,W→Y},计算X+、(XW)+解:(1)计算X+步骤1:初始:X+=X。44例8-5(续)(2)计算(XW)+步骤1:初始:(XW)+=XW。步骤2:①对(XW)+

中的X,∵有X→Y,∴(XW)+=XW+∪Y=XWY②对(XW)+

中的Y,∵有Y→Z,∴(XW)+=XW+∪Z=XWYZ45例8-5(续)③对(XW)+

中的W,有W→Y,但Y已在(XW)+中,因此(XW)+

保持不变。④对(XW)+中的Z,由于Z不出现在任何函数依赖的左部,因此(XW)+

保持不变。最终(XW)+=XWYZ。46例8-6

设有关系模式R(U,F),其中U={A,B,C,D,E},F={(A,B)→C,B→D,C→E,(C,E)→B,(A,C)→B},计算(AB)+。解:步骤1:初始:(AB)+=AB。47例8-6(续)步骤2:①对(AB)+

中的A、B,∵有(A,B)→C,∴(AB)+=(AB)+∪C=ABC②对(AB)+

中的B,∵有B→D,∴(AB)+=(AB)+∪D=ABCD③对(AB)+

中的C,∵有C→E,∴(AB)+=(AB)+∪E=ABCDE48例8-6(续)至此,(AB)+

已包含了R中的全部属性,因此(AB)+

计算完毕。最终(AB)+=ABCDE。49例8-7已知关系模式R=(A,B,C,D,E,G),其函数依赖集F为:F={AB→C,C→A,BC→D,ACD→B,D→EG,BE→C,CG→BD,CE→AG}求(BD)+,并判断BD→AC是否属于F+。50例8-7(续)解:(BD)+={B,D,E,G,C,A}由于{A,C}⊆(BD)+

,因此BD→AC可由F导出,即BD→AC属于F+。51例8-8已知关系模式R(A,B,C,E,H,P,G),其函数依赖集F为:F={AC→PE,PG→A,B→CE,A→P,GA→B,GC→A,PAB→G,AE→GB,ABCP→H}证明BG→HE属于F+。52例8-8(续)证:因为(BG)+={A,B,C,E,H,P,G},而{H,E}⊆(BG)+所以BG→HE可由F导出,即BG→HE属于F+。53属性集闭包(续)求属性集闭包的另一个用途是:如果属性集X的闭包X+包含了R中的全部属性,则X为R的一个候选键。543、候选键的求解方法对于给定的关系模式R(A1,A2,…,An)和函数依赖集F,现将R的属性分为如下四类:(1)L类:仅出现在函数依赖左部的属性。(2)R类:仅出现在函数依赖右部的属性。(3)N类:在函数依赖的左部和右部均不出现的属性。(4)LR类:在函数依赖的左部和右部均出现的属性。553、候选键的求解方法(续)对R中的属性X,可有以下结论:(1)若X是L类属性,则X一定包含在关系模式R的任何一个候选键中;若X+包含了R的全部属性,则X为关系模式R的唯一候选键。(2)若X是R类属性,则X不包含在关系模式R的任何一个候选键中。(3)若X是N类属性,则X一定包含在关系模式R的任何一个候选键中。(4)若X是LR类属性,则X可能包含在关系模式R的某个候选键中。56例8-9设有关系模式R(U,F),其中U={A,B,C,D},F={D→B,B→D,AD→B,AC→D},求R的所有候选键。由A、C两个属性是L类属性,因此A、C两个属性必定在R的任何一个候选键中;又由(AC)+=ABCD,即(AC)+包含了R的全部属性,因此,AC是R的唯一候选键。57例8-10设有关系模式R(U,F),其中U={A,B,C,D,E,G},F={A→D,E→D,D→B,BC→D,DC→A},求R的所有候选键。58例8-10(续)由:C、E两个属性是L类属性,因此C、E两个属性必定在R的任何一个候选键中。由:G是N类属性,故属性G也必定在R的任何一个候选键中。又由:(CEG)+=ABCDEG,即(CEG)+包含了R的全部属性,因此,CEG是R的唯一候选键。59例8-11设有关系模式R(U,F),其中U={A,B,C,D,E,G},F={AB→E,AC→G,AD→B,B→C,C→D},求R的所有候选键。60例8-11(续)由:A是L类属性,故A必定在R的任何一个候选键中。由:E、G是两个R类属性,故E、G一定不包含在R的任何候选键中。由:A+=A≠ABCDEG,故A不能单独作为候选键。61例8-11(续)由:B、C、D三个属性均是LR类属性则:这三个属性中必有部分或全部在某个候选键中。将B、C、D依次与A结合,分别求闭包:

(AB)+=ABCDEG,因此AB为R的一个候选键;

(AC)+=ABCDEG,因此AC为R的一个候选键;

(AD)+=ABCDEG,因此AD为R的一个候选键。综上所述,关系模式R共有三个候选键:AB、AC和AD。62例8-12设有关系模式R(U,F),其中U={A,B,C,D,E},F={A→BC,CD→E,B→D,E→A},求R的所有候选键。63例8-12(续)由:关系模式R中没有L类、R类和N类属性,所有的属性都是LR类属性。因此,先从A、B、C、D、E属性中依次取出一个属性,分别求它们的闭包: A+=ABCDE B+=BD C+=C D+=D E+=ABCDE64例8-12(续)

由:A+和E+都包含了R的全部属性,得:A和E分别是R的一个候选键。

接下来,从R中任意取出两个属性,分别求他们的闭包。由于A、E已是R的候选键了,因此只需在C、D、E中进行选取即可。65例8-12(续)(BC)+=ABCDE(BD)+=BD(CD)+=ABCDE因此,BC和CD分别是R的一个候选键。至此,关系模式R的全部候选键为:A、E、BC和CD。668.3.3极小函数依赖集对于一个关系模式R(U,F),利用推理规则推导出其全部的函数依赖集是非常庞大的,但是每一个函数依赖集均等价于一个极小函数依赖集。678.3.3极小函数依赖集(续)对关系模式R(U,F),如果函数依赖集F满足下列条件,则称F为R的一个极小函数依赖集(或称为最小依赖集、最小覆盖),记为Fmin。

F中每个函数依赖的右部仅含有一个属性。

F中每个函数依赖的左部不存在多余的属性,即不存在这样的函数依赖X→A,X有真子集Z使得F与(F-{X→A})∪{Z→A}等价。F中不存在多余的函数依赖,即不存在这样的函数依赖X→A,使得F与F-{X→A}等价。68极小函数依赖集算法①

使F中每个函数依赖的右部都只有一个属性。逐一检查F中各函数依赖X→Y,若Y=A1A2…Ak(k≥2),则用{X→Aj|j=1,2,…k}取代X→Y。②

去掉各函数依赖左部多余的属性。逐一取出F中各函数依赖X→A,设X=B1B2…Bm,逐一检查Bi(i=1,2,…,m),如果A∈(X-Bi)F+,则以X-Bi取代X。69极小函数依赖集算法(续)③

去掉多余的函数依赖。逐一检查F中各函数依赖X→A,令G=F-{X→A},若A∈XG+,则从F中去掉X→A函数依赖。70例8-13设有如下两个函数依赖集F1、F2,分别判断它们是否是极小函数依赖集。F1={AB→CD,BE→C,C→G}F2={A→D,B→A,A→C,B→D,D→C}71例8-13(续)解:对F1,由于函数依赖AB→CD的右部不是单个属性,因此,该函数依赖集不是极小函数依赖集。对F2,由于A→C可由A→D和D→C导出,因此A→C是F2中的多余函数依赖,所以F2也不是极小函数依赖集。72例8-14设有关系模式R(U,F),其中U={A,B,C},F={A→BC,B→C,AC→B},求其极小函数依赖集Fmin。解:

让F中每个函数依赖的右部为单个属性。结果为:G1={A→B,A→C,B→C,AC→B}73例8-14(续)

分析AC→B:

第1种情况:去掉C,计算AG1+=ABC,包含了B,因此AC→B中C是多余属性,AC→B可化简为A→B。第2种情况:去掉A,计算CG1+=C,不包含B,因此AC→B中A不是多余属性。去掉左部多余属性后的函数依赖集为:G2={A→B,A→C,B→C,A→B}={A→B,A→C,B→C}74例8-14(续)去掉G2中多余的函数依赖。

对A→B,令G3={A→C,B→C},AG3+=AC,不包含B,因此A→B不是多余的函数依赖。

对A→C,令G4={A→B,B→C},AG4+=ABC,包含了C,因此A→C是多余的函数依赖,应去掉。

对B→C,令G5={A→B,A→C},BG5+=B,不包含C,因此B→C不是多余的函数依赖。最终的极小函数依赖集Fmin={A→B,B→C}。75例8-15设有关系模式R(U,F),其中U={A,B,C},

F={AB→C,A→B,B→A}求其极小函数依赖集Fmin。76例8-15(续)分析AB→C:第1种情况:去掉B,计算AF+=ABC,包含C,因此B是多余属性,AB→C可化简为A→C。故F简化为:G1={A→C,A→B,B→A}第2种情况:去掉A,计算BF+=ABC,包含C,因此A是多余属性,AB→C可化简为B→C。故F可简化为:G2={B→C,A→B,B→A}77例8-15(续)(2)去掉G1和G2中的多余函数依赖。

去掉G1中的多余函数依赖。对A→C,令G11={A→B,B→A},AG11+=AB,不包含C,因此A→C不是多余的函数依赖。对A→B,令G12={A→C,B→A},AG12+=C,不包含B,因此A→B不是多余的函数依赖。

对B→A,令G13={A→C,A→B},BG13+=B,不包含A,因此B→A不是多余的函数依赖。最终的极小函数依赖集Fmin1=G1={A→C,A→B,B→A}。78例8-15(续)②去掉G2中的多余函数依赖。

对B→C,令G21={A→B,B→A},BG21+=AB,不包含C,因此B→C不是多余的函数依赖。

对A→B,令G22={B→C,B→A},AG22+=A,不包含B,因此A→B不是多余的函数依赖。

对B→A,令G23={B→C,A→B},BG23+=BC,不包含A,因此B→A不是多余的函数依赖。最终的极小函数依赖集Fmin2=G2={B→C,A→B,B→A}。79本章内容8.1关系规范化的意义8.2函数依赖8.3函数依赖的推理规则8.4范式8.5关系模式的分解准则808.4范式关系规范化是指导将有“不良”函数依赖的关系模式转换为良好的关系模式的理论。这里涉及到范式的概念,不同的范式表示关系模式遵守的不同的规则。

818.4范式关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同的范式(NormalForm)。范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)828.4范式(续)831NF2NF3NFBCNF4NF5NF8.4范式(续)“第几范式”表示关系模式满足的条件。对关系模式的属性间的函数依赖加以不同的限制,就形成了不同的范式。范式是递进的。规范化的目的是设计“好的”关系模式。从而消除操作异常。848.4.1第一范式定义:不包含非原子项属性的关系都是第一范式(1NF)的关系。在1NF的关系中每一列都是不可分割的基本数据项,同一列中不能有多个值

。858.4.1第一范式(续)86非第一范式的关系系

名高级职称人数教授副教授计算机系610信息管理系35通信工程系48规范化成第一范式的关系系

名教授人数副教授人数计算机系610信息管理系35通信工程系488.4.2第二范式如果R(U,F)∈1NF,并且R中的每个非主属性都完全函数依赖于主键,则R(U,F)∈2NF。可知:若某个第一范式关系的主键只由一个列组成,则这个关系就是第二范式关系。87示例1S-B-B(SID,Sname,Email,ISBN,bname,category,price,borrow_time,return_time)主键是(SID,ISBN,borrow_time),由于有Email只依赖于SID,因此(SID,ISBN,borrow_time)Email。结论:S-B-B不是第二范式关系。88分解方法(1)用组成主键的属性集合的每一个子集作为主键构成一个关系模式。(2)将依赖于这些主键的属性放置到相应的关系模式中。(3)最后去掉只由主键的子集构成的关系模式。89示例1--分解S-B-B步骤1(1)将该关系模式分解为如下七个关系模式(下划线部分表示主键):Students(SID,…)Book(ISBN,…)Borrow(borrow_time,…)Students-book(SID,ISBN,…)Students-borrow(SID,borrow_time,…)book-borrow(ISBN,borrow_time,…)Students-book-borrow(SID,ISBN,borrow_time,)90示例1--分解S-B-B步骤2(2)将依赖于这些主键的属性放置到相应的关系模式中,形成如下七个关系模式:①

Students(SID,Email)②

Book(ISBN,Bname,category,price)③

Borrow(borrow_time)④

Students-book(SID,ISBN)⑤

Students-borrow(SID,borrow_time)⑥

book-borrow(ISBN,borrow_time)⑦

Students-book-borrow(SID,ISBN,borrow_time,return_time)91示例1--分解S-B-B步骤3(3)去掉只由主键的子集构成的关系模式。删除③、④、⑤、⑥关系模式,S-B-B关系模式最终被分解为:①Students(SID,Email)②Book(ISBN,Bname,category,price)③Students-book-borrow(SID,ISBN,borrow_time,return_time)92例8-16

有关系模式:S-D-C(Sno,Sname,Ssex,Sdept,Dept_master,Cno,Grade),判断是否为第二范式关系,如不是,分解到第二范式。因为Sno→Sname,因此存在:(Sno,Cno)Sname结论:S-D-C不是第二范式关系。93例8-16--分解S-D-C步骤1(1)将该关系模式分解为如下三个关系模式(下划线部分表示主键):S-D(Sno,…)C(Cno,…)S-C(Sno,Cno,…)94例8-16--分解S-D-C步骤2(2)将依赖于这些主键的属性放置到相应的关系模式中,形成如下三个关系模式:S-D(Sno,Sname,Ssex,Sdept,Dept_master)C(Cno)S-C(Sno,Cno,Grade)95例8-16--分解S-D-C步骤3(3)去掉只由主键的子集构成的关系模式,也就是去掉C(Cno)关系模式。

S-D-C关系模式最终被分解为:S-D(Sno,Sname,Ssex,Sdept,Dept_master)S-C(Sno,Cno,Grade)96例8-16(续)S-D(Sno,Sname,Ssex,Sdept,Dept_master)存在插入异常。978.4.3第三范式定义:如果R(U,F)∈2NF,并且所有的非主属性都不传递依赖于主键,则R(U,F)∈3NF。关系模式S-D(Sno,Sname,Ssex,Sdept,Dept_master),主键为Sno,由于有: 因此: 结论:S-D不是3NF98分解方法(1)对于不是候选键的每个决定因子,从关系模式中删去依赖于它的所有属性。(2)新建一个关系模式,新关系模式中包含原关系模式中所有依赖于该决定因子的属性。(3)将决定因子作为新关系模式的主键。99分解S-DS-D分解后的关系模式如下:S(Sno,Sname,Ssex,Sdept),Sdept为引用D的外键D(Sdept,Dept_master)S、D关系模式中不存在传递依赖,因此是3NF。100模式分解至此,S-D-C(Sno,Sname,Ssex,Sdept,Dept_master,Cno,Grade)被分解为三个关系模式S(Sno,Sname,Ssex,Sdept),Sdept为引用D的外键D(Sdept,Dept_master)S-C(Sno,Cno,Grade),Sno为引用S的外键。1018.4.4Boyce-Codd范式2NF和3NF都是不允许存在对主键的部分函数依赖和传递函数依赖,但这些定义并没有考虑对候选键的依赖问题。第三范式的这些不足导致了另一种更强范式的出现,即Boyce-Codd范式,简称BC范式或BCNF(BoyceCoddNormalForm)。1028.4.4Boyce-Codd范式(续)BCNF是由Boyce和Codd共同提出的,它比3NF更进了一步,通常认为BCNF是修正的3NF。BCNF考虑了关系中对所有候选键的函数依赖。1038.4.4Boyce-Codd范式(续)定义:如果R(U,F)∈1NF,若X→Y且Y⊈X时X必包含候选键,则R(U,F)∈BCNF当且仅当关系中的每个函数依赖的决定因子都是候选键时,该范式即为Boyce-Codd范式(BCNF)。1048.4.4Boyce-Codd范式(续)大多数情况下3NF的关系模式都是BCNF的。下面是有可能违反BCNF的情形:关系中包含两个(或更多)复合候选键。候选键的属性有重叠,通常至少有一个重叠的属性。105ClientInterview部分数据示例106clientNointerviewDateinterviewTimestaffNoroomNoC0012022-10-2010:30Z005R101G0022022-10-2012:00Z005R101G0052022-10-2010:30Z002R102G0022022-10-2810:30Z005R102

ClientInterview语义每个参与洽谈的员工被分配到一个特定的房间中进行一个房间在一个工作日内可以被分配多次,但一个员工在特定工作日内只在一个房间洽谈客户一个客户在某个特定的日期只能参与一次洽谈,但可以在不同的日期多次参与洽谈。107ClientInterview关系模式分析ClientInterview关系有三个候选键:(clientNo,interviewDate)(staffNo,interviewDate,interviewTime)(roomNo,interviewDate,interviewTime)现选择(clientNo,interviewDate)作为该关系的主键108ClientInterview关系模式分析(续)ClientInterview具有如下函数依赖关系:fd1:(clientNo,interviewDate)→interviewTime,staffNo,roomNofd2:(staffNo,interviewDate,interviewTime)→clientNofd3:(roomNo,interviewDate,interviewTime)→stuffNo,ClientNofd4:(staffNo,interviewDate)→roomNo109ClientInterview关系模式分析(续)fd4:(staffNo,interviewDate)→roomNo(stuffNo,interviewDate)不是该关系的候选键,而BCNF要求关系中所有的决定因子都必须是候选键,因此不是BCNF。存在操作异常,需要模式分解。110ClientInterview模式分解111

Interview部分数据示例clientNointerviewDateinterviewTimestaffNoC0012022-10-2010:30Z005G0022022-10-2012:00Z005G0052022-10-2010:30Z002G0022022-10-2810:30Z005StuffRoom部分数据示例staffNointerviewDateroomNoZ0052022-10-20R101Z0022022-10-20R102Z0052022-10-28R1028.4.5规范化小节在关系数据库中,对关系模式的基本要求是要满足第一范式。但第一范式的关系会存在数据操作异常,因此,人们寻求解决这些问题的方法,这是规范化引出的目的。112本章内容8.1关系规范化的意义8.2函数依赖8.3函数依赖的推理规则8.

温馨提示

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

最新文档

评论

0/150

提交评论