第6章 关系数据理论优秀PPT.ppt
第6章 关系数据理论现在学习的是第1页,共109页 网状、层次模型的数据库设计,主要凭设计者的经验直观地选网状、层次模型的数据库设计,主要凭设计者的经验直观地选择和确定实体集、属性以及实体间的联系。哪些实体应该合并或分择和确定实体集、属性以及实体间的联系。哪些实体应该合并或分解以及如何合并和分解、每个实体中应该包括哪些属性为宜、属性解以及如何合并和分解、每个实体中应该包括哪些属性为宜、属性间的联系如何确定和处理等一系列问题的解决是没有什么固定规则间的联系如何确定和处理等一系列问题的解决是没有什么固定规则和理论可循的。和理论可循的。一个基本的问题:一个基本的问题:给出一组数据,如何构造一个合适的数据模式给出一组数据,如何构造一个合适的数据模式?例如:对关系模型,给了一组数据,应该构造几个关系?每个例如:对关系模型,给了一组数据,应该构造几个关系?每个关系由哪些属性组成?关系由哪些属性组成?这就是数据库逻辑设计问题这就是数据库逻辑设计问题1 问题的提出问题的提出现在学习的是第2页,共109页关系数据库的规范化理论关系数据库的规范化理论数据库逻辑设计的有力工具数据库逻辑设计的有力工具 要考虑的几个问题:要考虑的几个问题:为什么要规范化?为什么要规范化?怎样规范化?怎样规范化?规范化到什么程度后最合适?规范化到什么程度后最合适?这就是本章的主题这就是本章的主题 本节首先用一个例子来说明对关系模式为什么要规范化,本节首先用一个例子来说明对关系模式为什么要规范化,不经过规范化会产生什么样的结果。不经过规范化会产生什么样的结果。关系数据库的设计是借助近代数学工具而提出来的,关系数据库的设计是借助近代数学工具而提出来的,形成了一整形成了一整套定义、公理、定理及各种实用算法套定义、公理、定理及各种实用算法,产生了确定、评价关系数据,产生了确定、评价关系数据库模式的好方法。库模式的好方法。现在学习的是第3页,共109页例:假设车间考核职工完成生产定额的关系模式如下:例:假设车间考核职工完成生产定额的关系模式如下:W(工号,日期,姓名,工种,定额,超额,车间,车间主任)(工号,日期,姓名,工种,定额,超额,车间,车间主任)比如设某工号某年月超额完成定额的比如设某工号某年月超额完成定额的20%,其记录的内容为:,其记录的内容为:(1001,05年年11月,张三,车工,月,张三,车工,180,20%,金工车间,李四),金工车间,李四)该关系的主键为?该关系的主键为?工号工号 日期日期该关系模式存在以下该关系模式存在以下四个严重问题四个严重问题:对同一个人来说,其姓名、工种、车间、车间主任等多次重复对同一个人来说,其姓名、工种、车间、车间主任等多次重复 1001,05年年08月,月,张三,车工,张三,车工,180,20%,金工车间,李四金工车间,李四1001,05年年09月,月,张三,车工,张三,车工,180,15%,金工车间,李四金工车间,李四1001,05年年10月,月,张三,车工,张三,车工,180,18%,金工车间,李四金工车间,李四1001,05年年11月,月,张三,车工,张三,车工,180,20%,金工车间,李四金工车间,李四 (1)数据冗余大)数据冗余大现在学习的是第4页,共109页(2)插入异常)插入异常 若新调来一个职工并将他分配到某个车间,根据上述关系模若新调来一个职工并将他分配到某个车间,根据上述关系模式,在对该职工统计工作之前,他的信息是装不进数据库中的。式,在对该职工统计工作之前,他的信息是装不进数据库中的。因为他的日期值是空值,而日期是主键的属性之一,不允许为空。因为他的日期值是空值,而日期是主键的属性之一,不允许为空。(1005,NULL,天然,车工,天然,车工,NULL,NULL,金工车间,李四),金工车间,李四)应该存储的信息无法存储应该存储的信息无法存储(3)删除异常)删除异常不该删除的信息被删除不该删除的信息被删除 若想删除某人的所有定额完成情况,则该职工的其他信息若想删除某人的所有定额完成情况,则该职工的其他信息也都被删除。也都被删除。比如在比如在05年初要删除年初要删除04年以前的所有定额完成信息,则年以前的所有定额完成信息,则05年年由于种种原因未参加现实工作的职工的所有信息全部被删除。由于种种原因未参加现实工作的职工的所有信息全部被删除。现在学习的是第5页,共109页(4)修改困难,容易造成数据的不一致性)修改困难,容易造成数据的不一致性若某车间换了主任,则该车间所有职工的上述记录都要修改;若某车间换了主任,则该车间所有职工的上述记录都要修改;又如某人换了车间,则其工种、车间、车间主任等信息都要修改。又如某人换了车间,则其工种、车间、车间主任等信息都要修改。一方面,修改工作量大;一方面,修改工作量大;另一方面,可能漏改或该错,会造成数据的不一致性;另一方面,可能漏改或该错,会造成数据的不一致性;(也称更新异常)(也称更新异常)上例充分说明对关系模式若随意设计,其后果是严重的。上例充分说明对关系模式若随意设计,其后果是严重的。本章将要讨论产生上述问题的原因以及解决办法,即如何改造本章将要讨论产生上述问题的原因以及解决办法,即如何改造一个不好的关系模式。这就是规范化理论要解决的主要问题。一个不好的关系模式。这就是规范化理论要解决的主要问题。现在学习的是第6页,共109页 比如,对于上述关系模式,若分解成下面三个关系,则前面提到比如,对于上述关系模式,若分解成下面三个关系,则前面提到的几个问题将全部或部分地得到解决:的几个问题将全部或部分地得到解决:职工关系(工号,姓名,工种,车间号)职工关系(工号,姓名,工种,车间号)车间关系(车间号,车间名,车间主任)车间关系(车间号,车间名,车间主任)定额关系(工号,日期,定额,超额)定额关系(工号,日期,定额,超额)本节开头下一节本章开头现在学习的是第7页,共109页 数据模型中我们讨论了实体间的联系,同时提到实体内部属性数据模型中我们讨论了实体间的联系,同时提到实体内部属性间也有联系。事实上上一节中的问题都是间也有联系。事实上上一节中的问题都是由于属性间的联系引起的由于属性间的联系引起的。一、数据依赖一、数据依赖1、属性间的联系、属性间的联系:也是也是1:1,1:n,m:n三种三种 1:1联系联系:设:设A、B为某实体集中的两个属性的值集,如为某实体集中的两个属性的值集,如 果对于果对于A中的任一值,中的任一值,B中至多有一个值与之中至多有一个值与之 对应,且反之亦然。对应,且反之亦然。1:n联系联系:设:设A、B为某实体集中的两个属性的值集,如为某实体集中的两个属性的值集,如 果对于果对于A中的任一值,中的任一值,B中有多个值(包括中有多个值(包括0个)个)与之对应;而对于与之对应;而对于B中的任一值,中的任一值,A中至多有中至多有 一个值与之对应。一个值与之对应。2 数据依赖数据依赖如:车间如:车间-主任主任如:班级如:班级-学号学号现在学习的是第8页,共109页 m:n联系联系:设:设A、B为某实体集中的两个属性的值集,为某实体集中的两个属性的值集,如果对于如果对于A中的任一值,中的任一值,B中有多个值(包中有多个值(包 括括0个)与之对应,且反之亦然。个)与之对应,且反之亦然。如:学号如:学号-课程号课程号实体间的联系表示实体之间相互依赖又相互制约的关系;实体间的联系表示实体之间相互依赖又相互制约的关系;属性间的联系表示属性之间相互依赖又相互制约的关系。属性间的联系表示属性之间相互依赖又相互制约的关系。2、数据依赖、数据依赖 通过一个关系中属性间值的相互关联(主要体现于值的相等通过一个关系中属性间值的相互关联(主要体现于值的相等与否)体现出来的数据间的相互联系。与否)体现出来的数据间的相互联系。两类最重要的数据依赖两类最重要的数据依赖函数依赖函数依赖多值依赖多值依赖(是数据内在的性质,语义的体现)(是数据内在的性质,语义的体现)现在学习的是第9页,共109页二、关系的形式化定义二、关系的形式化定义1、关系的两个主要方面、关系的两个主要方面 语法:属性的描述语法:属性的描述 语义:数据依赖语义:数据依赖2、关系模式、关系模式:R 关系名关系名属性组属性组U上的一组数据依赖上的一组数据依赖3、关系:、关系:对关系模式对关系模式 R,当且仅当,当且仅当U上的一个关系上的一个关系r满足满足F时,称时,称r为关系模式为关系模式 R的一个关系。的一个关系。现在学习的是第10页,共109页三、函数依赖三、函数依赖 不严格地讲,函数依赖指的是一组属性值唯一决定另一组不严格地讲,函数依赖指的是一组属性值唯一决定另一组属性值的这种数据依赖。属性值的这种数据依赖。如学生关系中,当学号确定后,其姓名也就唯一确定了。如学生关系中,当学号确定后,其姓名也就唯一确定了。选课关系中,当学号和课程号确定后,其成绩也就唯一确定了。选课关系中,当学号和课程号确定后,其成绩也就唯一确定了。1、函数依赖、函数依赖(Functional Dependency,缩写,缩写FD):):设设 R(U)是属性集是属性集U上的关系模式,上的关系模式,X、Y是是U的子集。若对于的子集。若对于R中的任意关系中的任意关系 r,对于,对于 r中的任意两个元组中的任意两个元组u、v都有都有 uX=vX uY=vY成立,则称成立,则称X函数决定函数决定Y,或称,或称Y函数依赖于函数依赖于X,记作,记作XY。称。称X为为决决定因素定因素。现在学习的是第11页,共109页 说明:说明:函数依赖类似于变量间的单值函数关系(一个自变量只能对应函数依赖类似于变量间的单值函数关系(一个自变量只能对应一个一个 函数值),因此也称为函数值),因此也称为单值函数依赖;单值函数依赖;若若XY且且YX,则记作,则记作 XY;若若Y不函数依赖于不函数依赖于X,则记作,则记作 X例:对学生关系例:对学生关系 S(Sno,SName,SDept,SAge),有),有 Sno SName,Sno SDept,Sno SAge 对选课关系对选课关系 SC(Sno,Cno,Grade),),有(有(Sno,Cno)GradeYFD要求关系模式的任何一个实例都满足,而不是部分实要求关系模式的任何一个实例都满足,而不是部分实例满足。例满足。FD由具体问题的语义和人为强制约定共同决定。由具体问题的语义和人为强制约定共同决定。现在学习的是第12页,共109页3、函数依赖分类、函数依赖分类 (1)非平凡的函数依赖非平凡的函数依赖:XY,但,但Y X。(2)平凡的函数依赖平凡的函数依赖:XY,但,但Y X。(3)完全函数依赖:完全函数依赖:XY,且对任意的,且对任意的X X,都有,都有 记作记作 X Yf2、函数依赖与属性间的联系之关系、函数依赖与属性间的联系之关系 (1)若)若X、Y之间是之间是“1:1联系联系”,则存在函数依赖则存在函数依赖XY和和 YX,即即XY.(2)若若X、Y之间是之间是“m:1联系联系”,则存在函数依赖关系则存在函数依赖关系XY。(3)若若X、Y之间是之间是“m:n联系联系”,则则X、Y之间不存在函数依赖关系。之间不存在函数依赖关系。如在如在 SC(Sno,Cno,G)中,()中,(Sno,Cno)G,Y。XG,cnoG,因此(,因此(Sno,Cno)fG。但但sno现在学习的是第13页,共109页(4)部分部分函数依赖函数依赖:XY,但,但Y不完全函数依赖于不完全函数依赖于X,即存在即存在X X,有,有XY。记作记作 X Yp如在如在 S(sno,SN,SD,SA)中,因为)中,因为 snoSD,(sno,SN)SDp所以所以(5)传递函数依赖传递函数依赖:若:若XY,Y X,YZ,且且Z(X Y)=,则称,则称Z对对X是是传递函数依赖。传递函数依赖。例如,在学生关系模式例如,在学生关系模式 S(Sno,SName,SD,SAge)中,增加属性中,增加属性SL(系的位置),则(系的位置),则 SnoSD,SDSL,SD Sno,所以,所以 Sno SL。传递传递又如:又如:(Sno,Cno)Sdept是部分函数依赖是部分函数依赖注注:如果如果YX,即即XY,则,则Z直接依赖于直接依赖于X。现在学习的是第14页,共109页四、多值依赖四、多值依赖(教材(教材P178)1、例子、例子:设学校中一门课由多位教员讲授,他们使用相同:设学校中一门课由多位教员讲授,他们使用相同 的参考书,比如:的参考书,比如:“物理物理”,教员为汪洋、大海,参考书为,教员为汪洋、大海,参考书为普通物理学普通物理学、光学原理光学原理、物理习题集物理习题集;“数学数学”,教员为大海、白云,参考书为,教员为大海、白云,参考书为数学分析数学分析、微分方程微分方程、高等代数高等代数;“计算计算”,教员为蓝天、白云,参考书为,教员为蓝天、白云,参考书为数学分析数学分析、现在学习的是第15页,共109页用模式为用模式为 TEACH(C,T,B)的关系表示上述数据:)的关系表示上述数据:课程课程C 教师教师T 参考书参考书B物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析数学数学 白云白云 微分方程微分方程数学数学 白云白云 高等代数高等代数计算计算 白云白云 数学分析数学分析 该关系模式中,任该关系模式中,任何两个属性都不能函何两个属性都不能函数决定第三个属性。数决定第三个属性。该关系模式存在该关系模式存在冗余大、增删不方便冗余大、增删不方便等问题。等问题。没有函数依赖,需要另行分析现在学习的是第16页,共109页课程课程C 教师教师T 参考书参考书B物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析数学数学 白云白云 微分方程微分方程数学数学 白云白云 高等代数高等代数计算计算 白云白云 数学分析数学分析 在该关系模式中,对于在该关系模式中,对于一个(物理,普通物理学),一个(物理,普通物理学),有一组教师有一组教师汪洋,大海汪洋,大海,而,而对于另一个(物理,光学原理)对于另一个(物理,光学原理),对应的教师仍是,对应的教师仍是汪洋,大汪洋,大海海。因此,所对应的教员只。因此,所对应的教员只与课程的值有关而与参考书与课程的值有关而与参考书的值无关。的值无关。这是产生问题的原因吗?现在学习的是第17页,共109页2、多值依赖、多值依赖(MultiValued Dependency,缩写为,缩写为MVD)设设 R(U)是属性集是属性集U上的关系模式,上的关系模式,X、Y、Z是是U的子集,且的子集,且Z=U X Y,多值依赖,多值依赖XY成立当且仅当对成立当且仅当对R(U)的任一关系的任一关系r,任给,任给的一对(的一对(x,z)值有一组)值有一组Y的值,这组值仅仅取决于的值,这组值仅仅取决于x值而与值而与z值无关。值无关。称称X多值决定多值决定Y或或Y多值依赖于多值依赖于X。例如,在关系模式例如,在关系模式TEACH中中 有有 CT物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析计算计算 白云白云 数学分析数学分析 直观上看,若直观上看,若XY,则则X的一个值唯一决定一组的一个值唯一决定一组Y值,且这组值与值,且这组值与X、Y之外之外的属性值无关的属性值无关课程课程C 教师教师T 参考书参考书B现在学习的是第18页,共109页多值依赖的另一等价定义多值依赖的另一等价定义:多值依赖多值依赖XY成立当且仅当对成立当且仅当对R(U)的任一关系的任一关系r,若存在元,若存在元组组s、t使得使得sX=tX,则必存在元组,则必存在元组w、v r(w、v可以与可以与s、t相同)相同),使得,使得wX=vX=tX,而,而wY=tY,wZ=sZ,vY=sY,vZ=tZ。X Y ZtswvwYsYtYvYtZvZsZwZ左图直观显示,左图直观显示,x决定一组决定一组y值,值,这组值与这组值与z无关无关交换s、t的Y值所得新元组仍在r中现在学习的是第19页,共109页由前面例子,可看出由前面例子,可看出X、Y、Z之间有下述关系:之间有下述关系:物理物理汪洋汪洋 大海大海普通物理学普通物理学 光学原理光学原理 物理习题集物理习题集数学数学大海大海 白云白云数学分析数学分析 微分方程微分方程 高等代数高等代数完全二分图现在学习的是第20页,共109页 3、多值依赖的性质:、多值依赖的性质:(1)对称性:若)对称性:若 XY,Z=U X Y,则,则 XZ。(2)函数依赖可看成是多值依赖的特例:若)函数依赖可看成是多值依赖的特例:若 XY,则,则 XY(3)若)若U=XY(表示(表示X Y),则),则 XY显然成立。显然成立。(这种多值依赖无任何实际意义,故称为(这种多值依赖无任何实际意义,故称为 平凡的多值依赖平凡的多值依赖 )4、多值依赖与函数依赖的区别、多值依赖与函数依赖的区别 (1)函数依赖)函数依赖XY的有效性仅取决于的有效性仅取决于X、Y,与,与X、Y之外的属性之外的属性无关:无关:XY在在 (R)上成立)上成立 XY在在 (R)上成立)上成立XYW其中其中W满足满足 XY W U(U是关系模式是关系模式R的属性集)。的属性集)。X是否函数决定是否函数决定Y与这一部分属性无关与这一部分属性无关X Y Z R(U):):W现在学习的是第21页,共109页多值依赖多值依赖XY的有效性与的有效性与X、Y之外的属性范围有关:之外的属性范围有关:若若XY在在U上成立,则在上成立,则在W(XY W U)上也成立,)上也成立,但反之不然。但反之不然。可缩小范围但不一定能扩大范围可缩小范围但不一定能扩大范围 X是否多值决定是否多值决定Y与这一部分属性密切相关与这一部分属性密切相关X Y Z R(U):):W X YR(W):):WXY在在U上成立上成立XY在在W上也成立上也成立反之反之不成立不成立现在学习的是第22页,共109页 例如,在前面的例子中,若增加属性例如,在前面的例子中,若增加属性“教室教室”(R),则在),则在C,T,B,R上上CT不再成立。因为若汪洋在一号教室上物理课,不再成立。因为若汪洋在一号教室上物理课,大海在二号教室上物理课,关系中会有下述两个元组:大海在二号教室上物理课,关系中会有下述两个元组:物理物理 汪洋汪洋 普通物理学普通物理学 一号教室一号教室 物理物理 大海大海 普通物理学普通物理学 二号教室二号教室 但交换汪洋和大海但交换汪洋和大海后的两个元组不存在后的两个元组不存在XY在在U上也成立上也成立XY在在W上成立,上成立,不一定有不一定有CTWR(2)对函数依赖,若)对函数依赖,若XY,则对,则对Y的任意子集的任意子集Y,都有,都有XY 对多值依赖,没有上述性质。对多值依赖,没有上述性质。XY成立成立即即 不能保证不能保证 XY成立成立现在学习的是第23页,共109页五、关键字五、关键字从函数依赖的角度给关键字一个形式化的定义。从函数依赖的角度给关键字一个形式化的定义。1、候选关键字和主关键字、候选关键字和主关键字:设设K是是R中的属性或属性组合,中的属性或属性组合,若若 K U,则称,则称K为为U的的候选关键字(候选码)候选关键字(候选码);f若候选关键字多于一个,则选定其中的一个作为若候选关键字多于一个,则选定其中的一个作为主关键字(主键、主关键字(主键、主码)主码)。比以前的直观定义比以前的直观定义准确、严谨准确、严谨物理物理 汪洋汪洋 普通物理学普通物理学 一号教室一号教室 物理物理 大海大海 普通物理学普通物理学 二号教室二号教室 在在U上上C T,R,但但C T不成立,因不成立,因为为交换汪洋和大海后交换汪洋和大海后的两个元组不存在的两个元组不存在CTR例:例:现在学习的是第24页,共109页2、外键(外部码)、外键(外部码)若若R中的属性或属性组合中的属性或属性组合X不是不是R的关键字,但的关键字,但X是另一是另一个关系的关键字,则称个关系的关键字,则称X是是R的外键。的外键。主键与外键提供了一个表示关系间联系的手段主键与外键提供了一个表示关系间联系的手段例:借书证关系例:借书证关系 C(CARD,Sno,SName,SD)CARD、Sname都是候选关键字都是候选关键字 通常选择通常选择CARD#作为主键作为主键 K能唯一确定能唯一确定 一个元组一个元组 K中无多余属性中无多余属性3、全键(、全键(All-key,全码),全码)若若R的整个属性组是关键字,即的整个属性组是关键字,即U U,则称,则称U是全键。是全键。f现在学习的是第25页,共109页例:关系模式例:关系模式 R(P,W,A)演奏者演奏者 作品作品 听众听众(P,W,A)是)是R的全键。的全键。注意:注意:一般来讲,全键是没有什一般来讲,全键是没有什么实际意义的。主键包含的么实际意义的。主键包含的属性应尽可能少为好。属性应尽可能少为好。4、主属性和非主属性、主属性和非主属性 主属性主属性:包含在某个候选关键字中的属性包含在某个候选关键字中的属性 非主属性非主属性:不包含在任何侯选关键字中的属性:不包含在任何侯选关键字中的属性例:例:SC(sno,C#,G)中,)中,(sno,C#)是关键字,故)是关键字,故sno,C#是主属性是主属性 G不包含在任何关键字中不包含在任何关键字中,故,故G是非主属性。是非主属性。现在学习的是第26页,共109页本节讨论下述问题:本节讨论下述问题:如何根据关系模式属性间的数据依赖情况来判断它是否具有某些如何根据关系模式属性间的数据依赖情况来判断它是否具有某些不合适的性质?不合适的性质?如何将具有不合适性质的关系模式转换为更合适的形式?如何将具有不合适性质的关系模式转换为更合适的形式?一、规范化一、规范化1、范式、范式(Normal Form)按关系模式所具有的数据依赖性质对关系模式的分类。也就是按关系模式所具有的数据依赖性质对关系模式的分类。也就是关关系的规范化程度系的规范化程度。满足不同程度要求的为不同范式。满足不同程度要求的为不同范式。2、规范化、规范化 把一个低一级范式的关系模式通过模式分解转化为若干把一个低一级范式的关系模式通过模式分解转化为若干个高一级的关系模式的过程。个高一级的关系模式的过程。3 关系的范式关系的范式现在学习的是第27页,共109页二、第一范式(二、第一范式(1NF)1、定义、定义:关系的每个分量必须是不可再分的数据项关系的每个分量必须是不可再分的数据项。记作记作R 1NF。(。(每个属性必须是原子的)每个属性必须是原子的)2、说明、说明:属性不可再分(不允许出现嵌套的属性定义)属性不可再分(不允许出现嵌套的属性定义)属性下的值不可再分(不允许出现多个值)属性下的值不可再分(不允许出现多个值)这是对关系的最起码的要求,但远远不够。这是对关系的最起码的要求,但远远不够。(满足(满足1NF的关系称为的关系称为规范关系规范关系)例:职工情况表例:职工情况表职工职工 号号部门部门工工 资资基本工资基本工资奖金奖金例:借书表例:借书表借书人借书人 所借书名所借书名 借书日期借书日期张三张三B1B2B3D1D2D3李四李四B2B5D3这两个表都可变为规范关系现在学习的是第28页,共109页例:车间考核职工完成生产定额的关系模式:例:车间考核职工完成生产定额的关系模式:W(工号,日期,姓名,工种,定额,超额,车间,车间主任)(工号,日期,姓名,工种,定额,超额,车间,车间主任)主属性主属性非主属性非主属性 显然显然W 1NF,但第一节中我们已讨论知它有,但第一节中我们已讨论知它有 四个严重问题四个严重问题 工号工号函数决定非主属性姓名、工种、车间、车间主任。因此,函数决定非主属性姓名、工种、车间、车间主任。因此,关键字(工号,日期)部分函数决定这些属性。关键字(工号,日期)部分函数决定这些属性。这显然是产生冗余的一个主要原因。这显然是产生冗余的一个主要原因。3、仅属于、仅属于1NF的关系模式可能会产生的问题:的关系模式可能会产生的问题:四个严重问题四个严重问题数据冗余数据冗余插入异常插入异常删除异常删除异常修改困难修改困难因此仅是第一范式的关系模式完全不能满足需要。因此仅是第一范式的关系模式完全不能满足需要。分析出现问题的原因:分析出现问题的原因:三、第二范式(三、第二范式(2NF)1、定义、定义:若:若 R 1NF,且每一非主属性都完全函数依赖于,且每一非主属性都完全函数依赖于R的的 码,则称码,则称R是第二范式,记作是第二范式,记作R 2NF。现在学习的是第29页,共109页函数依赖:函数依赖:(Sno,Cno)Grade Sno MN(Sno,Cno)SDept(Sno,Cno)MN2、属于、属于1NF但不属于但不属于2NF的例子的例子:关系模式关系模式W(工号,日期,姓名,工种,定额,超额,车间,车间主任)(工号,日期,姓名,工种,定额,超额,车间,车间主任)关系模式关系模式S_D_C(Sno,SDept,MN,Cno,Grade)关键字:(关键字:(Sno,Cno)fpp传递传递Sno SD,SDept MN,GSDeptMNSnoCno关键字关键字完全完全部分部分 对关系模式对关系模式S_D_C,同样存在同样存在数据冗余大、插入异常、数据冗余大、插入异常、删除异常、修改困难删除异常、修改困难等问题。(产生问题的原因同等问题。(产生问题的原因同W)现在学习的是第30页,共109页3、解决办法:用投影分解、解决办法:用投影分解 消除非主属性对关键字的部分函数依赖转换为消除非主属性对关键字的部分函数依赖转换为2NFGSDMNSnoCno关键字关键字部分部分GSnoCnoSDMNSnoS_D SC 2NF 2NF分解之后,与S_D_C相比,SC和S_D性质如何?现在学习的是第31页,共109页分解之后,与分解之后,与S_D_C相比:相比:数据冗余减小数据冗余减小 (原来伴随学生所学的每门课都要存储一遍(原来伴随学生所学的每门课都要存储一遍SD、MN的值);的值);没选课的学生信息可以存储;没选课的学生信息可以存储;删除选课记录不会误删学生其他信息;删除选课记录不会误删学生其他信息;冗余数据的减少使得修改变得容易些。冗余数据的减少使得修改变得容易些。S_D还有问题吗?1NF的上述四个问题得到了部分解决的上述四个问题得到了部分解决 分解前分解前 S_D_C(Sno,SD,MN,Cno,G)分解后分解后 SC(Sno,Cno,G)S_D(Sno,SD,MN)现在学习的是第32页,共109页4、仅属于、仅属于2NF的关系模式可能会产生的问题的关系模式可能会产生的问题(4)修改困难)修改困难(2)插入异常)插入异常(3)删除异常)删除异常(1)数据冗余)数据冗余 S_D(Sno,SD,MN)数据冗余仍然较大:数据冗余仍然较大:MN的值重复严重的值重复严重若一个系刚成立但尚无学生,该系名称等无法存储若一个系刚成立但尚无学生,该系名称等无法存储若一个系的学生全部毕业,删除全部学生数据的同时把该系若一个系的学生全部毕业,删除全部学生数据的同时把该系的数据(如系主任等)也都删除了的数据(如系主任等)也都删除了数据冗余大势必造成修改困难数据冗余大势必造成修改困难(这可以说是个必然联系)(这可以说是个必然联系)可能的原因可能的原因:存在传递函数依赖存在传递函数依赖 SnoMN现在学习的是第33页,共109页1.定义定义3NF:若若 R 2NF,并且,并且R中不存在任何非主属性传递函数依中不存在任何非主属性传递函数依 赖于赖于R的码,则称的码,则称R 3NF。2.若若R中中U是全键,则一定有是全键,则一定有 R 3NF。3.若若R为二元关系,则一定有为二元关系,则一定有 R 3NF。4、属于、属于2NF但不属于但不属于3NF的例子的例子:关系模式关系模式S_D(Sno,SD,MN)5、解决办法:用投影分解、解决办法:用投影分解 消除非主属性对关键字的传递函数依赖,转换为消除非主属性对关键字的传递函数依赖,转换为3NFSDMNSno传递传递如将如将S_D分解为分解为:S_D(Sno,SD)D_M(SD,MN)SDMNSnoSD现在学习的是第34页,共109页 由上可知,部分函数依赖和传递函数依赖是产生异常的两个重要原由上可知,部分函数依赖和传递函数依赖是产生异常的两个重要原因。因。3NF中不存在非主属性对于关键字的部分函数依赖和传递函中不存在非主属性对于关键字的部分函数依赖和传递函数依赖,因此具有较好的性质。数依赖,因此具有较好的性质。通常设计关系模式时至少应该是属于通常设计关系模式时至少应该是属于3NF的的。虽说虽说3NF是广泛使用的一种关系范式,但是广泛使用的一种关系范式,但3NF仍然存在某些仍然存在某些“异常异常”。例:关系模式例:关系模式 R(S,T,J)学生学生教师教师课程课程每个教师只教一门课,每个教师只教一门课,每门课有若干教师,学每门课有若干教师,学生选定某门课就对应固生选定某门课就对应固定的教师。定的教师。6、仅属于、仅属于3NF的关系模式可能会产生的问题的关系模式可能会产生的问题现在学习的是第35页,共109页例:关系模式例:关系模式 R(S,T,J)J 重复,产生冗余,重复,产生冗余,带来可能的不一致性等问题带来可能的不一致性等问题函数依赖:(函数依赖:(S,J)T;(S,T)J;T J候选关键字:(候选关键字:(S,J);();(S,T)R中无非主属性,显然中无非主属性,显然R 3NF。S T J 可能的原因:可能的原因:R中存在部分函数依赖中存在部分函数依赖 (S,T)J。(S,T)因为这是关键字因为这是关键字学生学生1 教师教师1 课程课程1 学生学生K 教师教师1 课程课程1学生学生L 教师教师2 课程课程1 学生学生M 教师教师2 课程课程1学生学生1 教师教师3 课程课程2 学生学生K 教师教师3 课程课程2 现在学习的是第36页,共109页 由例子可以看出,虽然由例子可以看出,虽然3NF消除了一大类消除了一大类数据冗余问题(冗余也是产生异常操作的直接数据冗余问题(冗余也是产生异常操作的直接原因),但这种数据冗余是非主属性下的冗余。原因),但这种数据冗余是非主属性下的冗余。3NF并没有涉及主属性下的数据冗余问题并没有涉及主属性下的数据冗余问题。现在学习的是第37页,共109页五、五、Boyce-Codd范式(范式(BCNF)1、定义、定义:若:若R 1NF,且对任何非平凡的函数依赖,且对任何非平凡的函数依赖XY,X必包含码。则必包含码。则R BCNF。即每一决定因素都包含码即每一决定因素都包含码2、另一种等价的定义、另一种等价的定义:若若 R 1NF,并且,并且R中不存中不存 在在任何属性任何属性传递、部分函数依赖于传递、部分函数依赖于R的某个码,则称的某个码,则称R BCNF。证明证明(1)定义定义等价定义等价定义反证法:假设反证法:假设R中存在属性中存在属性Z传递函数依赖于码传递函数依赖于码X,则必存在属性组则必存在属性组Y,使得,使得即要证:即要证:若对任何非平凡的函数依赖若对任何非平凡的函数依赖XY,X必包含码,必包含码,则则R中不存在任何属性传递函数依赖于中不存在任何属性传递函数依赖于R的某个码。的某个码。X Y,Y X,Y Z。显然显然Y不是码,也不包含码,矛盾。不是码,也不包含码,矛盾。现在学习的是第38页,共109页(2)等价定义等价定义定义定义仍用反证法:假设存在非平凡函数依赖仍用反证法:假设存在非平凡函数依赖XY,X不包含码,不包含码,设设X是一关键字,则是一关键字,则X X,X X,因此,因此 X Y,矛盾。矛盾。传递传递证毕证毕3、说明、说明若若 R 1NF,并且,并且R中不存在中不存在任何任何非主属性部分、非主属性部分、传递函数依赖传递函数依赖于于R的某个码,则称的某个码,则称 R 3NF。若若R BCNF,则,则R 3NF。(也称(也称BCNF为为修正的修正的3NF)BCNF又消除了主属性对码的部分函数依赖和传递函数依赖。又消除了主属性对码的部分函数依赖和传递函数依赖。从完全函数依赖的观点看,属于从完全函数依赖的观点看,属于BCNF的关系模式满足:的关系模式满足:所有非主属性对每一个码都是完全函数依赖;所有非主属性对每一个码都是完全函数依赖;所有主属性对每一个不包含它的码也是完全函数依赖;所有主属性对每一个不包含它的码也是完全函数依赖;没有任何属性完全函数依赖不是码的任何一组属性。没有任何属性完全函数依赖不是码的任何一组属性。现在学习的是第39页,共109页 在函数依赖的范畴内在函数依赖的范畴内,BCNF已做到彻底的分离,消除了插已做到彻底的分离,消除了插 入异常、删除异常(入异常、删除异常(3NF的的“不彻底性不彻底性”在于可能存在主在于可能存在主 属性对关键字的部分函数依赖和传递函数依赖)。属性对关键字的部分函数依赖和传递函数依赖)。4、属于、属于3NF但不属于但不属于BCNF的例子的例子:例例1.关系模式关系模式 R(S,T,J)码:(码:(S,T);();(S,J)函数依赖:(函数依赖:(S,J)T;(;(S,T)J;T J因为因为J部分函数依赖于码(部分函数依赖于码(S,T),或),或T是决定因素,但是决定因素,但T不包含码。不包含码。故故R不属于不属于BCNF。5、解决办法:用投影分解、解决办法:用投影分解 消除主属性对码的部分或传递函数依赖,转换为消除主属性对码的部分或传递函数依赖,转换为BCNF。将将R(S,T,J)分解为:)分解为:R1(S,T)R2(T,J)现在学习的是第40页,共109页例例2:在关系模式:在关系模式D(C,S,Z)中,)中,C表示城市,表示城市,S表示街道,表示街道,Z表表示邮政编码。示邮政编码。函数依赖:城市和街道决定邮编,邮编决定城市函数依赖:城市和街道决定邮编,邮编决定城市:(C,S)Z,ZC码:码:(C,S)符合符合3NF,但不符合,但不符合BCNF。“邮编决定城市邮编决定城市”信息冗余。信息冗余。解决方法:把模式分解为两个关系。解决方法:把模式分解为两个关系。D1(C,S)BCNFD2(Z,C)BCNFv但是这个分解会丢掉函数依赖:但是这个分解会丢掉函数依赖:(C,S)Z现在学习的是第41页,共109页6、仅属于、仅属于BCNF的关系模式可能会产生的问题的关系模式可能会产生的问题以前面讨论过的关系模式以前面讨论过的关系模式 TEACH(C,T,B)为例)为例课程课程 教员教员 参考书参考书物理物理 汪洋汪洋 普通物理学普通物理学物理物理 汪洋汪洋 光学原理光学原理物理物理 汪洋汪洋 物理习题集物理习题集物理物理 大海大海 普通物理学普通物理学物理物理 大海大海 光学原理光学原理物理物理 大海大海 物理习题集物理习题集数学数学 大海大海 数学分析数学分析数学数学 大海大海 微分方程微分方程数学数学 大海大海 高等代数高等代数数学数学 白云白云 数学分析数学分析数学数学 白云白云 微分方程微分方程数学数学