您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第4章DataBase关系数据理论(新1)
数据库系统概论AnIntroductiontoDatabaseSystem§4关系数据理论§4.1关系规范化4.1.1引言---问题的提出关系数据库逻辑设计针对具体数据库设计问题,如何构造一个适合于它的关系模式(举例)数据库逻辑设计的工具──关系数据库的规范化理论【例4.1】关系模式比较关系模式1S{学号,姓名,性别}C{学号,课程号,课程名,学习期限,成绩,奖学金}关系模式2S{学号,姓名,性别}L{学号,课程名,成绩}C{课程号,课程名,学习期限}A{成绩,奖学金}两种关系模式使用起来效果大不相同幻灯片9幻灯片5关系模式1-C的一个派生关系C{学号,课程号,课程名,学习期限,成绩,奖学金}学号课号课名学习期限成绩奖学金101C2人工智能310060102C2人工智能37030103C2人工智能36520104C2人工智能37030101C3编译原理27030103C3编译原理29050[思考]:这个关系是否存在一些弊病?“不好的”关系模式弊病总结:数据存储冗余数据不一致性插入异常(应该插入的数据未被插入)删除异常(不该删除的数据被删除)[思考]:关系模式1为什么会出现这些弊病,而关系模式2中却没有出现?原因:关系模式1-C中的某些属性之间存在某些具有不好性质的数据依赖。解决办法—关系规范化理论(1)分析出一个关系模式会有哪些不好性质的数据依赖?(2)如何改造一个不好的(/不规范的)关系模式(模式分解)?数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系是现实世界属性间相互联系的抽象是数据内在的性质是语义的体现数据依赖的类型函数依赖(FunctionalDependency,简记为FD)多值依赖(MultivaluedDependency,简记为MVD)其他4.1.2规范化规范化理论用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。所谓规范化实质上是概念的单一化让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。幻灯片3一.函数依赖函数依赖的定义函数依赖的分类平凡函数依赖与非平凡函数依赖完全函数依赖与部分函数依赖传递函数依赖与直接函数依赖定义4.1设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。X称为这个函数依赖的决定属性集(Determinant)。[说明]:2.函数依赖是语义范畴的概念,根据数据的语义来确定。例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立。如果x和y之间是“1:1”联系,则存在FD:xy如果x和y之间是“N:1”联系,则存在FD:xy如果x和y之间是“M:N”联系,则x和y之间不存在FD3.数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。1.函数依赖是指关系模式R的所有关系实例均要满足的约束条件。关系模式C(课号,课名)课号课名c01数据结构c02数据库c03操作系统FD:课号课名关系模式S(学号,姓名)学号姓名01李明02王明03陈明04杨明05王明FD:学号姓名关系模式SC(学号,课号)学号课号01c0101c0202c0103c0203c03学号和课号之间不存在FD函数依赖举例[例4.2]:Student(Sno,Sname,Ssex,Sage,Sdept)假设不允许重名,则有:Sno→Ssex,Sno→Sage,Sno→Sdept,Sno←→Sname,Sname→Ssex,Sname→SageSname→Sdept但Ssex→Sage平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖若X→Y,且YX,则称X→Y是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中,非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,Cno)→Sno(Sno,Cno)→Cno平凡函数依赖与非平凡函数依赖对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此。若不特别声明,我们总是讨论非平凡函数依赖。完全函数依赖与部分函数依赖定义4.2在关系模式R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y完全函数依赖于X,记作XfY。若X→Y,但Y不完全函数依赖于X,则称Y部分函数依赖于X,记作XPY。完全函数依赖与部分函数依赖举例例:在关系SC(Sno,Cno,Grade)中,由于:Sno→Grade,Cno→Grade,因此:(Sno,Cno)fGrade在关系C(学号,课程号,课程名,学习期限,成绩,奖学金)中,由于:(学号,课程号/名)→学习期限,课程号/名→学习期限因此:(学号,课程号/名)P学习期限传递函数依赖定义4.3在关系模式R(U)中,如果X→Y,Y→Z,且YX,Y→X,则称Z传递函数依赖于X。注:如果Y→X,即X←→Y,则Z直接依赖于X。例:在关系Std(Sno,Sdept,Mname)中,有:Sno→Sdept,Sdept→Sno,Sdept→MnameMname传递函数依赖于Sno二.候选码(用函数依赖的概念定义)设K为关系模式RU,F中的属性或属性组。若KfU,则K称为R的一个候选码(CandidateKey)。若关系模式R有多个候选码,则选定其中的一个作为主码(Primarykey)。主属性(PA,指任一候选码中的属性)非主属性(NPA)关系模式COURSE(课号,课名,学习期限,学分)候选码={课号,课名}主码={课号}PA={课号,课名}NPA={学习期限,学分}关系模式SC(学号,课号,成绩)候选码={(学号,课号)}主码={(学号,课号)}PA={学号,课号}NPA={成绩}候选码举例如何求解候选码?候选码求解理论对于给定的关系R(A1,A2,…,An)和函数依赖集F,可将其属性分为四类:L类:仅出现在F中各函数依赖左部的属性。R类:仅出现在F中各函数依赖右部的属性。N类:在F中各函数依赖左右两边均未出现的属性。LR类:在F中各函数依赖左右两边均出现的属性。定理1:对于(R,F),若x是R中的L类属性,则x必为R的任一候选码的成员。(推论1:若x的属性闭包包含了R的全部属性,则x必为R的唯一候选码)定理2:对于(R,F),若x是R中的R类属性,则x不在任何候选码中。定理3:对于(R,F),若x是R中的N类属性,则x必包含在R的任一候选码中。推论2:对于(R,F),若x是R的N类和L类组成的属性集,且x的属性闭包包含了R的全部属性,则x是R的唯一候选码。【例1】:设有关系模式R(A,B,C,D),函数依赖集F={DB,BD,ADB,ACD},求R的所有候选码。解:因为A,C是L类属性,所以由定理1可知:A,C必是R的任一候选码的成员。又因为AC的属性闭包是ABCD,所以,由推论1可知:AC是R的唯一候选码。【课后思考题】:设有关系模式R(A,B,C,D,E,P),函数依赖集F={AD,ED,DB,BCD,DCA},求R的所有候选码。本节课内容小结关系规范化的必要性理解并能够分析“不规范的”关系模式存在的四种弊病。理解关系规范化的实质掌握函数依赖的定义和分类部分依赖、传递依赖掌握候选码、主码、主属性、非主属性的定义和候选码求解理论下节课内容范式的定义及分类规范化过程下课了。。。休息一会儿。。。
本文标题:第4章DataBase关系数据理论(新1)
链接地址:https://www.777doc.com/doc-4005287 .html