数据库原理第8章 数据库设计理论 V2.1_第1页
数据库原理第8章 数据库设计理论 V2.1_第2页
数据库原理第8章 数据库设计理论 V2.1_第3页
数据库原理第8章 数据库设计理论 V2.1_第4页
数据库原理第8章 数据库设计理论 V2.1_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

1、DATABASEUESTC学以致用学以致用 用以促学用以促学数据库原理及应用数据库原理及应用第第8章章 数据库设计理论数据库设计理论电子科技大学电子科技大学 计算机学院计算机学院郑莉华郑莉华 cd_cd_20222022年年5 5月月3 3日星期二日星期二DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 关系模式设计问题关系模式设计问题1 1Click to add TitleClick to add Title2 2 函数依赖函数依赖2 2Click to add TitleClick to add T

2、itle2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 规范化规范化4 4Click to add TitleClick to add Title1 1 * *多值依赖多值依赖5 5Click to add TitleClick to add Title2 2 * *连接依赖连接依赖6 6DATABASEUESTC学以致用学以致用 用以促学用以促学 n如何构造一个合适的数据模式?如何构造一个合适的数据模式?u应该构造几个关系模式?应该构造几个关系模式?u每个关系应该由哪些属性组成?每个关系应该由哪些属性组成?n思考:教务管理数据库模

3、式?思考:教务管理数据库模式?n数据库逻辑设计的工具数据库逻辑设计的工具u关系数据库的规范化理论关系数据库的规范化理论DATABASEUESTC学以致用学以致用 用以促学用以促学 n关系模式的五元组表示:关系模式的五元组表示: R(U, D, DOM, F)R(U, D, DOM, F)uR R:关系名:关系名uU U:组成该关系的属性名集合:组成该关系的属性名集合uD D:属性组:属性组U U中属性所来自的域中属性所来自的域uDOMDOM:属性向域的映象集合:属性向域的映象集合uF F:属性间数据的依赖关系集合:属性间数据的依赖关系集合n关系模式的简化三元组表示:关系模式的简化三元组表示:

4、R R(U, FU, F)n什么是数据依赖?什么是数据依赖?u是现实世界属性间相互联系的抽象是现实世界属性间相互联系的抽象u是数据内在的性质是数据内在的性质u是语义的体现是语义的体现DATABASEUESTC学以致用学以致用 用以促学用以促学 n关系模式实例关系模式实例u设有一个医生与患者之间的就诊关系模式设有一个医生与患者之间的就诊关系模式R R(DnameDname,DlevelDlevel,DsalDsal,PnamePname,FsumFsum),其属性分别表示医生姓名、医生职称级),其属性分别表示医生姓名、医生职称级别、医生工资、患者姓名、诊治费用。别、医生工资、患者姓名、诊治费用。

5、nR R上的语义:上的语义:u假设医生和患者的姓名分别都是唯一的。假设医生和患者的姓名分别都是唯一的。u医生与患者之间是多对多的关系,即医生可以为不同的患者看病医生与患者之间是多对多的关系,即医生可以为不同的患者看病,同时患者可以选择不同的医生。假设同一名患者不看相同的医,同时患者可以选择不同的医生。假设同一名患者不看相同的医生,即可以选择生,即可以选择DnameDname和和PnamePname作为就诊关系模式作为就诊关系模式R R的主键。的主键。u一位患者每次就诊都有一个花销总金额。一位患者每次就诊都有一个花销总金额。u每位医生具有相应的职称级别。每位医生具有相应的职称级别。u职称级别决定

6、了医生的工资金额。职称级别决定了医生的工资金额。DnameDlevelDsalaryPnameFsum罗晓罗晓主任医师主任医师3200张珍张珍30.00杨勋杨勋副主任医师副主任医师2800张珍张珍50.00杨勋杨勋副主任医师副主任医师2800刘景刘景55.00杨勋杨勋副主任医师副主任医师2800张柳张柳58.00邓英超邓英超主治医师主治医师2400李秀李秀75.00罗晓罗晓主任医师主任医师3200傅伟相傅伟相35.00DATABASEUESTC学以致用学以致用 用以促学用以促学 n可以确定以下函数依赖:可以确定以下函数依赖:F = F = Dname,PnameFsumDname,PnameF

7、sum, DnameDlevelDnameDlevel, DlevelDsalDlevelDsal DnamePnameDlevelDsalFsumDATABASEUESTC学以致用学以致用 用以促学用以促学 n就诊模式就诊模式R R存在的问题(虽然只有存在的问题(虽然只有5 5个属性):个属性):u数据冗余:浪费存储空间,引起异常。数据冗余:浪费存储空间,引起异常。u操作异常:操作异常:l 更新异常(更新异常(Update Anomalies)。)。l 删除异常(删除异常(Delete Anomalies)。)。l 插入异常(插入异常(Insert Anomalies)。)。n因此,就诊关系

8、模式因此,就诊关系模式R R不是一个好的关系模式。不是一个好的关系模式。DnameDlevelDsalaryPnameFsum罗晓罗晓主任医师主任医师3200张珍张珍30.00杨勋杨勋副主任医师副主任医师2800张珍张珍50.00杨勋杨勋副主任医师副主任医师2800刘景刘景55.00杨勋杨勋副主任医师副主任医师2800张柳张柳58.00邓英超邓英超主治医师主治医师2400李秀李秀75.00罗晓罗晓主任医师主任医师3200傅伟相傅伟相35.00DATABASEUESTC学以致用学以致用 用以促学用以促学 n消除冗余和异常现象(模式分解)消除冗余和异常现象(模式分解)uR1R1(DnameDnam

9、e,DlevelDlevel)uR2R2(DlevelDlevel,DsalDsal)uR3R3(DnameDname,PnamePname,FsumFsum) DnameDlevelDsalaryPnameFsum罗晓罗晓主任医师主任医师3200张珍张珍30.00杨勋杨勋副主任医师副主任医师2800张珍张珍50.00杨勋杨勋副主任医师副主任医师2800刘景刘景55.00杨勋杨勋副主任医师副主任医师2800张柳张柳58.00邓英超邓英超主治医师主治医师2400李秀李秀75.00罗晓罗晓主任医师主任医师3200傅伟相傅伟相35.00DATABASEUESTC学以致用学以致用 用以促学用以促学Cl

10、ick to add TitleClick to add Title1 1 关系模式设计问题关系模式设计问题1 1Click to add TitleClick to add Title2 2 函数依赖函数依赖2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 规范化规范化4 4Click to add TitleClick to add Title1 1 * *多值依赖多值依赖5 5Click to add TitleClick to add Title2

11、2 * *连接依赖连接依赖6 6DATABASEUESTC学以致用学以致用 用以促学用以促学 n什么是数据依赖?什么是数据依赖?u是现实世界属性间相互联系的抽象是现实世界属性间相互联系的抽象u是数据内在的性质是数据内在的性质u是语义的体现是语义的体现n数据依赖的类型数据依赖的类型u函数依赖(函数依赖(Functional DependencyFunctional Dependency,简记为,简记为FDFD)u多值依赖(多值依赖(MultivaluedMultivalued Dependency Dependency,简记为,简记为MVDMVD)DATABASEUESTC学以致用学以致用 用以

12、促学用以促学 n函数依赖是指一个关系表中属性(列)之间的联系。函数依赖是指一个关系表中属性(列)之间的联系。n函数依赖关注一个属性或属性集与另外一个属性或属性函数依赖关注一个属性或属性集与另外一个属性或属性集之间的依赖,亦即两个属性或属性集之间的约束。集之间的依赖,亦即两个属性或属性集之间的约束。n函数依赖是关系中属性之间在语义上的关联特性。函数依赖是关系中属性之间在语义上的关联特性。n数据库设计者根据对关系数据库设计者根据对关系R R中的属性的语义理解确定函中的属性的语义理解确定函数依赖,确定约束数依赖,确定约束R R的所有元组的所有元组r r的函数依赖集,并获知的函数依赖集,并获知属性间的

13、语义关联。属性间的语义关联。DATABASEUESTC学以致用学以致用 用以促学用以促学 n符号说明:符号说明:uR R表示一个关系的模式;表示一个关系的模式;uU UA1A1,A2A2,AnAn是是R R的所有属性的集合;的所有属性的集合;uF F是是R R中函数依赖的集合;中函数依赖的集合;ur r是是R R所取的值;所取的值;utXtX 表示元组表示元组t t在属性在属性X X上的取值。例如上的取值。例如 tDnametDname = = 杨勋杨勋 n函数依赖定义函数依赖定义n函数依赖图函数依赖图u左部称为决定因子左部称为决定因子u右部称为依赖因子。右部称为依赖因子。XYY函数依赖于函数

14、依赖于X函数依赖图函数依赖图DATABASEUESTC学以致用学以致用 用以促学用以促学 n定义定义n平凡函数依赖必然成立,它不反映新的语义。平凡函数依赖必然成立,它不反映新的语义。例如:例如: Dname,PnameDname,Pname PnamePname 。n平常所指的函数依赖一般都指非平凡函数依赖。平常所指的函数依赖一般都指非平凡函数依赖。DATABASEUESTC学以致用学以致用 用以促学用以促学 n定义定义n完全函数依赖用来表明函数依赖的决定因子中的最小属完全函数依赖用来表明函数依赖的决定因子中的最小属性集。性集。n属性集属性集Y Y完全函数依赖于属性集完全函数依赖于属性集X X

15、,如果满足下列条件:,如果满足下列条件:uY Y函数依赖于函数依赖于X X。uY Y不函数依赖于不函数依赖于X X的任何真子集。的任何真子集。DATABASEUESTC学以致用学以致用 用以促学用以促学 n举例举例DnamePnameDlevelDsalFsumDATABASEUESTC学以致用学以致用 用以促学用以促学 n定义定义n直接依赖直接依赖DATABASEUESTC学以致用学以致用 用以促学用以促学 n举例:举例: 在就诊关系在就诊关系R R中,存在函数依赖中,存在函数依赖DnameDnameDlevelDlevel,DlevelDlevelDsalDsal,所以,所以DnameDn

16、ame DsalDsal。DnamePnameDlevelDsalFsumDATABASEUESTC学以致用学以致用 用以促学用以促学 n函数依赖中需要解决的问题:从一些已知的函数依赖函数依赖中需要解决的问题:从一些已知的函数依赖去判断另外一些函数依赖是否成立。去判断另外一些函数依赖是否成立。n例如,如果例如,如果A AB B和和B BC C在某个关系中成立,记在某个关系中成立,记F= F= A AB B,B BCC,那么,那么A AC C在该关系中是否成立的问题称在该关系中是否成立的问题称为逻辑蕴涵问题,若为逻辑蕴涵问题,若A AC C成立,则说成立,则说F F逻辑蕴涵逻辑蕴涵A AC C,

17、记作记作F F A AC C。n定义定义DATABASEUESTC学以致用学以致用 用以促学用以促学 n一个关系模式可能有多个函数依赖形成函数依赖集,一个关系模式可能有多个函数依赖形成函数依赖集,现在有一个新的函数依赖不在函数依赖集里,但能从现在有一个新的函数依赖不在函数依赖集里,但能从集合里根据一定的集合里根据一定的规则规则推导出来,就说那个集合逻辑推导出来,就说那个集合逻辑蕴涵这个新的函数依赖。蕴涵这个新的函数依赖。n举例举例n如果一个函数依赖能够由集合中的其他函数推出,则如果一个函数依赖能够由集合中的其他函数推出,则该函数依赖是多余的。该函数依赖是多余的。DATABASEUESTC学以致

18、用学以致用 用以促学用以促学 n闭包闭包n函数依赖集的闭包(也成为完备集)定义了由给定函函数依赖集的闭包(也成为完备集)定义了由给定函数依赖集所能推导出的所有函数依赖。数依赖集所能推导出的所有函数依赖。n通过通过F F得到得到F F的算法可以由的算法可以由ArmstrongArmstrong公理推导出来。公理推导出来。DATABASEUESTC学以致用学以致用 用以促学用以促学 n无冗余的函数依赖集和函数依赖的完备集(闭包)是无冗余的函数依赖集和函数依赖的完备集(闭包)是好的关系设计。好的关系设计。n根据已知函数依赖集,推导其它函数依赖时所依据的根据已知函数依赖集,推导其它函数依赖时所依据的规

19、则称为推理规则。规则称为推理规则。n函数依赖的推理规则最早出现在函数依赖的推理规则最早出现在ArmstrongArmstrong的论文里。的论文里。这些规则常被称为这些规则常被称为“ArmstrongArmstrong公理公理”。DATABASEUESTC学以致用学以致用 用以促学用以促学 n设设U U是关系模式是关系模式R R的属性集,的属性集,F F是是R R上成立的只涉及上成立的只涉及U U中属中属性的函数依赖集。性的函数依赖集。FDFD推理规则推理规则n(1 1)自反性()自反性(ReflexivityReflexivity)n(2 2)增广性()增广性(AugmentationAug

20、mentation)n(3 3)传递性()传递性(TransitivityTransitivity)DATABASEUESTC学以致用学以致用 用以促学用以促学 DATABASEUESTC学以致用学以致用 用以促学用以促学 nArmstrongArmstrong公理是公理是正确的(正确的(SoundSound),即如果,即如果X XY Y是从是从F F用推理规则导出,那么用推理规则导出,那么X XY Y在在F F中。中。nArmstrongArmstrong公理(公理(FDFD推理规则推理规则A1A1,A2A2,A3A3)是)是完备的完备的(CompleteComplete)。n推理规则的正确

21、性是指推理规则的正确性是指“从从FDFD集集F F使用推理规则推出的使用推理规则推出的FDFD必定在必定在F F+ +中中”,而推理规则的完备性是指,而推理规则的完备性是指“F F+ +中的中的FDFD都能从都能从F F集使用推理规则推出集使用推理规则推出”。n即正确性保证了推出的所有即正确性保证了推出的所有FDFD都是正确的,完备性保都是正确的,完备性保证了可以推出所有被蕴涵的证了可以推出所有被蕴涵的FDFD。这些就保证了推导的。这些就保证了推导的有效性和可靠性。有效性和可靠性。DATABASEUESTC学以致用学以致用 用以促学用以促学 n候选码与主码:用函数依赖定义候选码与主码:用函数依

22、赖定义n包含在任何候选码中的属性称为主属性(包含在任何候选码中的属性称为主属性(Prime Prime AttributeAttribute)。不包含在任何候选码中的属性称为非主)。不包含在任何候选码中的属性称为非主属性(属性(Non-Key AttributeNon-Key Attribute)。)。n最简单的情况,单个属性是码。最极端的情况,整个最简单的情况,单个属性是码。最极端的情况,整个属性组是码,称为全码(属性组是码,称为全码(All-keyAll-key)。)。DATABASEUESTC学以致用学以致用 用以促学用以促学 n候选码与主码的举例候选码与主码的举例u在关系模式在关系模式

23、R R1 1(DnoDno,DlevelDlevel,DsalDsal)中)中DnoDno是码是码u在关系模式在关系模式R R2 2(DnoDno,PnoPno,FsumFsum)中的属性组合()中的属性组合(DnoDno,PnoPno)是码。)是码。u关系模式关系模式R R3 3(DnoDno,PnoPno,MnoMno)表示医生给患者开具的药品,假设一)表示医生给患者开具的药品,假设一个医生可以给多个患者看病,一位患者可以选择不同的医生就诊,不个医生可以给多个患者看病,一位患者可以选择不同的医生就诊,不同的医生可以给患者开具不同的药品,因此(同的医生可以给患者开具不同的药品,因此(DnoD

24、no,PnoPno,MnoMno)为)为R R3 3的码,即全码。的码,即全码。DATABASEUESTC学以致用学以致用 用以促学用以促学 n外码:用函数依赖定义外码:用函数依赖定义n举例:举例:u在关系模式在关系模式R R2 2(DnoDno,PnoPno,FsumFsum)中,)中,DnoDno不是码,不是码,u但但DnoDno是关系模式是关系模式R R1 1(DnoDno,DlevelDlevel,DsalDsal)的码,)的码,u则则DnoDno是关系模式是关系模式R R2 2的外码。的外码。n主码与外码提供了一个表示关系之间联系的手段。如主码与外码提供了一个表示关系之间联系的手段。

25、如上述关系模式上述关系模式R R1 1和和R R2 2的联系就是通过的联系就是通过DnoDno来体现的。来体现的。DATABASEUESTC学以致用学以致用 用以促学用以促学 DATABASEUESTC学以致用学以致用 用以促学用以促学 n判断能否从已知的判断能否从已知的FDFD集推导出集推导出FD FD X XY Y,那么可先求出,那么可先求出F F的闭包的闭包F F+ +,然后再看,然后再看X XY Y是否在中是否在中F F+ +。n但是从但是从F F求求F F+ +是一个是一个NPNP完全问题(指数级的时间复杂度完全问题(指数级的时间复杂度)。下面引入属性集闭包概念,将使该问题化为多项)

26、。下面引入属性集闭包概念,将使该问题化为多项式级的时间复杂度问题。式级的时间复杂度问题。n属性集闭包的定义属性集闭包的定义n定理定理DATABASEUESTC学以致用学以致用 用以促学用以促学 n从属性集从属性集X X求求X X并不太难,花费的时间与并不太难,花费的时间与F F中的中的FDFD数目数目成正比,是一个多项式级时间复杂度的问题。成正比,是一个多项式级时间复杂度的问题。n求属性集闭包的算法求属性集闭包的算法n举例举例DATABASEUESTC学以致用学以致用 用以促学用以促学 n函数依赖集等价:函数依赖集等价: F F = =G Gn设设F F是属性集是属性集U U上的函数依赖集,如

27、果上的函数依赖集,如果F Fminmin是是F F的一个最小的一个最小依赖集,那么依赖集,那么F Fminmin应满足下列应满足下列4 4个条件:个条件:DATABASEUESTC学以致用学以致用 用以促学用以促学 n求最小函数依赖集的算法求最小函数依赖集的算法n举例举例n每个每个FDFD至少存在一个至少存在一个F Fminmin ,但不一定唯一。,但不一定唯一。DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 关系模式设计问题关系模式设计问题1 1Click to add TitleClick to a

28、dd Title2 2 函数依赖函数依赖2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3Click to add TitleClick to add Title1 1 规范化规范化4 4Click to add TitleClick to add Title1 1 * *多值依赖多值依赖5 5Click to add TitleClick to add Title2 2 * *连接依赖连接依赖6 6DATABASEUESTC学以致用学以致用 用以促学用以促学 n由函数依赖可以引起的更新异常问题,同样,多值依由函数依赖可以引起的更新异常

29、问题,同样,多值依赖和连接依赖也会引起类似的问题。解决这些问题的赖和连接依赖也会引起类似的问题。解决这些问题的途径就是按照途径就是按照“一事一地一事一地”的原则,对关系模式进行的原则,对关系模式进行分解,使之表达的语义概念单纯化。分解,使之表达的语义概念单纯化。n关系模式关系模式R R的分解就是用两个或两个以上关系来替换的分解就是用两个或两个以上关系来替换R R,分解后的关系模式的属性集都是,分解后的关系模式的属性集都是R R中属性的子集,其中属性的子集,其并集与并集与R R的属性集相同。的属性集相同。n模式分解帮助消除不良设计中的一些问题,如冗余、模式分解帮助消除不良设计中的一些问题,如冗余

30、、不一致或异常。不一致或异常。DATABASEUESTC学以致用学以致用 用以促学用以促学 n模式分解的定义模式分解的定义n模式分解的问题模式分解的问题DATABASEUESTC学以致用学以致用 用以促学用以促学 n一个关系表被分解成两个或两个以上的小表,通过连一个关系表被分解成两个或两个以上的小表,通过连接被分解后的小表可以获得原始表的内容,则称为无接被分解后的小表可以获得原始表的内容,则称为无损连接分解。损连接分解。n例如:将例如:将R R(X X,Y Y,Z Z)分解成)分解成R R1 1(X X,Y Y)和)和R R2 2(X X,Z Z),如果,如果X X是是R R1 1和和R R2

31、 2的共同属性或属性集,且存在函数依的共同属性或属性集,且存在函数依赖集赖集F F=X XY Y,X XZ Z ,则该分解是无损的。,则该分解是无损的。DATABASEUESTC学以致用学以致用 用以促学用以促学 u无损中的损是指信息丢失。如果一个分解不是无损分解,无损中的损是指信息丢失。如果一个分解不是无损分解, 则所得结则所得结果的元组数总比原来的多(增加了噪声,但把原来的信息丢失了)。果的元组数总比原来的多(增加了噪声,但把原来的信息丢失了)。所谓所谓“有损有损”就损在出现多余的元组上。就损在出现多余的元组上。DATABASEUESTC学以致用学以致用 用以促学用以促学 n无损分解测试算

32、法无损分解测试算法追逐法(追逐法(ChaseChase)DATABASEUESTC学以致用学以致用 用以促学用以促学 nChaseChase是一个普遍的算法,无论一个关系模式分解为多是一个普遍的算法,无论一个关系模式分解为多少个关系模式,都可以用此算法进行检验。少个关系模式,都可以用此算法进行检验。n如果一个关系模式一分为二,可以简化检验。如果一个关系模式一分为二,可以简化检验。n例如例如DATABASEUESTC学以致用学以致用 用以促学用以促学 n所有的模式分解必须是无损的。所有的模式分解必须是无损的。n无损连接分解总是关于特定函数依赖集无损连接分解总是关于特定函数依赖集F F定义的。定义

33、的。n模式分解能消除数据冗余和操作异常现象。模式分解能消除数据冗余和操作异常现象。n但是分解以后,检索操作需要做笛卡尔积或连接操作但是分解以后,检索操作需要做笛卡尔积或连接操作,这将付出时间代价。,这将付出时间代价。n一般认为,为了消除冗余和异常现象,对模式进行分一般认为,为了消除冗余和异常现象,对模式进行分解是值得的。解是值得的。DATABASEUESTC学以致用学以致用 用以促学用以促学 n模式分解的另一个特性是分解的过程中能否保持函数模式分解的另一个特性是分解的过程中能否保持函数依赖集,如果不能保持函数依赖,那么数据的语义就依赖集,如果不能保持函数依赖,那么数据的语义就会出现混乱。会出现

34、混乱。n模式分解要保持函数依赖,因为函数依赖集模式分解要保持函数依赖,因为函数依赖集F F中的每一中的每一个函数依赖都代表数据库的一个约束。个函数依赖都代表数据库的一个约束。n如果某个分解能保持函数依赖集,那么在数据输入或如果某个分解能保持函数依赖集,那么在数据输入或更新时,只要每个关系模式本身的函数依赖约束被满更新时,只要每个关系模式本身的函数依赖约束被满足,就可以确保整个数据库中的语义完整性不被破坏足,就可以确保整个数据库中的语义完整性不被破坏。显然这是一种良好的特性。显然这是一种良好的特性。DATABASEUESTC学以致用学以致用 用以促学用以促学 n定义定义n举例:举例:u设医生关系

35、模式设医生关系模式R R(DnoDno,DlevelDlevel,DsalDsal)。假设每个医生只有一个职)。假设每个医生只有一个职称级别,每个职称级别只有一个工资数目。那么称级别,每个职称级别只有一个工资数目。那么R R上函数依赖集上函数依赖集F F=DnoDnoDlevelDlevel,DlevelDlevelDsalDsal 。u如果将如果将R R分解成分解成=RR1 1(Dno,Dlevel)(Dno,Dlevel),R R2 2(Dno,Dsal)(Dno,Dsal),可以验证这个,可以验证这个分解是无损分解。分解是无损分解。uR R1 1上的函数依赖是上的函数依赖是F F1 1=

36、DnoDnoDlevelDlevel ,R R2 2上的函数依赖是上的函数依赖是F F2 2=DnoDnoDsalDsal 。但是从这两个函数依赖推导不出在。但是从这两个函数依赖推导不出在R R上成立的函数上成立的函数依赖依赖DnoDnoDsalDsal。因此分解。因此分解把函数依赖把函数依赖DnoDnoDsalDsal丢失了,即丢失了,即不保不保持持F F。DATABASEUESTC学以致用学以致用 用以促学用以促学 n关系模式分解的两个特性实际上涉及两个数据库模式的等关系模式分解的两个特性实际上涉及两个数据库模式的等价问题,这种等价包括价问题,这种等价包括数据等价数据等价和和依赖等价依赖等

37、价两个方面。两个方面。n数据等价是指两个数据库实例应表示同样的信息内容,用数据等价是指两个数据库实例应表示同样的信息内容,用“无损分解无损分解”衡量。如果是无损分解,那么对关系反复的衡量。如果是无损分解,那么对关系反复的投影和连接都不会丢失信息。投影和连接都不会丢失信息。n依赖等价是指两个数据库模式应有相同的依赖集闭包。在依赖等价是指两个数据库模式应有相同的依赖集闭包。在依赖集闭包相等情况下,数据的语义是不会出错的。依赖集闭包相等情况下,数据的语义是不会出错的。n违反数据等价或依赖等价的分解很难说是一个很好的设计违反数据等价或依赖等价的分解很难说是一个很好的设计模式。模式。n但是要同时达到无损

38、分解和保持函数依赖的分解也不是一但是要同时达到无损分解和保持函数依赖的分解也不是一件容易的事情,需要认真对待。件容易的事情,需要认真对待。DATABASEUESTC学以致用学以致用 用以促学用以促学 n举例分析举例分析DATABASEUESTC学以致用学以致用 用以促学用以促学Click to add TitleClick to add Title1 1 关系模式设计问题关系模式设计问题1 1Click to add TitleClick to add Title2 2 函数依赖函数依赖2 2Click to add TitleClick to add Title2 2 模式分解模式分解3 3

39、Click to add TitleClick to add Title1 1 规范化规范化4 4Click to add TitleClick to add Title1 1 * *多值依赖多值依赖5 5Click to add TitleClick to add Title2 2 * *连接依赖连接依赖6 6DATABASEUESTC学以致用学以致用 用以促学用以促学 n范式(范式(Normal FormaNormal Forma,NFNF)是一种关系的状态,也是衡)是一种关系的状态,也是衡量关系模式好坏的标准。量关系模式好坏的标准。n范式的种类(范式的种类( 1NF 1NF,2NF2NF

40、,3NF3NF,BCNF BCNF )与数据依赖有着)与数据依赖有着直接的联系。在关系模式中存在函数依赖时就有可能存直接的联系。在关系模式中存在函数依赖时就有可能存在数据冗余,引出数据操作异常现象。在数据冗余,引出数据操作异常现象。n例如:就诊关系模式例如:就诊关系模式R R(DnameDname,DlevelDlevel,DsalDsal,PnamePname,FsumFsum)不是一个好的设计,因为存在冗余信息(重复存)不是一个好的设计,因为存在冗余信息(重复存储的职称和工资)。数据冗余不仅浪费存储空间,而且储的职称和工资)。数据冗余不仅浪费存储空间,而且会使数据库难以保持数据的一致性。会

41、使数据库难以保持数据的一致性。n范式可以用于确保数据库模式中没有各种类型的异常和范式可以用于确保数据库模式中没有各种类型的异常和不一致性。为了确定一个特定关系是否符合范式要求,不一致性。为了确定一个特定关系是否符合范式要求,需要需要检查关系中属性间的函数依赖检查关系中属性间的函数依赖,而不是检查关系中而不是检查关系中的当前实例的当前实例。DATABASEUESTC学以致用学以致用 用以促学用以促学 n一个规范化的模式有最小的数据冗余,它要求除了与元一个规范化的模式有最小的数据冗余,它要求除了与元组进行连接的组进行连接的外键外键(在另一个关系中是主键的属性组)(在另一个关系中是主键的属性组)之外

42、,数据库实例中的其他属性的值都不能被复制。之外,数据库实例中的其他属性的值都不能被复制。n规范化主要作为验证和改进逻辑数据库设计的工具,使规范化主要作为验证和改进逻辑数据库设计的工具,使得逻辑设计能够得逻辑设计能够满足特定约束满足特定约束并并避免不必要的数据重复避免不必要的数据重复。DATABASEUESTC学以致用学以致用 用以促学用以促学 n定义:在关系模式定义:在关系模式R R的每个关系的每个关系r r中,如果每个属性中,如果每个属性值都是不可再分的原子值,那么称值都是不可再分的原子值,那么称R R是第一范式(是第一范式(1NF1NF)的模式。)的模式。n1NF1NF不允许每个元组的每个

43、属性对应一组值、一行值不允许每个元组的每个属性对应一组值、一行值或两个值的组合。简单地说,或两个值的组合。简单地说,1NF1NF中不允许出现中不允许出现“表表中有表中有表”的现象。的现象。n1NF1NF是关系模式应具有的最起码的条件。满足是关系模式应具有的最起码的条件。满足1NF1NF的的关系称为规范化的关系;否则称为非规范化的关系关系称为规范化的关系;否则称为非规范化的关系。关系数据库研究的关系都是规范化的关系。关系数据库研究的关系都是规范化的关系。DATABASEUESTC学以致用学以致用 用以促学用以促学 n例如,就诊关系模式例如,就诊关系模式R R(DnoDno,PnoPno,Dlev

44、elDlevel,DsalDsal,Fsum)Fsum)中每个属性都不可再分,因此中每个属性都不可再分,因此R R满足满足1NF1NF。n但在医生关系模式但在医生关系模式D D(DnoDno,DnameDname,DresumeDresume)中,)中,如果如果DresumeDresume包括工作单位和工作时间两列信息,在包括工作单位和工作时间两列信息,在某个医生可能曾经工作过多个单位而出现多值,则某个医生可能曾经工作过多个单位而出现多值,则D D不满足不满足1NF1NF。将。将D D修改为修改为D1D1(DnoDno,DnameDname,DorganiseDorganise,DdateDd

45、ate),则),则D1D1就满足了就满足了1NF1NF。DATABASEUESTC学以致用学以致用 用以促学用以促学 n如果关系模式中存在部分函数依赖,那么它就不是一如果关系模式中存在部分函数依赖,那么它就不是一个好的关系模式,因为它很可能出现数据冗余和操作个好的关系模式,因为它很可能出现数据冗余和操作异常现象。因此,需要对这样的关系模式进行分解,异常现象。因此,需要对这样的关系模式进行分解,以排除局部函数依赖,使模式达到以排除局部函数依赖,使模式达到2NF2NF的标准。的标准。n2NF2NF定义:定义: 如果关系模式如果关系模式R R1NF1NF,且每个,且每个非主属性非主属性(不是组成候选

46、码的属性)不是组成候选码的属性)完全函数依赖完全函数依赖于候选码,那于候选码,那么称么称R R属于属于2NF2NF的模式。的模式。n2NF2NF是基于完全函数依赖的,只有在主键是复合属性是基于完全函数依赖的,只有在主键是复合属性下才可能不符合下才可能不符合2NF2NF。n2NF2NF是通往更高范式的中间步骤,它消除了是通往更高范式的中间步骤,它消除了1NF1NF存在的存在的部分问题。部分问题。DATABASEUESTC学以致用学以致用 用以促学用以促学 n2NF2NF举例举例u设有关系模式设有关系模式R R(DnoDno,PnoPno,DlevelDlevel,DsalDsal,Fsum)Fs

47、um)的属性分别表的属性分别表示医生编号、患者编号、医生职称级别、医生工资和诊疗费用。示医生编号、患者编号、医生职称级别、医生工资和诊疗费用。(DnoDno,PnoPno)是)是R R的候选码。的候选码。u如果如果R R上有两个上有两个FDFD:(:(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)和)和DnoDno(DlevelDlevel,DsalDsal),因此前面一个),因此前面一个FDFD是局部依赖,所以是局部依赖,所以R R不是不是2NF2NF。此时此时R R会出现冗余和异常。例如,某个医生为会出现冗余和异常。例如,某个医生为N N个病人看病,则在个病人看

48、病,则在关系中会出现关系中会出现N N个元组,而医生的职称级别和工资就会重复个元组,而医生的职称级别和工资就会重复N N次。次。u如果将如果将R R分解为分解为R R1 1(DnoDno,DlevelDlevel,DsalDsal)和)和R R2 2(DnoDno,PnoPno,FsumFsum)后,局部依赖()后,局部依赖(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)就消失了,)就消失了,R R1 1和和R R2 2都是都是2NF2NF了。了。DnamePnameDlevelDsalFsumDATABASEUESTC学以致用学以致用 用以促学用以促学 n2NF2

49、NF分解算法:将关系模式分解算法:将关系模式R R分解成分解成2NF2NF模式子集模式子集u设有关系模式设有关系模式R(U)R(U),主键是,主键是W W,R R上还存在函数依赖上还存在函数依赖X XZ Z,其中,其中Z Z是是非主属性和非主属性和X WX W,则,则W WZ Z就是一个局部依赖。此时应该把就是一个局部依赖。此时应该把R R分解分解成两个模式:成两个模式:u R R1 1(XZXZ),主键是),主键是X X;u R R2 2(U-ZU-Z),主键仍为),主键仍为W W,外键是,外键是X X(参考(参考R R1 1)。)。u利用外键和主键的连接可以从利用外键和主键的连接可以从R

50、R1 1和和R R2 2重新得到重新得到R R。u如果如果R R1 1和和R R2 2还不是还不是2NF2NF,则重复上述过程,一直到数据库模式中每,则重复上述过程,一直到数据库模式中每一个关系模式都是一个关系模式都是2NF2NF为止。为止。n例如例如uR R(DnoDno,PnoPno,DlevelDlevel,DsalDsal,Fsum)Fsum)中,存在中,存在FDFD:(:(DnoDno,PnoPno)(DlevelDlevel,DsalDsal)和)和DnoDno(DlevelDlevel,DsalDsal)u分解为:分解为:R R1 1(DnoDno,DlevelDlevel,Ds

51、alDsal)和)和R R2 2(DnoDno,PnoPno,FsumFsum)DATABASEUESTC学以致用学以致用 用以促学用以促学 n定义:如果关系模式定义:如果关系模式R R1NF1NF,且每个,且每个非主属性非主属性都都不传不传递依赖递依赖于于R R的候选码,那么称的候选码,那么称R R属于属于3NF3NF的模式。的模式。n在在3NF3NF中,关系模式是由主键和一组相互独立的非主中,关系模式是由主键和一组相互独立的非主属性组成的,它满足两个条件:属性组成的,它满足两个条件:u(1 1)R R中的非主属性相互独立;中的非主属性相互独立;u(2 2)R R中的非主属性函数依赖于主键。

52、中的非主属性函数依赖于主键。DATABASEUESTC学以致用学以致用 用以促学用以促学 n3NF3NF举例:举例:uR R2 2(DnoDno,PnoPno,FsumFsum)是)是2NF2NF模式,而且也是模式,而且也是3NF3NF模式。模式。u但是但是R R1 1(DnoDno,DlevelDlevel,DsalDsal)是)是2NF2NF模式,但不一定是模式,但不一定是3NF3NF。因为。因为如果如果R R1 1中存在函数依赖中存在函数依赖DnoDnoDlevelDlevel和和DlevelDlevelDsalDsal,那么,那么DnoDnoDsalDsal就是一个传递依赖,即就是一个

53、传递依赖,即R R1 1不是不是3NF3NF模式。模式。u此时此时R R1 1的关系也会出现冗余和异常。例如,的关系也会出现冗余和异常。例如,R R2 2中存在中存在M M个职称同为个职称同为主任级别的医生,则主任级别的医生,则R R1 1中需要重复存储中需要重复存储M M个相同的工资数目。个相同的工资数目。u如果将如果将R R1 1分解为分解为R R1111(DnoDno,DlevelDlevel)和)和R R1212(DlevelDlevel,DsalDsal)后,)后,DnoDnoDsalDsal就不会出现在就不会出现在R R1111和和R R1212中,因此中,因此R R1111和和R

54、 R1212都是都是3NF3NF的模式。的模式。DnamePnameDlevelDsalFsumDATABASEUESTC学以致用学以致用 用以促学用以促学 n3NF3NF分解算法:分解算法: 将关系模式将关系模式R R分解为分解为3NF3NF模式集。模式集。u设关系模式设关系模式R R(U U),主键是),主键是W W,R R上还存在上还存在FD XFD XZ Z,其中,其中Z Z是非主属是非主属性,性, 且且X X不是候选键,这样不是候选键,这样W WZ Z就是一个传递依赖。此时应把就是一个传递依赖。此时应把R R分解成两个模式:分解成两个模式:u R R1 1(XZXZ),主键是),主键

55、是X X;u R R2 2(U -Z U -Z ),主键仍是),主键仍是W W,外键是,外键是X X(参考(参考R R1 1)。)。u利用外键和主键相匹配机制,利用外键和主键相匹配机制,R R1 1和和R R2 2通过连接可以重新得到通过连接可以重新得到R R。u如果如果R R1 1和和R R2 2还不是还不是3NF3NF,则重复上述过程,一直到数据库模式中每,则重复上述过程,一直到数据库模式中每一个关系模式都是一个关系模式都是3NF3NF为止。为止。n例如:例如:uR R1 1(DnoDno,DlevelDlevel,DsalDsal)上存在)上存在DnoDnoDlevelDlevel和和D

56、levelDlevelDsalDsal,则,则DnoDno DsalDsal为传递函数依赖为传递函数依赖u分解为:分解为:R R1111(DnoDno,DlevelDlevel)和)和R R1212(DlevelDlevel,DsalDsal)ZX DATABASEUESTC学以致用学以致用 用以促学用以促学 n定理:如果定理:如果R R是是3NF3NF模式,那么模式,那么R R也是也是2NF2NF模式。模式。n局部依赖和传递依赖是关系模式产生数据冗余和异常局部依赖和传递依赖是关系模式产生数据冗余和异常的两个重要原因。的两个重要原因。n由于由于3NF3NF模式中不存在非主属性对候选键的局部依赖

57、模式中不存在非主属性对候选键的局部依赖和传递依赖,因此和传递依赖,因此3NF3NF消除了很大一部分存储异常,消除了很大一部分存储异常,具有较好的性能。具有较好的性能。n而对于非而对于非1NF1NF、1NF1NF和和2NF2NF的关系模式,由于它们的性的关系模式,由于它们的性能较差,通常不宜作为数据库模式,需要将这些关系能较差,通常不宜作为数据库模式,需要将这些关系模式变换为模式变换为3NF3NF或更高级的范式。这种变换过程称为或更高级的范式。这种变换过程称为“关系的规范化处理关系的规范化处理”。DATABASEUESTC学以致用学以致用 用以促学用以促学 n在在3NF3NF模式中,并未排除主属

58、性对候选键的传递依赖模式中,并未排除主属性对候选键的传递依赖,因此有必要提出更高一级的范式。,因此有必要提出更高一级的范式。nBCBC范式(范式(Boyce-Codd Normal FormBoyce-Codd Normal Form,BCNFBCNF),由),由BoyceBoyce与与CoddCodd提出的,比上述的提出的,比上述的3NF3NF又进了一步,通常又进了一步,通常认为认为BCNFBCNF是修正的第三范式,有时也称为扩充的第三是修正的第三范式,有时也称为扩充的第三范式。范式。n3NF3NF定义:如果关系模式定义:如果关系模式R R1NF1NF,且每个属性都不传,且每个属性都不传递依

59、赖于递依赖于R R的候选码,那么称的候选码,那么称R R是是BCNFBCNF的模式。的模式。DATABASEUESTC学以致用学以致用 用以促学用以促学 n由由BCNFBCNF的定义可以得到以下结论,一个满足的定义可以得到以下结论,一个满足BCNFBCNF的关的关系模式有:系模式有:u所有非主属性对每一个码都是完全函数依赖。所有非主属性对每一个码都是完全函数依赖。u所有的主属性对每一个不包含它的码,也是完全函数依赖。所有的主属性对每一个不包含它的码,也是完全函数依赖。u没有任何属性完全函数依赖于非码的任何一组属性。没有任何属性完全函数依赖于非码的任何一组属性。DATABASEUESTC学以致用

60、学以致用 用以促学用以促学 n举例举例u关系模式关系模式R R(BnoBno,BnameBname,AuthorAuthor)的属性分别表示书号、书名和)的属性分别表示书号、书名和作者名。假如每个书号只有一个书名,但不同的书号可以有相同的作者名。假如每个书号只有一个书名,但不同的书号可以有相同的书名;每本书可以有多个作者合写,但每个作者参与编著的书名应书名;每本书可以有多个作者合写,但每个作者参与编著的书名应该互不相同。该互不相同。uR R上的上的FDFD如下:如下:BnoBnoBnameBname和(和(BnameBname,AuthorAuthor)BnoBnou因此因此R R的关键码是(

温馨提示

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

评论

0/150

提交评论