资源描述
第二篇设计与应用开发篇第二篇设计与应用开发篇6、法律的基础有两个,而且只有两个公平和实用。伯克7、有两种和平的暴力,那就是法律和礼节。歌德8、法律就是秩序,有好的法律才有好的秩序。亚里士多德9、上帝把法律和公平凑合在一起,可是人类却把它拆开。查科尔顿10、一切法律都是无用的,因为好人用不着它们,而坏人又不会因为它们而变得规矩起来。德谟耶克斯v本章是关系模型的理论基础之二,该理论是指导数据库设计的重要依据。v本章将阐述关系数据库中最深的一些特性函数依赖、多值依赖和连接依赖,以及由此引出的诸多异常,如插入异常、更新异常、删除异常及冗余等,对于出现的问题,通过理论引入,对关系模式的规范化进行系统阐述。本次本次课主要内容主要内容1关系模型概念回顾2关系模式中可能存在的异常3关系模式中存在异常的原因4关系模式的规范化一、概念回一、概念回顾v关系关系:描述实体、属性、实体间的联系。从形式上看,它是一张二维表;v关系模式关系模式:对关系的描述;关系数据库中,关系模式是型,关系是值;v关系数据库关系数据库:基于关系模型的数据库;v关系数据库的模式关系数据库的模式:对关系数据库的描述,关系数据库的型也称为关系数据库模式。关系模式的形式化定关系模式的形式化定义v关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名;U:组成该关系的属性名集合一组属性U;D:属性组U中属性所来自的域;DOM:属性向域的映象集合F:属性间数据的依赖关系集合属性间数据的依赖关系集合二、关系模式中可能存在的异常二、关系模式中可能存在的异常例例1:建立一个描述学校教务的数据库:学生的学号(:建立一个描述学校教务的数据库:学生的学号(Sno)、所)、所在系(在系(Sdept)、系主任姓名()、系主任姓名(Mname)、课程号()、课程号(Cno)成)成绩(绩(Grade););v假设用单一的关系模式 Student 来表示,则该关系模式的属性集合U Sno,Sdept,Mname,Cname,Grade v现实世界已知事实的语义:一个系有若干学生,一个学生只属于一个系;一个系只有一名系主任;一个学生可以选修多门课程,每门课程有多名学生选修;每个学生所学的每门课程都有一个成绩。Student表SnoSdeptMnamecnogradeS1计算机系张明C195S1计算机系张明C285S1计算机系张明C396S4计算机系张明C173S5计算机系张明C186v数据冗余数据冗余如果一个系有多名学生或该学生选修了多门课程,则系名称和系主任姓名就要出现多次,浪费了存储设备;v操作异常操作异常 由于数据的冗余,在对数据操作时会引起各种异常:更新异常更新异常:如果某系更换系主任或更换系名后,系统必须修改与该系学生有关的每一个元组;若有一个元组中的数据未更改,就会造成这个系主任姓名不一致现象。数据冗余数据冗余,更新数据时,维护数据完整性代价大,更新数据时,维护数据完整性代价大v操作异常插入异常插入异常:如果一个系刚成立,无学生,或者虽然有学生但尚未安排课程,那么就无法把这个系及其负责人的信息加入数据库。应该插入而未被插入应该插入而未被插入删除异常删除异常:如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。不该删除的数据不得不删不该删除的数据不得不删v结论:Student关系模式不是一个好的模式。“好好”的模式的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。v如果将关系模式Student划分为三个关系模式S(Sno,Sdept)SC(Sno,Cno,Grade)Dept(Sdept,Mname)可基本解决以上问题,但分解后是否是最佳的模式,也不是绝对的。三、关系模式中存在异常的原因三、关系模式中存在异常的原因v事实上,异常现象产生的根源,就是由于关系模式中属性间存在着复杂的依赖关系。如学生学号和学生姓名、学生学号和院系名称、院系名称和院系系领导之间都存在着依赖关系,这种依赖都称为数据依赖;v数据依数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。v数据冗余的产生和数据依赖有着密切的关系;v数据依数据依赖是通过一个关系内部属性与属性之间的一种约束关系约束关系;是语义的体现;是语义的体现;是现实世界属性间相互联系的抽象;是数据内在的性质;v数据依赖的类型函数依赖(Functional Dependency,简记为FD)多值依赖(Multivalued Dependency,简记为MVD)其他v函数依函数依赖函数依赖极普遍地存在现实生活中,如描述一个学生的关系:学生(学生(学号学号、姓名、系名、系、姓名、系名、系领导),),如果语义是:一个学号只对应的学生,一个学生只在一个系学习;那么学号学号姓名;学号姓名;学号系名;系名系名;系名系系领导类似于 Y=F(x)函数,变量x确定后,相应y的值也确定了;可写为:name=f(sno),dept=f(sno),mname=f(sdept)可称为:name和和dept函数依函数依赖于于sno,mname函数依函数依赖于于dept;v对于关系模式StudentSno,Sdept,Mname,Cno,Grade v由语义可得出一组函数依赖:FSnoSdept,SdeptMname,(Sno,cno)Grade SnoCnoSdeptMnameGrade例例1:有一:有一关系模式:关系模式:供供应商(供商(供应商商编号、供号、供应商名称,供商名称,供应商商地址,供地址,供应商商电话,供,供货名称,供名称,供货单价);价);一个供一个供应商可以商可以供供应多种多种货物,同一种物,同一种货物也可以由多个供物也可以由多个供应商供商供应;1.写出写出该关系模式的函数依关系模式的函数依赖集集F?2.评价价该关系模式,并关系模式,并举例例说明是否存在下列明是否存在下列问题数据冗余数据冗余;更新异常;插入异常更新异常;插入异常;删除异常删除异常 3.如何改造如何改造该关系模式?关系模式?v如何构造一个好的关系模式呢?消除数据冗余,更新异常,插入异常和删除异常的关系模式v如何改造关系模式?如何把一个不好的关系模式分解改造为一个好的关系模式,分析一个关系模式有哪些数据依赖,如何消除那些不合适的数据依赖,这就是关系数据库设计过程中要讨论的规范化理论问题。四、关系模式的四、关系模式的规范化范化v关系关系规范化理范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。函数依赖其他相关定义(候选码)关系模式的范式1、函数依、函数依赖v函数依函数依赖定定义设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意任意两个元组t1和t2,如果t1X=t2 X,则t1Y=t2 Y,那么称X函数确定函数确定Y或Y函数依赖函数依赖X,记作 XY。不可能存在两个元组不可能存在两个元组在在X上的属性值相等,而在上的属性值相等,而在Y上的属性值不等上的属性值不等任意:关系模式R中的所有关系都要满足约束条件在X上:取值唯一v所谓函数依赖是指一个或一组属性的值可以决定其它属性的值。函数依赖正如一个函数 y=f(x),x的值给定后,y的值也就唯一地确定了。v对于关系模式R,U为属性集合,XY为其属性子集,根据函数依赖定义和实体间联系的定义,可得出如下结论:若X和Y是1:1的联系,则存在函数依赖XY 和Y X;若X和Y是1:n的联系,则存在函数依赖Y X;若X和Y是m:n的联系,则XY之间不存在函数依赖关系。以关系模式以关系模式student为例例系与系主任是 1:1,故有sdept Mname和Mnamesdept;系与学生是 1:n,故有sno sdept 学生与课程是m:n,故sno和cno之间不存在函数依赖例:S(Sno,Sname,Ssex,Sage,Sdept)假设学生姓名不允许重名,则有:Sno Ssex,Sno Sage,Sno Sdept,Sno Sname,Sname Ssex,Sname SageSname Sdept但Ssex Sage备注:1)若XY,并且YX,则记为XY。2)若Y不函数依赖于X,则记为XY。函数依函数依赖说明明v函数依赖是语义范畴范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名年龄”这个函数依赖只有在不允许有同名人时成立。例如,如果允许一个职工只有一个电话号码,那么,职工号确定了,则其电话号码也就随之确定了。v设计者可以对现实世界做强制规定;v关系模式的所有关系所有关系实例例都要满足约束条件。v函数依函数依赖分分类及其定及其定义平凡函数依赖(Trivial FD)非平凡函数依赖(Nontrivial FD)完全函数依赖(Full FD)部分函数依赖(Partial FD)传递函数依赖(Transitive FD)1)平凡函数依)平凡函数依赖与非平凡函数依与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y:如果XY,但Y X,则称XY是非平凡的函数依非平凡的函数依赖;如果XY,但Y X,则称XY是平凡的函数依平凡的函数依赖;若XY,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。备注:对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,若不特别声明,我们总是讨论非平凡函数依赖。v例例1:在关系:在关系Student(Sno,Cno,Grade)中中 (Sno,Cno)Grade,但Grade (Cno,Sno)(Sno,Cno)Sno,但Sno (Sno,Cno)非平凡函数依赖:(Sno,Cno)Grade 平凡函数依赖:(Sno,Cno)Sno (Sno,Cno)Cno2)完全函数依赖与部分函数依赖)完全函数依赖与部分函数依赖定义定义6.2 在R(U)中,v如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y对X完全函数依完全函数依赖,记作X FY;v若XY,但Y不完全函数依赖于X,则称Y对X部分函数依部分函数依赖,记作X PY。例例1:在关系在关系SC(Sno,Cno,Grade)中中 由于:(Sno,Cno)Grade,Sno Grade,Cno Grade 因此:(Sno,Cno)Grade(完全函数依赖)由于:(Sno,Cno)Sdept,Sno Sdept故:(Sno,Cno)P Sdept(部分函数依赖)3)传递函数依赖)传递函数依赖定定义6.3v在R(U)中,如果XY(Y X),YX,YZ,则称Z对X传递函数依赖。记为:X Z;v若上述定义中有YX,则XY,实际上为XZ,是直接函数依赖而不是传递函数依赖。传递例1:在关系Student(Sno,Sdept,Mname,cno,Grade)中,有Sno Sdept,Sdept Sno,(非平凡函数依赖)Sdept sno,Sdept Mname则称:称:Mname传递函数依函数依赖于于Sno,记作作Sno Mname传递例:模式例:模式R(Sno,Sname,Sdept,Mname,Cno,Cname,Grade),根根据其据其语义,有如下函数依,有如下函数依赖关系:关系:语义1:每个学生只会有一个学号;SnoSname语义2:系与学生是一对多的关系;SnoSdept语义3:系与系主任是一对一的关系;SdeptMname语义4:每门课程只有一个课程号;CnoCname语义5:每个学生学习每门课程有一个成绩;(Sno,Cno)FGrade可推出:Sno 传递 Mnamev省略部分函数依赖:如(Sno,Cno)PSname等本次本次课总结1关系模型概念回顾关系、关系模型、关系数据库、定义2关系模式中可能存在的异常(示例)数据冗余、插入异常、删除异常、更新复杂3关系模式中存在异常的原因数据依赖(定义、分类)、函数依赖4关系模式的规范化函数依赖(平凡、非平凡、完全、部分、传递函数依赖)范式n36、自己的鞋子,自己知道紧在哪里。西班牙n37、我们唯一不会改正的缺点是软弱。拉罗什福科n38、我这个人走得很慢,但是我从不后退。亚伯拉罕林肯n39、勿问成功的秘诀为何,且尽全力做你应该做的事吧。美华纳n40、学而不思则罔,思而不学则殆。孔子xiexie!xiexie!谢谢!谢谢!
展开阅读全文