关系数据库理论-第五章关系数据库理论.ppt
《关系数据库理论-第五章关系数据库理论.ppt》由会员分享,可在线阅读,更多相关《关系数据库理论-第五章关系数据库理论.ppt(137页珍藏版)》请在三一办公上搜索。
1、第五章 关系数据库理论(6学时),主讲:曹志英 副教授大连海事大学计算机科学与技术学院研究方向:软件工程与理论数据库与信息系统电话:84729625Email:,数据库原理和语言,学习要点,(1)函数依赖及Armstrong公理系统;(2)为什么要对模式进行分解,如何分解?(3)如何判断关系模式达到几范式?(4)如何求属性的闭包及如何求最小函数依赖集?,通过本章的学习,应该重点掌握:,章节目录,5.1 问题的提出5.2 规范化(Normalization)5.3 数据依赖的公理系统,5.1 问题的提出,5.1.1 规范化问题的提出在现实世界中,进行数据处理,关键是:针对一个具体问题应该如何构造
2、一个适合于它的数据模式,即构造合理的数据逻辑结构这就需要理论指导。采用关系模型讨论这个问题的理由:由于关系模型有严格数学理论基础并且可以向别的数据模型转换从而,形成了数据库逻辑设计的一个有力工具关系数据库的规范化理论。,规范化理论虽然是以关系模型为背景,但是它对于一般的数据库设计同样具有理论上的意义。关系模式:R(U,D,dom,F)一个五元组 其中:影响关系模式设计合理性的主要因素为U和F,即:属性属性间依赖关系,所以,可以简化为R(U,F);,数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。是数据内在的性质,是一种语义体现;是现实世界中属性间相互联系的抽象;表示数据间
3、存在的一种限制或制约关系。根据人们对事物的理解判定依赖关系。数据依赖有多种类型,最重要的是函数依赖(Functional Dependency,简称FD)多值依赖(Multivalued Dependency,简称MVD)关系数据库的规范化理论主要包括三个方面的内容:函数依赖范式(Normal Form)模式设计其中,函数依赖起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标准。,5.1.2 关系模式的存储异常问题,数据库的逻辑设计为什么要遵循一定的规范化理论?什么是好的关系模式?某些不好的关系模式可能导致哪些问题?,实例:(P171)现在要建立一个数据库,来描述学生(Studen
4、t)的一些情况。,面临的对象有:学生(用学号SNo描述)系(用系名SDept描述)系负责人(用其姓名MN描述)课程(用课程名CName描述)成绩(G),如果用一个关系模式来描述,则得到:U=SNo,SName,SDept,MN,CName,G,由现实世界可得知:一个系有若干学生,但一个学生只属于一个系。一个系只有一名(正职)负责人。一个学生可以选修多门课程,每门课程有若干学生选修。每个学生学习每一门课程都有一个成绩。于是,得到属性组U上的一组函数依赖:F=SNOSdept,SDept MN,(SNO,CName)G,图5.1 Student数据库的函数依赖图示,若只考虑函数依赖这一种数据依赖,
5、就得到:一个描述学校的数据库模式S,它由一个单一的关系模式构成。,这样的关系模式,有如下三个毛病:(1)插入异常:如果一个系刚成立,尚无学生,或者虽然有学生,但尚未安排课程,那么就无法把这个系及其负责人的信息存入数据库。(2)删除异常:如果某个系的学生全部毕业了,在删除该系学生选修课的同时,把这个系及其负责人的信息也丢了。(3)冗余太大:每一个系负责人的姓名要与该系每一个学生的每门功课的成绩出现的次数一样多,这样,一方面浪费存储,另一方面系统要付出很大的代价来维护数据库的完整性,比如某系负责人更换后,就必须逐一修改每一个元组。,为什么产生异常?模式中的函数依赖存在不好的性质;或者说,数据模式组
6、织不合理。,效果:这三个模式都不会发生异常冗余也得到控制。是一个好的关系数据库模式,改进:把这个单一的模式改造,分成3个关系模式。S(SNo,SDept,SNoSDept)SG(SNo,CName,G,(SNo,CName)G)D(SDept,MN,SDeptMN),结论:一个好的关系模式应该具备以下四个条件:尽可能少的数据冗余。没有插入异常。没有删除异常。没有更新异常。注意:一个好的关系模式并不是在任何情况下都是最优的,要从实际设计的目标出发进行设计。,5.2 规范化(Normalization),作用:规范化理论使数据库设计方法走向完备。起源:1971年提出。,定义:如何按照一定的规范设计
7、关系模式,将结构复杂的关系分解成结构简单的关系,从而把不好的关系数据库模式转变为好的关系数据库模式,这就是关系的规范化。数据库模式的好坏和关系中各属性间的依赖关系有关,因此,我们先讨论属性间的依赖关系,然后再讨论关系规范化理论。,5.2.1 函数依赖5.2.2 码:用函数依赖的概念来定义码。5.2.3 范式(Normal Form)NF5.2.4 多值依赖5.2.5 4NF,5.2.1 函数依赖,定义1:设R(U)是属性集U上的关系模式。X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组t,s在X上的属性值相等,即tX=sX;而在Y上的属性值不等,即tYsY;则称
8、X函数确定Y或Y函数依赖于X,记作:XY。,或者换个通俗的话对于X的一个值,只有唯一的Y值与之对应,则称 XY。,x,f(x)=y,函数依赖是一个语义范畴的概念,如:姓名 年龄,姓名 出生日期,姓名 籍贯只能在姓名唯一的假设前提下成立。当我们确定关系模式R中的某个函数依赖时,是指R的所有可能关系r都必须满足这个函数依赖;反之,如果R中只要有一个关系r不满足这个函数依赖,我们就认为R不存在这个函数依赖。函数依赖只能从属性含义上加以说明,而不能在数学上加以证明。只有数据库设计者才能决定是否存在某种函数依赖。这就使得数据库系统可以根据设计者的意图来维护数据库的完整性。,例如:关系模式R12=学号(S
9、),课程号(CB),课程名(CN),学期数(T),学分(CG),成绩(G)中的函数依赖可表示为:CBT;(S,CB)G;CBCN;CBCG;(S,CB,CN)G等等。几个记号和术语:,X Y,但X Y,则称X Y是平凡的函数依赖。若X Y,则X叫做决定因素(Determinant)。若X Y,Y X,则记作XY。,定义2:完全依赖和部分依赖,例如:关系模式R12=S,CB,CN,T,CG,G中,CBT说明T完全函数依赖于CB;又因为(S,CB)G,(S,CB,CN)G,则G部分依赖于(S,CB,CN)。在实际的一个关系表中:如果主码只有一个属性,则基本上是完全函数依赖。如果主码由若干个属性组成
10、,则可能存在部分依赖,也可能是完全依赖。,若XY,但Y不完全函数依赖于X(只依赖于X的一部分),则称Y对X部分函数依赖,记作:,实例1,存在以下函数依赖:l SNo SName(若无重名)lSNo SDept l SNo SAge,实例2,在这里,单个属性不能作为决定因素,但属性的组合可以作为决定因素,即:,零件编号,零件名,(零件编号,工程编号,规格型号),数量,(工程编号,零件编号),零件名称,规格型号,(零件编号,工程编号),实例3,PJTP(*工程编号,工程名称,*零件编号,零件名称,规格型号,数量),工程名称,工程编号,工程名称,(工程编号,零件编号),数量,定义3:传递依赖,例如:
11、关系模式R=A,B,C,D,其上的函数依赖集F=AB,BC,AC,ABD,则AC为传递函数依赖。,5.2.2 码:用函数依赖的概念来定义码。,定义4:设K为R(U,F)中属性或属性组合。,主属性(Prime attribute)非主属性(Non Prime attribute)或非码属性(Non-Key-attribute)全码(all key):关系模式中,整个属性组是码。定义5:外码关系模式R 中属性或属性组X并非R 的码,但X是另一个关系模式的码,则X是R的外部码(Foreign Key),也称外码。,若候选码为多个,则选定其中的一个为主码(Primary Key)。,5.2.3 范式(
12、Normal Form)NF,必要性:关系数据库中关系要满足一定要求;满足不同层要求的关系,为不同范式。范式的提出:19711972年,系统地提出1NF,2NF,3NF。1974年,Codd和Boyce又共同提出了一个新范式BCNF。1976年,Fagin提出4NF。后来又提出了5NF。范式表示关系的某一级别,现在把范式理解为符合某一种级别的关系模式的集合,则R为第几范式,可写成R xNF。,各种范式之间有如下关系,一个高一级的范式,必须属于低一级范式。一个低一级范式的关系模式,通过模式分解,可以转化为若干个高一级范式的关系模式集合。这种过程就叫规范化。规范化的基本思想是消除关系模式中的数据冗
13、余,消除数据依赖中的不合适的部分,解决数据插入、删除异常。,5NF 4NF BCNF 3NF 2NF 1NF,一、1NF 第一范式,关系模式中每一个分量,必须是不可分的数据项,满足了这个条件的关系模式,就属于第一范式(1NF),即:关系模式中不存在复合数据项;是平坦的数据结构。例,职工档案(非规范的),人们在处理这个问题的时候,不规范的作法是-采用:(1)横向冗余法(例如,表A)(2)纵向冗余法(例如,表B),化为1NF,将上述关系拆开成两个表,即把组合项拿出来单独形成一个表:,二、2NF 第二范式,从2NF开始,判断非主属性与主属性间关系定义6:若R 1NF,且每一个非码属性完全函数依赖于码
14、,则R 2NF。书中例子:P175,非2NF。2NF定义:如果一个规范化的数据结构,它所有的非关键字数据元素都完全函数依赖于整个关键字,我们称它是第二规范化形式(Second Normal Form)的数据结构,简称第二范式(2NF)。推论1:一个规范化的数据结构,如果其关键字仅由一个数据元素组成或其全体属性均为主属性,那么它必然属于2NF。推论2:如果关键字是由若干个属性组成,要判别所有的非关键字与关键字的函数依赖关系,如果存在部分依赖关系,则不属于2NF。,例如:描述一个在校大学生的学习情况涉及以下一些属性:学号(Sno)、姓名(Sname)、性别(Sex)、系别(Sdept)、学籍类型(
15、SL)、专业(Spec)、班级(SC)、课程号(Cno)、课程名(Cname)、学期数(T)、学分(Credit)和成绩(G),该关系模式R(U,F)属性集合表示为U=Sno,Sname,Sex,ID,Sdept,SL,Spec,SC,Cno,Cname,T,Credit,G。函数依赖集合F=SnoSname,SnoSex,SnoSdept,SnoSL,SnoSpec,SnoSC,CnoCname,CnoT,CnoCredit,(Sno,Cno)G 显然,该关系模式的码为(Sno,Cno)-可丛常识判断,也可从F中求解侯选码。R1NF-所有的属性都是最小的不可分的数据项 R2NF-存在非码属性
16、对码的部分函数依赖关系,R中存在以下几个问题:(1)冗余。(2)插入异常。假如新增一门课程,其Cno=1011,Cname=多媒体技术,学分=3,但因此课程还没有学生选修,则这样的元组不能插入R的关系中。(3)删除异常。假如有一门课(如课程号为C5)目前只有一位学生选修了,但这位学生又不选了,那么 C5这个数据项就要删除。由于C5是主属性,删除了C5,整个元组就不存在了,也必须删除,但这样也把不应该删除的信息删除了,造成删除异常。,实例一,将R化为2NF-消除部分函数依赖关系。R可分解为以下三个表:R1(U1,F1)-码为Sno 属于2NFU1=Sno,Sname,Sex,ID,Sdept,S
17、L,Spec,SCF1=SnoSname,SnoSex,SnoSdept,SnoSL,SnoSpec,SnoSCR2(U2,F2)-码为Cno 属于2NFU2=Cno,Cname,T,CreditF2=CnoCname,CnoT,CnoCreditR3(U3,F3)-码为(Sno,Cno)属于2NFU3=Sno,Cno,GF3=(Sno,Cno)G对属性集进行分解,对函数依赖集进行分解,实例一,实例二:配件-供应商-库存关系,语义描述:“配件编号”代表每种配件(名称和规格);每种配件的“库存量”、“价格”、“库存占用资金”还和“供应商”有关(即:同一配件,可由不同的供应商供应,其价格、库存量及
18、库存占用资金因供应商不同而不同)。同一供应商可供应多种配件。这个关系达到1NF,因其所有的属性都是不可分的。根据语义描述,非关键字与关键字有如下的函数依赖关系。“配件编号+供应商名称”是关键字。,函数依赖关系:配件编号配件名称 配件编号规格 供应商名称供应商地址 配件编号+供应商名称价格 配件编号+供应商名称库存量,配件编号+供应商名称库存占用资金 因为“配件名称”、“规格”和“供应商地址”并不完全函数依赖于整个关键字。存在非主属性部分函数依赖于关键字,所以它不属于2NF。,*配件编号 配件名称 规格*供应商名称 供应商地址 价格(厂价)库存量 库存占用资金,对这样一个数据结构,可能会有如下毛
19、病。,插入异常 如果汽车配件公司准备引进一种新的汽车配件,知道它的名称和规格,给它规定一个配件编号,想把这种新配件插入到“配件供应商库存”数据存贮中去,但是配件公司还没有决定由哪一家供应商提供这种新配件,也就是还没有该配件的供应商数据和库存数据;就无法插入这项新配件的数据(关键字不能为空)。,修改异常 如果某家供应商的地址发生了变化,需要修改这家供应商的地址;但是有上百种或上千种配件是由这家供应商提供的,那么要逐个地修改“供应商地址”,与这家供应商有关的元组一条也不能遗漏,这就为修改带来了麻烦。,删除异常 如果汽车配件公司和某家供应商断绝了业务关系,就没有必要再保存这家供应商的数据,而这家供应
20、商恰恰是某种(或某几种)配件的唯一供应商,当把这家供应商的数据删除时,整个元组也就不存在了,那么这种(或这几种)配件的数据也都丢失了,把不应该删除的数据也删除了。,解决办法,属于第一范式的数据结构还是一个不好的数据结构,需要进一步把它转换成第二规范化形式,办法是:把1NF关系模式通过投影分解转换成2NF关系模式的集合,即对函数依赖关系按决定因素分组,决定因素相同的分为一组,构成一个关系模式。分解时遵循的基本原则就是“一事一地”,让一个关系只描述一个实体或者实体间的联系。因此,“配件-供应商-库存”可以分解成三个数据结构,它们都是属于2NF的数据结构。,三、3NF 第三范式,3NF定义:如果一个
21、属于第二范式的数据结构,它所有的非关键字数据元素都是彼此函数独立的,换句话说,在所有的非关键字数据元素之间,不存在函数依赖关系,那么我们称它是第三规范化形式(Third Normal Form)的数据结构,简称第三范式(3NF)。,即关系模式中不存在部分依赖和传递依赖关系。,例1,3NF,“配件库存”已经是第二范式的数据结构,但是存在着传递依赖关系。因为“库存占用资金”函数依赖于“库存量”和“价格”,这三个数据元素都是属于非关键字域,而“库存量”和“价格”都完全函数依赖于整个关键字;因此“库存占用资金”传递依赖于关键字。这说明在非关键字域中,存在着冗余的数据元素,因为已知“库存量”和“价格”,
22、就必然能够计算出“库存占用资金”,它作为一个数据元素存在,为修改“配件库存”带来不方便,每当修改,“库存量”的时候,就必须修改“库存占用资金”,显然是不合理的。,例2,有若干项工程,每项工程都有规定的完工日期,每项工程要由若干人完成,每一个职工只能承担一项工程,每一个职工有固定的工资。那么,可以设计一个称为“分派职工任务”的数据存贮的数据结构。,分解成3NF,*,如果又增加一个新的工程项目,规定了它的代号和完成日期,但是还没有指派由哪些职工承担,这时就无法插入这项新工程的数据。即使是第二范式,“分派职工任务”的数据结构也仍然存在上述插入、删除、修改等异常问题,产生的原因就是存在着传递依赖关系。
23、解决的办法是:Q去掉传递依赖关系;Q 必要时,分解成若干个第三规范化形式的数据结构。对于“分派职工任务”数据结构,可以把它分解成两个第三范式的数据结构,“职工工程”和“工程”。,证明若R3NF,则R必属于2NF,R2NF(用反证法),这与题设R 3NF矛盾,证明:假设R3NF,R2NF则 存在属性A,候选码X,A,X R,使得,这样在R中就有非主属性A,不满足第三范式的定义,所以 R3NF,并且:,四、BCNF(Boyce Codd Normal Form),由Boyce 和Codd 1974年共同提出,对3NF进行扩充、修正。,即:关系R中所有的决定因素都是候选码。由BCNF的定义可以得出结
24、论,一个满足BCNF的关系模式有:所有的非主属性,对每一个码,都是完全函数依赖。所有的主属性对每一个不包含它的码,也是完全函数依赖。没有任何属性完全函数依赖于非码的任何一组属性。,实例,非BCNF范式:关系模式STJ(S,T,J)中,S是学生、T是老师、J是课程;每个老师只教一门课;每门课都有若干老师;某一学生选定一门课就对应一个固定的老师。由语义可以得到如下的函数依赖:(S,J)T(S,T)J T J函数依赖图示(见右图5.6),T,J,图5.6 STJ中的函数依赖,实例分析,这个关系的候选码:(S,J)和(S,T)STJ是3NF,因为没有任何非主属性对码传递依赖或部分依赖。但是,存在主属性
25、J 对候选键(S,T)的部分依赖,或者说 T是决定因素,而T不是码,STJ不是BCNF。经BCNF分解后,得到:ST(S,T)TJ(T,J),对BCNF的分析,3NF和BCNF,是在函数依赖的条件下,对模式分解所能达到的分离程度的“测度”。BCNF实现了彻底的分离,已消除了插入、删除异常。3NF的分离的“不彻底性”,表现在可能存在主属性对码的部分依赖和传递依赖。,5.2.4 多值依赖,实例:教员,课程,参考书(P178-P179)学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。我们可以用一个非规范化的关系来表示教员T,课程C和参
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 理论 第五
链接地址:https://www.31ppt.com/p-5928574.html