数据库原理与应用教学课件06关系数据库的模式设计

举报
资源描述
问题的提出问题的提出n如何把现实世界表达成数据库模式?如何把现实世界表达成数据库模式?n针对一个具体应用,应该如何构造一个适合于它的数据库模式?针对一个具体应用,应该如何构造一个适合于它的数据库模式?n这是数据库的逻辑设计问题这是数据库的逻辑设计问题n关系数据库的模式设计理论是数据库逻辑设计的理论基础关系数据库的模式设计理论是数据库逻辑设计的理论基础本章主要内容本章主要内容n关系模式的设计问题关系模式的设计问题n函数依赖函数依赖n关系模式的分解关系模式的分解n关系模式的范式关系模式的范式一、关系模式的设计问题一、关系模式的设计问题n关系模式设计不规范会带来一系列的问题关系模式设计不规范会带来一系列的问题n数据冗余n更新异常n插入异常n删除异常示例关系模式示例关系模式R RTnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6示例关系模式示例关系模式 R(Tname,Addr,C#,Cname)R(Tname,Addr,C#,Cname)一个教师只有一个地址(户口所在地)一个教师只有一个地址(户口所在地)一个教师可教多门课程一个教师可教多门课程一门课程只有一个任课教师一门课程只有一个任课教师因此因此R R的主码是(的主码是(C C)1 1、问题(、问题(1 1):数据冗余):数据冗余TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6n教师教师T1T1教了三门课程,他的地址被重复存储了教了三门课程,他的地址被重复存储了2 2次次2 2、问题(、问题(2 2):更新异常):更新异常TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6n如果如果T1T1的地址变了,则需要改变的地址变了,则需要改变3 3个元组的地址;若有一个未更改,就会出现个元组的地址;若有一个未更改,就会出现数据不一致。但数据不一致。但DBMSDBMS无法获知这种不一致无法获知这种不一致3 3、问题(、问题(3 3):插入异常):插入异常TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6n如果要增加一名教师,但他还未带课,则如果要增加一名教师,但他还未带课,则C#C#和和CnameCname为空,但由于为空,但由于C C是主码,是主码,为空违反了实体完整性,所以这名教师将无法插入到数据库中为空违反了实体完整性,所以这名教师将无法插入到数据库中4 4、问题(、问题(4 4):删除异常):删除异常TnameAddrC#CnameT1A1C1N1T1A1C2N2T1A1C3N3T2A2C4N4T2A2C5N5T3A3C6N6n如果教师如果教师T3T3现在不带课了,则需将现在不带课了,则需将T3T3的元组删去,但同时也把他的姓名的元组删去,但同时也把他的姓名和地址信息以及和地址信息以及C6C6课程信息删掉了课程信息删掉了5 5、如何解决?、如何解决?n方法:模式分解方法:模式分解n方法方法1 1:R R分解为分解为nR1(Tname,Addr)nR2(C#,Cname)n方法方法2 2nR1(Tname,Addr,C#)nR2(C#,Cname)n方法方法3 3nR1(Tname,Addr)nR2(Tname,C#,Cname)授课信息丢失了R1中问题依然存在基本解决问题,但又带来联接查询代价5 5、如何解决?、如何解决?n到底什么样的模式才最佳?怎么分解才能达到要求?标准到底什么样的模式才最佳?怎么分解才能达到要求?标准是什么?如何实现?是什么?如何实现?本章内容本章内容二、函数依赖二、函数依赖n什么是函数依赖什么是函数依赖n基本概念基本概念n平凡和不平凡的函数依赖平凡和不平凡的函数依赖n函数依赖集的闭包函数依赖集的闭包n属性集的闭包属性集的闭包n最小函数依赖集最小函数依赖集1 1、什么是函数依赖?、什么是函数依赖?n函数依赖是指一个关系模式中一个属性集和另一个属性集间的多对一函数依赖是指一个关系模式中一个属性集和另一个属性集间的多对一关系关系n例如选课关系例如选课关系SC(S#,C#,Score)SC(S#,C#,Score)n存在由属性集存在由属性集S#,C#S#,C#到属性集到属性集ScoreScore的函数依赖的函数依赖n对于任意给定的S#值和C#值,只有一个Score值与其对应n反过来,可以存在多个S#值和C#值,它们对应的Score值相等2 2、基本概念、基本概念n函数依赖(函数依赖(FDFD,Functional DependencyFunctional Dependency)的形式化定义)的形式化定义n设关系模式设关系模式R(A1,A2,R(A1,A2,An),An)或简记为或简记为R(U)R(U),X X和和Y Y是是U U的子集。的子集。r r是是R R的的任意任意一个实例一个实例(关系),若(关系),若r r的的任意任意两个元组两个元组t1t1、t2t2,由,由t1X=t2Xt1X=t2X可导致可导致t1Y=t2Yt1Y=t2Y,即如,即如果果X X相等则相等则Y Y也相等,则称也相等,则称Y Y函数依赖于函数依赖于X X或称为或称为X X函数决定函数决定Y Y,记作,记作 XYXYn即R的X属性集上的值可唯一决定R的Y属性集上的值n也即对于R的任意两个元组,X上的值相等,则Y上的值也必相等nFDFD是相对于关系模式而言的,因此关系模式是相对于关系模式而言的,因此关系模式R R的所有实例都要满足的所有实例都要满足FDFD2 2、基本概念、基本概念n例如例如nStudentStudent关系模式中,关系模式中,S#Sname S#Sname(单个属性可去掉括号,简写成(单个属性可去掉括号,简写成 S#Sname S#Sname)nSCSC关系模式中,关系模式中,S#,C#ScoreS#,C#ScorenFDFD是否成立,唯一办法是仔细考察应用中属性的含义。是否成立,唯一办法是仔细考察应用中属性的含义。FDFD实际上是对现实际上是对现实世界的断言。数据库设计者在设计时把应遵守的函数依赖通知实世界的断言。数据库设计者在设计时把应遵守的函数依赖通知DBMSDBMS,则则DBMSDBMS会自动检查关系的合法性会自动检查关系的合法性n对于关系模式对于关系模式 R(Tname,Addr,C#,Cname)R(Tname,Addr,C#,Cname)n若一门可只能有一个教师,则有C#Tnamen若一门课可有多个教师任教,则C#Tname不成立n因此FD是与具体应用相关的2 2、基本概念、基本概念n关系模式的形式化定义:关系模式的形式化定义:nR R(U U,D D,domdom,F F)nR为关系模式名,U是一个属性集,D是U中属性的值所来自的域,Dom是属性向域的映射集合,F是属性间的依赖关系nFDFD是关系模式的一部分是关系模式的一部分3 3、平凡、平凡FDFD和不平凡和不平凡FDFDn模式设计的首要问题是确定关系模式的最小函数依赖集模式设计的首要问题是确定关系模式的最小函数依赖集n给定一个函数依赖集S,若能找到一个远小于S的函数依赖集T,则DBMS只要实现T就可实现S中的所有函数依赖n平凡平凡FDFD和不平凡和不平凡FDFDnXY,且Y X,则XY是平凡FD,否则是不平凡FDn平凡平凡FDFD没有什么实际意义,消除平凡没有什么实际意义,消除平凡FDFD是缩小函数依赖集大小的一个是缩小函数依赖集大小的一个简单方法简单方法4 4、函数依赖集的闭包、函数依赖集的闭包n函数依赖的逻辑蕴含函数依赖的逻辑蕴含n设F是关系模式R的一个函数依赖集,X和Y是R的属性子集,若从F的函数依赖中能推出XY,则称F逻辑蕴含XY,记作F XYn函数依赖集的闭包函数依赖集的闭包n被函数依赖集F逻辑蕴含的函数依赖的全体构成的集合称为F的闭包,记做F+(1 1)函数依赖的推理规则)函数依赖的推理规则nArmstrongArmstrong公理,可以从给定的函数依赖中推出新的函数依赖公理,可以从给定的函数依赖中推出新的函数依赖n自反律(Reflexity):若B A,则AB成立n增广律(Augmentation):若AB,则ACBC(AC表示AC)n传递律(Transitivity):若AB,BC,则ACn自含律(Self_Determination):AAn分解律(Decomposition):若ABC,则AB,且ACn合并律(Union):若AB,AC,则ABCn复合律(Composition):若AB,CD,则ACBD(1 1)函数依赖的推理规则)函数依赖的推理规则nR(A,B,C,D,E,F)R(A,B,C,D,E,F)nF=F=ABC,BE,CDEFABC,BE,CDEF nADADFF对于函数依赖集对于函数依赖集F F是否成是否成立?立?nABC(已知)nAC(分解律)nADCD(增广律)nCDEF(已知)nADEF(传递律)nADF(分解律)(2 2)码的形式化定义)码的形式化定义n设关系模式设关系模式R R(U U),),F F是是R R的一个的一个FDFD集,集,X X是是U U的一个子集,若的一个子集,若nXU F+,则X是R的一个超码,如果同时n不存在X的真子集Y,使得YU成立,则X是R的一个候选码nR(Tname,Addr,C#,Cname)R(Tname,Addr,C#,Cname)nF=TnameAddr,C#Cname,C#TnamenC#Tname,Addr,C#,Cnamen所以C是候选码,若C#Tname不成立,则候选码因为Tname,C#5 5、属性集的闭包、属性集的闭包n函数依赖集的闭包计算很麻烦函数依赖集的闭包计算很麻烦n给定一个函数依赖集给定一个函数依赖集F F,如何判断函数依赖,如何判断函数依赖XYXY是否可以从是否可以从F F中推出?中推出?n属性集的闭包属性集的闭包n设F是属性集U上的一个FD集,X是U的子集,则称所有用Armstrong推理规则推出的函数依赖XA中所有A的集合,称为属性集X关于F的闭包,记做X+nXYXY能由能由ArmstrongArmstrong推理规则推出的充要条件是推理规则推出的充要条件是Y Y X X+(1 1)例子)例子n关系模式关系模式R(A,B,C,D)R(A,B,C,D)nF FAB,BC,BD,AB,BC,BD,AD AD nA+=ABCDnB+=BCDnC+=CnD+=Dn不用计算不用计算F F+,就可知,就可知ACD ACD F F+6 6、最小函数依赖集、最小函数依赖集n函数依赖集的等价和覆盖函数依赖集的等价和覆盖n设设S1S1和和S2S2是两个函数依赖集,若是两个函数依赖集,若S1S1+S2S2+,则称则称S2S2是是S1S1的覆盖(或的覆盖(或S2S2覆盖覆盖S1S1)nDBMS只要实现S2中的函数依赖,就自动实现了S1中的函数依赖n若若S2S2是是S1S1的覆盖,且的覆盖,且S1S1是是S2S2的覆盖,则称的覆盖,则称S1S1与与S2S2等价等价nDBMS只要实现任意一个FD集,就可自动实现另一个FD集(1 1)定义)定义n当且仅当函数依赖集当且仅当函数依赖集F F满足下面条件时,满足下面条件时,F F是最小函数依赖集:是最小函数依赖集:nF的每个FD的右边只有一个属性nF不可约:F中的每个XY,FXY与F不等价nF的每个FD的左部不可约:删除左边的任何一个属性都会使F转变为一个不等价于原来的F的集合(2 2)举例)举例nStudent(S#,Sname,Age,Sex)Student(S#,Sname,Age,Sex)nF1=S#Sname,S#age,S#sex是最小函数依赖集nF2=S#S#,Sname,S#age,S#sex不是最小函数依赖集【右边不是单属性】nF3=S#Sna
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 高等教育 > 大学课件


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号