数据库原理与应用教程NO.ppt
《数据库原理与应用教程NO.ppt》由会员分享,可在线阅读,更多相关《数据库原理与应用教程NO.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4.3 关系模式的分解关系模式的分解*4.3.1 模式分解问题模式分解问题定义定义4.11 设有关系模式设有关系模式R(U),属性集为,属性集为U,R1、Rk都是都是U的子集,并且有的子集,并且有R1R2RkU。关系模式关系模式R1、Rk的集合用的集合用表示,表示,=R1,Rk。用用代替代替R的过程称为关系模式的分解。这里的过程称为关系模式的分解。这里称为称为R的一个分解,也称为数据库模式。的一个分解,也称为数据库模式。泛关系模式泛关系模式Rr泛关系泛关系数据库模式数据库模式=R1,Rk=r1,rk数据库实例数据库实例(数据库数据库)这里就有两个问题:这里就有两个问题:和和r r是否等价是否等
2、价?用用“无损分解无损分解”表示。表示。FF1 1,F,Fk k 与与F F是否等价是否等价?用用“保持依赖保持依赖”表示。表示。计算机中的数据并不是存储在泛关系计算机中的数据并不是存储在泛关系r r中,而是存储在数据库中,而是存储在数据库中。中。R上有函数依赖集上有函数依赖集F,每一个每一个Ri 上有一个上有一个函数依赖集函数依赖集 Fi,F1,Fk4.3.2 无损连接分解无损连接分解 定义定义4.12:设:设R是一个关系模式,是一个关系模式,F是是R上的一上的一个个FD集。集。R分解成数据库模式分解成数据库模式=R1,Rk。如果对如果对R中满足中满足F的每一个关系的每一个关系r,都有,都有
3、r=R1(r)R2(r)Rk(r)那么称分解那么称分解相对于相对于F是是“无损连接分解无损连接分解”(lossless join decomposition),简称),简称为为“无损分解无损分解”,否则称为,否则称为“损失分解损失分解”(lossy decomposition)。)。例例4.10(1)未丢失信息的分解:未丢失信息的分解:r r1 1 r r2 2=r=r (2)丢失信息的分解丢失信息的分解:r r1 1r r2 2rr211211111111CAr2BAr1CBAr32142131131213214114111411CBAr r1 1 r r2 2CAr2BAr1CBAr多出来
4、的元组称为多出来的元组称为寄生元组(额外元组)寄生元组(额外元组)丢失的元组称为丢失的元组称为悬挂元组悬挂元组。在泛关系模式在泛关系模式R R分解成数据库模式分解成数据库模式=R1,Rk时时,泛泛关关系系r r在在的的每每一一模模式式Ri(1in)上上投投影影后后再再连连接接起起来来,比比原原来来r中中多多出出来来的的元元组组,称称为为“寄寄生生元元组组”(SpuriousTuple)。)。实际上,寄生元组表示着错误的信息。寄生元实际上,寄生元组表示着错误的信息。寄生元组也就是节模式设计准则组也就是节模式设计准则4 4中提到的额外元组中提到的额外元组(在上节在上节NO15NO15中)中)。无损
5、的无损的损损指的是指的是信息丢失信息丢失而不是而不是元组丢失元组丢失.如果一个分解不具有如果一个分解不具有无损无损的性质,那么泛的性质,那么泛关系在投影连接后就可能产生寄生元组。寄生关系在投影连接后就可能产生寄生元组。寄生元组表示着错误的信息元组表示着错误的信息r的投影连接表达式的投影连接表达式R1(r)Rk(r)用)用符号符号m(r)表示,即)表示,即m(r)=Ri(r)。)。设设=R1,Rk 是是关关系系模模式式R的的一一个个分分解解,r是是R的任一关系,的任一关系,ri=Ri(r)()(1ik),),那么有下列性质:那么有下列性质:r m(r);若若s=m(r),则,则Ri(s)=ri;
6、m(m(r)=m(r),这个性质称为幂等性,这个性质称为幂等性(idempotent)。)。r r=m m(r)(r)时就是无损连接分解时就是无损连接分解4.3.3 无损分解的测试算法(算法无损分解的测试算法(算法4.3)构造一张构造一张k行行n列的表格,每列对应一个属性列的表格,每列对应一个属性Aj,每行,每行对应一个模式对应一个模式Ri。如果。如果Aj在在Ri中,那么在表格的第中,那么在表格的第i行行第第j列处填上符号列处填上符号aj,否则填上,否则填上bij。把表格看成模式把表格看成模式R的一个关系,反复检查的一个关系,反复检查F中每个中每个FD在在表格中是否成立,若不成立,则修改表格中
7、的值。表格中是否成立,若不成立,则修改表格中的值。修改方法如下:对函数依赖修改方法如下:对函数依赖XY,找找X相等的行,相等的行,改改Y的分量值:如果的分量值:如果Y值中有一个是值中有一个是aj,那么另一个也,那么另一个也改成改成aj;如果没有;如果没有aj,那么用其中一个,那么用其中一个bij替换另一个替换另一个值(尽量把下标值(尽量把下标ij改成较小的数)。一直到表格不能修改成较小的数)。一直到表格不能修改为止。(这个过程称为改为止。(这个过程称为追踪追踪chase过程)过程)若修改的最后一张表格中有一行是全若修改的最后一张表格中有一行是全a,即,即a1a2an,那么称,那么称相对于相对于
8、F是无损分解,否则称损失分解。是无损分解,否则称损失分解。例例4.11 4.11 设关系模式设关系模式R(ABCD)R(ABCD),R R分解成分解成=AB,BC,CD=AB,BC,CD。如果如果R R上成立的函数依赖集上成立的函数依赖集F F1 1=BABA,CDCD,那么那么相对于相对于F F1 1是否无损分解?是否无损分解?(无损分解无损分解)a a4 4 a a3 3b b3232b b3131CDa a4 4 a a3 3b b3232b b3131CDa a4 4 a a3 3a a2 2a a1 1BCb b2424 a a3 3a a2 2b b2121BCb b1414 b
9、b1313a a2 2a a1 1ABb b1414 b b1313a a2 2a a1 1ABDCBADCBA续例续例4.11 4.11 设关系模式设关系模式R(ABCD)R(ABCD),R R分解成分解成=AB,BC,CD=AB,BC,CD。如果如果R R上成立的函数依赖集上成立的函数依赖集F F1 1=ABAB,CDCD,那么那么相对于相对于F F1 1是否无损分解?是否无损分解?(损失分解损失分解)a a4 4 a a3 3b b3232b b3131CDa a4 4 a a3 3b b3232b b3131CDa a4 4 a a3 3a a2 2b b2121BCb b2424 a
10、 a3 3a a2 2b b2121BCb b1414 b b1313a a2 2a a1 1ABb b1414 b b1313a a2 2a a1 1ABDCBADCBA再看例再看例4-124-12(P153)P153)A B C D E例:设例:设R=(ABCDE)分解成分解成 AD,AB,BE,CDE,AE 函数依赖函数依赖F=AC,BC,CD,DEC,CEA 判断是否无损连接分解。判断是否无损连接分解。解:按条件给出初始表解:按条件给出初始表 a1 b12 b13 a4 b15 a1 b12 b13 a4 b15AD a1 a2 b23 b24 b25 a1 a2 b23 b24 b2
11、5 b31 a2 b33 b34 a5 b31 a2 b33 b34 a5 b41 b42 a3 a4 a5 b41 b42 a3 a4 a5 a1 b52 b53 b54 a5 a1 b52 b53 b54 a5ABBECDEAEA B C D E a1 b12 b13 a4 b15 a1 b12 b13 a4 b15AD a1 a2 b13 a4 b25 a1 a2 b13 a4 b25 a1 a2 a3 a4 a5 a1 a2 a3 a4 a5 a1 b42 a3 a4 a5 a1 b42 a3 a4 a5 a1 b52 a3 a4 a5 a1 b52 a3 a4 a5ABBECDEAE
12、通过追踪过程(通过追踪过程(CHASE)最终得表:)最终得表:由于第由于第3行全为行全为a,所以该分解是无损连接分解。所以该分解是无损连接分解。定理定理4.6 设设=R1,R2 是关系模式是关系模式R的一的一个分解,个分解,F是是R上成立的上成立的FD集,那么分解集,那么分解相对相对于于F是无损分解的充分必要条件是是无损分解的充分必要条件是(R1R2)(R1R2)或(或(R1R2)(R2R1)。)。(可用(可用CHASE(CHASE(追踪追踪)算法证明)算法证明)定理定理4.7 如果如果FD XY在模式在模式R上成立,且上成立,且XY=,那么,那么R分解成分解成=RY,XY 是无损是无损分解。
13、分解。4.3.4 保持函数依赖的分解保持函数依赖的分解 定义定义4.13:设设F是属性集是属性集U上的上的FD集,集,Z是是U的的子集,子集,F在在Z上的投影用上的投影用Z(F)表示,定义)表示,定义为为 Z(F)=XY|XYF+,且,且XY Z设设=R1,Rk 是是R的一个分解,的一个分解,F是是R上上的的FD集集 如果有如果有(Ri(F)+=F+,那么称分解那么称分解保持函数依赖集保持函数依赖集F的分解。的分解。根据定义,测试一个根据定义,测试一个 分解是否保持分解是否保持FD,比较可比较可行的方法是逐步验证行的方法是逐步验证F中的每个中的每个FD是否被是否被(Ri(F)+=F+蕴涵蕴涵两
14、个数据库模式的等价问题,这种等价包括数据等价和两个数据库模式的等价问题,这种等价包括数据等价和依赖等价两个方面。依赖等价两个方面。数据等价数据等价是指两个数据库实例应表示同样的信息内容,是指两个数据库实例应表示同样的信息内容,用用“无损分解无损分解”衡量。如果是无损分解,那么对泛关衡量。如果是无损分解,那么对泛关系反复的投影和连接都不会丢失信息。系反复的投影和连接都不会丢失信息。依赖等价依赖等价是指两个数据库模式应有相同的依赖集闭包。是指两个数据库模式应有相同的依赖集闭包。在依赖集闭包相等情况下,数据的语义是不会出差错在依赖集闭包相等情况下,数据的语义是不会出差错的。的。违反数据等价或依赖等价
15、的分解不是一个好的模违反数据等价或依赖等价的分解不是一个好的模式设计。式设计。一个无损连接分解不一定是保持函数依赖的一个无损连接分解不一定是保持函数依赖的一个保持函数依赖的分解也不一定是无损连接的一个保持函数依赖的分解也不一定是无损连接的 没有必然联系(见下例)没有必然联系(见下例)例:例:设关系模式设关系模式R(ABC),=AB,AC是是R的一个的一个分解。试分析分别在各种分解。试分析分别在各种FD的情况下,的情况下,是否具有是否具有无损分解和保持无损分解和保持FD的分解特性。的分解特性。解:解:相对于相对于F1=AB,分解,分解是无损分解,是无损分解,且保持且保持FD的分解。的分解。相对于
16、相对于F2=AC,BC,分解,分解是无损分解,是无损分解,但不保持但不保持FD集集(丢失了丢失了BC)。相对于相对于F3=BA,分解,分解是损失分解,是损失分解,但保持但保持FD集的分解。集的分解。相对于相对于F4=CB,BA,分解,分解是损失分解,是损失分解,且不保持且不保持FD集集(丢失了丢失了CB)。保持保持FD分解分解相对于相对于F=AB,ACBA=AB,ACBA=AB,ACAC=AB,ACABabaACbaaAB丢失丢失CB损损失失CBA(4)F4=CB,BAabaACbaaAB保持保持损损失失CBA(3)F3=BAabaACbaaAB丢失丢失BC无无损损CBA(2)F2=AC,BC
17、abaACbaaAB保持保持无无损损CBA(1)F1=AB4.4 关系模式的范式关系模式的范式 关系模式的好与坏,用什么标准衡量?这个标准关系模式的好与坏,用什么标准衡量?这个标准就是模式的范式(就是模式的范式(Normal Forms,简记为,简记为NF)。范式的种类与数据依赖有着直接的联系。)。范式的种类与数据依赖有着直接的联系。范式的概念由于范式的概念由于1971年提出。(发展过程见年提出。(发展过程见P155)1NF是关系模式的基础;是关系模式的基础;在数据库设计中最常用的是在数据库设计中最常用的是3NF和和BCNF。各种范式之间的关系各种范式之间的关系 4.4.1 第一范式第一范式(
18、1NF)定义定义4.14:如果关系模式如果关系模式R所有的属性均为简单属性,所有的属性均为简单属性,即每个属性都是不可再分的,则称即每个属性都是不可再分的,则称R属于第一范式,属于第一范式,简称简称1NF,记作,记作R1NF。1NF是关系模式应具备的最起码的条件。是关系模式应具备的最起码的条件。第一范式可能具有大量的数据冗余,具有插入异常、第一范式可能具有大量的数据冗余,具有插入异常、删除异常和更新异常等弊端。删除异常和更新异常等弊端。例如关系模式例如关系模式SCD属于属于1NF,它既存在完全函数依赖,它既存在完全函数依赖,又存在部分函数依赖和传递函数依赖又存在部分函数依赖和传递函数依赖。克服
19、这些弊端的方法是用投影运算将关系分解,去掉克服这些弊端的方法是用投影运算将关系分解,去掉过于复杂的函数依赖关系,向更高一级的范式进行过于复杂的函数依赖关系,向更高一级的范式进行转换。转换。4.4.2 第二范式第二范式(2NF)定义定义4.15:如果关系模式如果关系模式R是是1NF,且每个,且每个非主非主属性属性完全函数依赖于完全函数依赖于候选键,那么称候选键,那么称R是第二范是第二范式(式(2NF)的模式。)的模式。如果数据库模式中每个关系模式都是如果数据库模式中每个关系模式都是2NF,则称数据库模式为则称数据库模式为2NF的数据库模式。的数据库模式。(即(即.没有对候选键的部分函数依赖)没有
20、对候选键的部分函数依赖)从从1NF1NF中消除非主属性对主键(主码)的部中消除非主属性对主键(主码)的部分函数依赖得到分函数依赖得到2NF.2NF.分解时遵循分解时遵循“一事一地一事一地”的基本原则:的基本原则:一个关系只描述一个实体或联系。一个关系只描述一个实体或联系。属性集属性集X非主非主属性属性A键键违反违反2NF的局部依赖的情况示意图:的局部依赖的情况示意图:本章开始例:教学管理数据库(本章开始例:教学管理数据库(P137)SCD(SNo,SN,Age,Dept,MN,CNo,Score)SNo SN Age Dept MN CNo Score S1 赵亦赵亦 17 计算机计算机 刘伟
21、刘伟 C1 90S1 赵亦赵亦 17 计算机计算机 刘伟刘伟 C2 85 S2 钱尔钱尔 18 信息信息 王平王平 C557S2 钱尔钱尔 18 信息信息 王平王平 C680S2钱尔钱尔18信息信息王平王平C7 主键:主键:(SNO,CNO),存在数据冗余、修改、删除、插,存在数据冗余、修改、删除、插入异常的弊病。原因之一是存在部分函数依赖。入异常的弊病。原因之一是存在部分函数依赖。如果把如果把SCD分解成分解成:(将部分函数依赖分离出来)将部分函数依赖分离出来)SD(SNo,SN,Age,Dept,MN)C(SNo,CNo,SCORE)SD 与与 C 都是都是2NF模式。模式。部分函数依赖消
22、失,分数关系部分函数依赖消失,分数关系C不存在冗余、不存在冗余、修改、删除、插入异常。修改、删除、插入异常。但还是有系、系主任的冗余和操作异常。说明但还是有系、系主任的冗余和操作异常。说明2NF不是理想的模式分解。不是理想的模式分解。算法算法4.5 分解成分解成2NF模式集的算法模式集的算法设关系模式设关系模式R(U),主键是,主键是W,R上还存在上还存在FD:XZ,并且,并且Z是非主属性,是非主属性,XW,那么,那么WZ就是一个部就是一个部分函数依赖。此时应把分函数依赖。此时应把R分解成两个模式分解成两个模式R1(XZ),主键是),主键是X;(将部分依赖分解出来);(将部分依赖分解出来)R2
23、(Y),其中),其中Y=U-Z,主键仍是,主键仍是W,外键是外键是 X(REFERENCES参照参照 R1)。利用外键和主键的连接可以从利用外键和主键的连接可以从R1和和R2重新得到重新得到R。如果如果R1和和R2还不是还不是2NF,则重复上述过程,一直到数,则重复上述过程,一直到数据库模式中每一个关系模式都是据库模式中每一个关系模式都是2NF为止。为止。定义定义4.16:如果关系模式如果关系模式R是是1NF,且每个,且每个非非主属性主属性都不都不传递函数依赖传递函数依赖于于R的候选键,那么称的候选键,那么称R属于第三范式(属于第三范式(3NF)的模式。如果数据库模)的模式。如果数据库模式中每
24、个关系模式都是式中每个关系模式都是3NF,则称其为,则称其为3NF的数的数据库模式。据库模式。4.4.3 第三范式(第三范式(3NF)例例:在上边在上边例例中,中,SD(SNo,SN,Age,Dept,MN)主键主键SNO,无部分函数依赖,是无部分函数依赖,是2NF模式。模式。SD中存在函数依赖中存在函数依赖 SNODept 和和 DeptMN,那么那么SNO MN 就是一个传递依赖,就是一个传递依赖,SD不是不是3NF模式。模式。此此时时也也会会出出现现冗冗余余和和异异常常操操作作。譬譬如如一一个个系系有有500学学生生,那么系和系主任就会重复那么系和系主任就会重复500次。还有操作异常。次
25、。还有操作异常。若将若将SD分解成分解成S(SNo,SN,Age,Dept)和和D(Dept,MN)已已无无传传递递函函数数依依赖赖,S、D都都是是3NF模模式式,冗冗余余和和操操作作异异常消失。常消失。算法算法4.6 分解成分解成3NF模式集的算法模式集的算法设关系模式设关系模式R(U),主键是),主键是W,R上还存在上还存在FD XZ。并且。并且Z是非主属性,是非主属性,Z X,X不是候选键,不是候选键,这样这样WZ就是一个传递依赖。此时应把就是一个传递依赖。此时应把R分解成两分解成两个模式:个模式:R1(XZ),主键是),主键是X;(将传递依赖分解出来);(将传递依赖分解出来)R2(Y)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 教程 NO
限制150内