《关系数据库理论-第五章关系数据库理论.ppt》由会员分享,可在线阅读,更多相关《关系数据库理论-第五章关系数据库理论.ppt(137页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第五章第五章 关系数据库理论关系数据库理论(6 6学时)学时)学时)学时)主讲:曹志英主讲:曹志英副教授副教授大连海事大学计算机科学与技术学院大连海事大学计算机科学与技术学院研究方向:软件工程与理论研究方向:软件工程与理论数据库与信息系统数据库与信息系统电话:电话:84729625Email:数据库原理和语言数据库原理和语言数据库原理和语言数据库原理和语言学习要点学习要点(1 1)函数依赖及)函数依赖及ArmstrongArmstrong公理系统;公理系统;(2 2)为什么要对模式进行分解,如何分解?)为什么要对模式进行分解,如何分解?(3 3)如何判断关系模式达到几范式?)如何判断关系模式达
2、到几范式?(4 4)如如何何求求属属性性的的闭闭包包及及如如何何求求最最小小函函数数依依赖赖集集?通过本章的学习,应该重点掌握:通过本章的学习,应该重点掌握:章节目录章节目录5.1问题的提出问题的提出5.2规范化(规范化(Normalization)5.3数据依赖的公理系统数据依赖的公理系统5.1 问题的提出问题的提出 5.1.1规范化规范化问题的提出问题的提出l在现实世界中,进行在现实世界中,进行数据处理数据处理,关键关键是:是:针针对对一一个个具具体体问问题题应应该该如如何何构构造造一一个个适适合合于于它它的的数数据模式据模式,即构造合理的即构造合理的数据逻辑结构数据逻辑结构这就这就需要理
3、论指导需要理论指导。l采用关系模型采用关系模型讨论这个问题的讨论这个问题的理由理由:由于关系模型有严格数学理论基础由于关系模型有严格数学理论基础并且可以向别的数据模型转换并且可以向别的数据模型转换l从而,形成了从而,形成了数据库逻辑设计数据库逻辑设计的一个的一个有力工具有力工具关系数关系数据库的据库的规范化理论规范化理论。l规范化理论规范化理论虽然是以关系模型为背景,但是它虽然是以关系模型为背景,但是它对于对于一般的数据库设计一般的数据库设计同样具有理论上的意义。同样具有理论上的意义。l关系模式关系模式:R R(U U,D D,domdom,F F)一个五元组一个五元组 l其中其中:影影响响关
4、关系系模模式式设设计计合合理理性性的的主主要要因因素素为为U和和F,即:,即:l属性属性l属性间依赖关系,属性间依赖关系,所以,可以简化为所以,可以简化为R(U,F);l数据依赖数据依赖是是通通过过一一个个关关系系中中属属性性间间值值的的相相等等与与否否体体现现出出来来的的数数据据间的相互关系。间的相互关系。是数据是数据内在内在的的性质性质,是一种是一种语义体现语义体现;是是现现实实世世界界中中属属性性间间相相互互联联系系的的抽抽象象;表表示示数数据据间间存存在在的一种的一种限制或制约限制或制约关系。关系。根据根据人们人们对事物对事物的理解的理解判定依赖关系。判定依赖关系。l数据依赖数据依赖有
5、多种有多种类型类型,最重要最重要的是的是函数依赖函数依赖(FunctionalDependency,简称简称FD)多值依赖多值依赖(MultivaluedDependency,简称简称MVD)l关系数据库的规范化理论主要包括三个方面的内容:关系数据库的规范化理论主要包括三个方面的内容:函数依赖函数依赖范式(范式(Normal FormNormal Form)模式设计模式设计l其其中中,函函数数依依赖赖起起着着核核心心的的作作用用,是是模模式式分分解解和和模模式式设设计计的的基础,范式是模式分解的标准。基础,范式是模式分解的标准。5.1.2 5.1.2 关系模式的存储异常问题关系模式的存储异常问
6、题数据库的逻辑设计为什么要遵循一定的规范化理论数据库的逻辑设计为什么要遵循一定的规范化理论?什么是好的关系模式?什么是好的关系模式?某些不好的关系模式可能导致哪些问题?某些不好的关系模式可能导致哪些问题?l实例实例:(P171)现在要建立现在要建立一个一个数据库,来描述数据库,来描述学生学生(Student)的一些情况。的一些情况。l面临的面临的对象对象有:有:学生学生(用学号(用学号SNo描述)描述)系系(用系名(用系名SDept描述)描述)系负责人系负责人(用其姓名(用其姓名MN描述)描述)课程课程(用课程名(用课程名CName描述)描述)成绩成绩(G)StudentGCNameMNSDe
7、ptSNol如果用一个如果用一个关系模式关系模式来来描述描述,则得到:,则得到:U=SNo,SName,SDept,MN,CName,Gl由由现实世界现实世界可得知:可得知:一个系有若干学生,但一个学生只属于一个系。一个系有若干学生,但一个学生只属于一个系。一个系只有一名(正职)负责人。一个系只有一名(正职)负责人。一一个个学学生生可可以以选选修修多多门门课课程程,每每门门课课程程有有若若干干学学生生选修。选修。每个学生学习每一门课程都有一个成绩。每个学生学习每一门课程都有一个成绩。l于是,得到属性组于是,得到属性组U上的一组上的一组函数依赖函数依赖:F=SNOSdept ,SDept MN,
8、(SNO,CName)GSNOCNameSDeptGMN图图5.1Student数据库的函数依赖图示数据库的函数依赖图示l若若只考虑函数依赖只考虑函数依赖这一种数据依赖,就得到:这一种数据依赖,就得到:一个描述学校的一个描述学校的数据库模式数据库模式S,它由一个它由一个单一单一的关系模式构成。的关系模式构成。SNOCNameSDeptGMNSNoSDeptMNCNameGStudentSNoSDeptMNCNameG95001计算机计算机李凌李凌数据库数据库9095001计算机计算机李凌李凌数据结构数据结构8695001计算机计算机李凌李凌编译原理编译原理6795002信息信息王平王平数据库数
9、据库7895003数学数学张旺张旺高等数学高等数学7495003数学数学张旺张旺线性代数线性代数87冗余冗余!l这样的关系模式,这样的关系模式,有如下三个毛病有如下三个毛病:(1)插入异常)插入异常:如果一个系刚成立,尚无学生,如果一个系刚成立,尚无学生,或者虽然有学生,但尚未安排课程,或者虽然有学生,但尚未安排课程,那么就无法把这个系及其负责人的信息存入数据库那么就无法把这个系及其负责人的信息存入数据库。(2)删除异常)删除异常:如果某个系的学生全部毕业了,如果某个系的学生全部毕业了,在在删删除除该该系系学学生生选选修修课课的的同同时时,把把这这个个系系及及其其负负责责人人的的信息也丢了信息
10、也丢了。(3)冗余太大)冗余太大:每每一一个个系系负负责责人人的的姓姓名名要要与与该该系系每每一一个个学学生生的的每每门门功功课课的成绩出现的次数一样多,的成绩出现的次数一样多,这这样样,一一方方面面浪浪费费存存储储,另另一一方方面面系系统统要要付付出出很很大大的的代代价来维护数据库的完整性,价来维护数据库的完整性,比如某系负责人更换后,就必须逐一修改每一个元组。比如某系负责人更换后,就必须逐一修改每一个元组。l为什么产生异常?为什么产生异常?模式模式中的中的函数依赖存在不好的性质函数依赖存在不好的性质;或者说,或者说,数据模式组织不合理数据模式组织不合理。l效果效果:这三个模式都这三个模式都
11、不会发生异常不会发生异常冗余也得到控制冗余也得到控制。是一个是一个好好的关系数据库模式的关系数据库模式SNoSDeptMNCNameGStudent分解为分解为SNoSDeptSCNameGSNoSGMNSDeptDS表达模式表达模式l改进改进:把这个把这个单一单一的模式的模式改造改造,分成分成3个关系模式个关系模式。S(SNo,SDept,SNoSDept)SG(SNo,CName,G,(SNo,CName)G)D(SDept,MN,SDeptMN)结结论论:一一个个好好的的关关系系模模式式应应该该具具备备以以下下四四个个条件:条件:尽可能少的数据冗余。尽可能少的数据冗余。没有插入异常。没有
12、插入异常。没有删除异常。没有删除异常。没有更新异常没有更新异常。l注意:注意:一一个个好好的的关关系系模模式式并并不不是是在在任任何何情情况况下下都都是是最优的,要从最优的,要从实际设计的目标实际设计的目标出发进行设计。出发进行设计。5.2 规范化规范化(Normalization)l作用:作用:规范化理论规范化理论使使数据库设计方法数据库设计方法走向走向完备完备。l起源起源:1971年提出。年提出。l定义:如何按照一定的规范设计关系模式,将结定义:如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把不构复杂的关系分解成结构简单的关系,从而把不好的关系数据库模式转变为好
13、的关系数据库模式,好的关系数据库模式转变为好的关系数据库模式,这就是这就是关系的规范化关系的规范化。l数据库模式的好坏和关系中各属性间的依赖关系数据库模式的好坏和关系中各属性间的依赖关系有关,因此,我们先讨论属性间的依赖关系,然有关,因此,我们先讨论属性间的依赖关系,然后再讨论关系规范化理论。后再讨论关系规范化理论。5.2.1 函数依赖函数依赖5.2.2 码:用函数依赖的概念来定义码。码:用函数依赖的概念来定义码。5.2.3 范式(范式(Normal Form)NF5.2.4 多值依赖多值依赖5.2.5 4NF5.2.1 函数依赖函数依赖 l定定义义1:设设R(U)是是属属性性集集U上上的的关
14、关系系模模式式。X,Y是是U的子集,的子集,若若对对于于R(U)的的任任意意一一个个可可能能的的关关系系r,r 中中不不可可能能存存在在两两个元组个元组t,sl在在X上的属性值相等,即上的属性值相等,即tX=sX;l而在而在Y上的属性值不等,即上的属性值不等,即tY sY;则称则称X函数确定函数确定Y或或Y函数依赖函数依赖于于X,记作:,记作:XY。l或者换个通俗的话或者换个通俗的话对于对于X的一个值,只有唯一的的一个值,只有唯一的Y值与之对应,值与之对应,则称则称XY。xf(x)=yYXf(xi)f(xj)xixjyl函数依赖函数依赖是一个是一个语义范畴语义范畴的的概念概念,如:,如:姓名姓
15、名 年龄年龄,姓名姓名 出生日期出生日期,姓名姓名 籍贯籍贯只能在姓名唯一的假设前提下成立。只能在姓名唯一的假设前提下成立。l当当我我们们确确定定关关系系模模式式R中中的的某某个个函函数数依依赖赖时时,是是指指R的的所所有有可可能能关关系系r都都必必须须满满足足这这个个函函数数依依赖赖;反反之之,如如果果R中中只只要要有有一一个个关关系系r不不满满足足这这个个函函数数依依赖,赖,我们就认为我们就认为R不存在这个函数依赖。不存在这个函数依赖。l函函数数依依赖赖只只能能从从属属性性含含义义上上加加以以说说明明,而而不不能能在在数数学上加以证明。学上加以证明。l只只有有数数据据库库设设计计者者才才能
16、能决决定定是是否否存存在在某某种种函函数数依依赖赖。这这就就使使得得数数据据库库系系统统可可以以根根据据设设计计者者的的意意图图来来维维护护数据库的完整性。数据库的完整性。例例如如:关关系系模模式式R12=学学号号(S),课课程程号号(CB),课课程程名名(CN),学学期期数数(T),学学分分(CG),成成绩绩(G)中中的的函函数数依依赖赖可可 表表 示示 为为:CBT;(S,CB)G;CBCN;CBCG;(S,CB,CN)G等等。等等。几个几个记号记号和和术语术语:若若Y不函数依赖于不函数依赖于X,记作记作XY。XY,但,但X Y,则称则称XY是是平凡的函数依赖平凡的函数依赖。若若XY,则,
17、则X叫做叫做决定因素决定因素(Determinant)。)。若若XY,YX,则记作则记作XY。XY,但,但YX,则称则称XY是是非平凡的函数依赖非平凡的函数依赖。(一般情况下都讨论的是非平凡依赖)。(一般情况下都讨论的是非平凡依赖)。定义定义2:完全依赖完全依赖和和部分依赖部分依赖l例如:例如:关系模式关系模式R12=S,CB,CN,T,CG,G中,中,CBT说明说明T完全函数依赖于完全函数依赖于CB;又因为又因为(S,CB)G,(S,CB,CN)G,则则G部分依赖于(部分依赖于(S,CB,CN)。)。l在实际的一个关系表中:在实际的一个关系表中:-如果主码只有一个属性,则如果主码只有一个属性
18、,则基本上是基本上是完全函数依赖完全函数依赖。-如果主码由若干个属性组成,则如果主码由若干个属性组成,则可能存在可能存在部分依赖部分依赖,也可能是也可能是完全依赖完全依赖。l若若XY,但但Y不不完完全全函函数数依依赖赖于于X(只只依依赖赖于于X的的一一部部分分),则称则称Y对对X部分函数依赖部分函数依赖,记作:,记作:l在在R(U)中中,如如果果XY,并并且且对对于于X的的任任何何一一个个真真子子集集X,都有都有XY,则称则称Y对对X完全函数依赖完全函数依赖。记作:。记作:实例实例1存在以下函数依赖:存在以下函数依赖:l lSNoSName(若无重名)(若无重名)l lSNoSDeptl lS
19、NoSAge年龄年龄系系姓名姓名学号学号SAgeSDeptSNameSNo在关系在关系SS S(S SNONO,S SNameName,S SDeptDept,S SAgeAge )中)中实例实例2l在这里,单个属性不能作为决定因素,但属性在这里,单个属性不能作为决定因素,但属性的组合可以作为决定因素,即:的组合可以作为决定因素,即:成绩成绩课程号课程号学号学号GCNoSNo在关系在关系SS(SNO,CNo,G)中)中SNOCNoCNOSNO(SNO,CNo)GF是决定因素是决定因素SNOGCNOG零件编号零件编号零件名零件名(零件编号,工程编号,规格型号)(零件编号,工程编号,规格型号)数量
20、数量(工程编号,零件编号)(工程编号,零件编号)零件名称,规格型号零件名称,规格型号(零件编号,工程编号)(零件编号,工程编号)实例实例3lPJTP(*工工程程编编号号,工工程程名名称称,*零零件件编编号号,零零件名称,规格型号,数量件名称,规格型号,数量)工程名称工程名称工程编号工程编号工程名称工程名称(工程编号,零件编号)(工程编号,零件编号)数量数量定义定义3:传递依赖传递依赖lR(U)中,如果中,如果XY(YX),YX,YZ,则称则称Z对对X传递函数依赖传递函数依赖。l加上条件加上条件YX是因为如果是因为如果YX,则则XY ,实际上是实际上是 ,是,是直接函直接函数依赖数依赖,而不是传
21、递函数依赖,而不是传递函数依赖。例如:例如:关系模式关系模式R=A,B,C,D,其上的函数依赖集其上的函数依赖集F=AB,BC,AC,ABD,则则AC为传递函数依赖。为传递函数依赖。5.2.2 码:用函数依赖的概念来定义码:用函数依赖的概念来定义码。码。l定义定义4:设:设K为为R(U,F)中属性或属性组合。中属性或属性组合。l主属性主属性(Primeattribute)l非非主主属属性性(Non Prime attribute)或或非非码码属属性性(Non-Key-attribute)l全码全码(allkey):):关系模式中,整个属性组是码。关系模式中,整个属性组是码。l定义定义5:外码外
22、码关系模式关系模式R 中属性或属性组中属性或属性组X并非并非R 的码,但的码,但X X是是另一个关系模式的码,则另一个关系模式的码,则X是是R的的外部码外部码(ForeignKey),),也称也称外码外码。若候选码为多个,则选定其中的一个为若候选码为多个,则选定其中的一个为主码主码(PrimaryKey)。)。若若,但,但不存在不存在K的真子集的真子集K,使得使得则则K为为R的的候选码候选码(CandidateKey),),5.2.3 范式(范式(Normal Form)NF l必要性必要性:关系数据库中:关系数据库中关系要满足一定要求;关系要满足一定要求;满足不同层要求的关系,为不同范式。满
23、足不同层要求的关系,为不同范式。l范式的提出范式的提出:19711972年,系统地提出年,系统地提出1NF,2NF,3NF。1974年年,Codd和和Boyce又又共共同同提提出出了了一一个个新新范范式式BCNF。1976年,年,Fagin提出提出4NF。后来又提出了后来又提出了5NF。l范式范式表示表示关系关系的某一的某一级别级别,现在把范式理解为符合某一种级别的关系模式的集合,现在把范式理解为符合某一种级别的关系模式的集合,则则R为第几范式,可写成为第几范式,可写成R xNF。各种范式之间各种范式之间有如下有如下关系关系一个高一级的范式,必须属于低一级范式。一个高一级的范式,必须属于低一级
24、范式。一个低一级范式的关系模式,通过模式分解,可以转化为若干一个低一级范式的关系模式,通过模式分解,可以转化为若干个高一级范式的关系模式集合。个高一级范式的关系模式集合。这种过程这种过程就叫就叫规范化规范化。规范化的规范化的基本思想基本思想是消除关系模式中的数据冗余,消除数据依是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除赖中的不合适的部分,解决数据插入、删除异常。异常。1NF2NF3NFBCNF4NF5NF5NF 5NF 4NF 4NF BCNF BCNF 3NF 3NF 2NF 2NF 1NF1NF复合数据项复合数据项一、一、1NF 第一范式第一范式l关系模式
25、中每一个关系模式中每一个分量分量,必须是,必须是不可分不可分的数据项,的数据项,l满满足足了了这这个个条条件件的的关关系系模模式式,就就属属于于第第一一范范式式(1NF),即:),即:关系模式中不存在关系模式中不存在复合数据项复合数据项;是是平坦的数据结构平坦的数据结构。l例,职工档案(例,职工档案(非规范的非规范的)工号工号姓名姓名出生时间出生时间受奖情况受奖情况获奖时间获奖时间奖励称号奖励称号获奖等级获奖等级奖励部门奖励部门人们在处理这个问题的时候,人们在处理这个问题的时候,人们在处理这个问题的时候,人们在处理这个问题的时候,不规范的作法不规范的作法不规范的作法不规范的作法是是是是-采用:
26、采用:采用:采用:(1 1 1 1)横向冗余法横向冗余法横向冗余法横向冗余法(例如,表(例如,表(例如,表(例如,表A A)(2 2 2 2)纵向冗余法纵向冗余法纵向冗余法纵向冗余法(例如,表(例如,表(例如,表(例如,表B B)表表A.横向冗余法报表实例横向冗余法报表实例工工号号姓姓名名出出生生时时间间获获奖奖时时间间1奖奖励励称称号号1获获奖奖等等级级1奖奖励励部部门门1获获奖奖时时间间2奖奖励励称称号号2获获奖奖等等级级2奖奖励励部部门门2获获奖奖时时间间3奖奖励励称称号号3获获奖奖等等级级3奖奖励励部部门门3获获奖奖时时间间4奖奖励励称称号号4获获奖奖等等级级4奖奖励励部部门门4表表B
27、.纵向冗余法报表实例纵向冗余法报表实例工号工号姓名姓名出生时间出生时间获奖时间获奖时间奖励称号奖励称号获奖等级获奖等级奖励部门奖励部门001张三张三1965040319920401市劳模市劳模大连市大连市001张三张三1965040319920401科技进步奖科技进步奖一等一等大连市大连市001张三张三1965040319920401科学发明科学发明一等一等辽宁省辽宁省化为化为1NF,将上述关系拆开成两个表,即把,将上述关系拆开成两个表,即把组合项组合项拿出来单独形成一个表:拿出来单独形成一个表:工号工号姓名姓名出生时间出生时间工号工号获奖时间获奖时间奖励称号奖励称号获奖等级获奖等级奖励部门奖
28、励部门二、二、2NF 第二范式第二范式l从从2NF开始,判断非主属性与主属性间关系开始,判断非主属性与主属性间关系l定定义义6:若若R 1NF,且且每每一一个个非非码码属属性性完完全全函函数数依依赖赖于于码码,则则R 2NF。l书中书中例子例子:P175,非,非2NF。l2NF定定义义:如如果果一一个个规规范范化化的的数数据据结结构构,它它所所有有的的非非关关键键字字数数据据元元素素都都完完全全函函数数依依赖赖于于整整个个关关键键字字,我我们们称称它它是是第第二二规规范范化化形形式式(SecondNormalForm)的的数数据据结结构构,简简称称第第二范式二范式(2NF)。l推推论论1:一一
29、个个规规范范化化的的数数据据结结构构,如如果果其其关关键键字字仅仅由由一一个个数数据据元元素素组组成成或或其其全全体体属属性性均均为为主主属属性性,那那么么它它必必然然属属于于2NF。l推论推论2:如果关键字是由若干个属性组成,要判别所有的非:如果关键字是由若干个属性组成,要判别所有的非关键字与关键字的函数依赖关系,如果存在部分依赖关系,关键字与关键字的函数依赖关系,如果存在部分依赖关系,则不属于则不属于2NF。例如:例如:描述一个在校大学生的学习情况涉及以下一些属描述一个在校大学生的学习情况涉及以下一些属性:性:学号(学号(Sno)、)、姓名(姓名(Sname)、性别()、性别(Sex)、)
30、、系别系别(Sdept)、)、学籍类型(学籍类型(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,
31、Cno)G显然,该关系模式的码为(显然,该关系模式的码为(Sno,Cno)-可丛常识判断,可丛常识判断,也可也可从从F中求解侯选码。中求解侯选码。R1NF-所有的属性都是最小的不可分的数据项所有的属性都是最小的不可分的数据项R 2NF-存在非码属性对码的部分函数依赖关系存在非码属性对码的部分函数依赖关系R中存在以下几个问题:中存在以下几个问题:(1)冗余冗余。(2)插插入入异异常常。假假如如新新增增一一门门课课程程,其其Cno=1011,Cname=多多媒媒体体技技术术,学学分分=3,但但因因此此课课程程还还没没有有学生选修,学生选修,则这样的元组不能插入则这样的元组不能插入R的关系中。的关系
32、中。(3)删删除除异异常常。假假如如有有一一门门课课(如如课课程程号号为为C5)目目前前只只有有一一位位学学生生选选修修了了,但但这这位位学学生生又又不不选选了了,那那么么C5这这个个数数据据项项就就要要删删除除。由由于于C5是是主主属属性性,删删除除了了C5,整整个个元元组组就就不不存存在在了了,也也必必须须删删除除,但但这这样样也也把不应该删除的信息删除了,把不应该删除的信息删除了,造成删除异常。造成删除异常。实例一实例一将将R化为化为2NF-消除部分函数依赖关系。消除部分函数依赖关系。R可分解为以下三个表:可分解为以下三个表:R1(U1,F1)-码为码为Sno属于属于2NFU1=Sno,
33、Sname,Sex,ID,Sdept,SL,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对属性集进行分解,对函数依赖集进行分解对属性集进行分解,对函数依赖集进行分解实例一实例一l实例二实例二:配件:配件-供应商供应商-库存关系,库存关系,语义描述语义描述:“配件编号配件编号”代表每种
34、配件(名称和规格);代表每种配件(名称和规格);每种配件的每种配件的“库存量库存量”、“价格价格”、“库存占用资金库存占用资金”还和还和“供应商供应商”有关(即:同一配件,可由不同的供应商供应,有关(即:同一配件,可由不同的供应商供应,其价格、库存量及库存占用资金因供应商不同而不同)其价格、库存量及库存占用资金因供应商不同而不同)。同一供应商可供应多种配件。同一供应商可供应多种配件。l这个关系达到这个关系达到1NF,因其所有的属性都是不可分的。,因其所有的属性都是不可分的。根据语义描根据语义描述,非关键字与关键字有如下的函数依赖关系。述,非关键字与关键字有如下的函数依赖关系。“配件编号配件编号
35、+供供应商名称应商名称”是关键字。是关键字。函数依赖关系函数依赖关系:配件编号配件编号配件名称配件名称配件编号配件编号规格规格供应商名称供应商名称供应商地址供应商地址配件编号配件编号+供应商名称供应商名称价格价格配件编号配件编号+供应商名称供应商名称库存量,库存量,配件编号配件编号+供应商名称供应商名称库存占用资金库存占用资金因因为为“配配件件名名称称”、“规规格格”和和“供供应应商商地地址址”并并不不完完全全函函数数依依赖赖于于整整个个关关键键字字。存存在在非非主主属属性性部分函数依赖于关键字,所以它不属于部分函数依赖于关键字,所以它不属于2NF。*配件编号配件编号配件名称配件名称规格规格*
36、供应商名称供应商名称供应商地址供应商地址价格(厂价)价格(厂价)库存量库存量库存占用资金库存占用资金对这样一个数据结构,可能会对这样一个数据结构,可能会对这样一个数据结构,可能会对这样一个数据结构,可能会有有有有如下如下如下如下毛病毛病毛病毛病。插入异常插入异常如如果果汽汽车车配配件件公公司司准准备备引引进进一一种种新新的的汽汽车车配配件件,知知道道它它的的名名称称和和规规格格,给给它它规规定定一一个个配配件件编编号号,想想把把这这种种新新配配件件插插入入到到“配配件件供供应应商商库库存存”数数据据存存贮贮中中去去,但但是是配配件件公公司司还还没没有有决决定定由由哪哪一一家家供供应应商商提提供
37、供这这种种新新配配件件,也也就就是是还还没没有有该该配配件件的的供供应应商商数数据据和和库库存存数据;就无法插入这项新配件的数据(关键字不能为空)数据;就无法插入这项新配件的数据(关键字不能为空)。修改异常修改异常 如果某家供应商的地址发生了变化,需要修改这家供应商的地如果某家供应商的地址发生了变化,需要修改这家供应商的地址;但是有上百种或上千种配件是由这家供应商提供的,那么要址;但是有上百种或上千种配件是由这家供应商提供的,那么要逐个地修改逐个地修改“供应商地址供应商地址”,与这家供应商有关的元组一条也不,与这家供应商有关的元组一条也不能遗漏,这就为修改带来了麻烦。能遗漏,这就为修改带来了麻
38、烦。删除异常删除异常如如果果汽汽车车配配件件公公司司和和某某家家供供应应商商断断绝绝了了业业务务关关系系,就就没没有有必必要要再再保保存存这这家家供供应应商商的的数数据据,而而这这家家供供应应商商恰恰恰恰是是某某种种(或或某某几几种种)配配件件的的唯唯一一供供应应商商,当当把把这这家家供供应应商商的的数数据据删删除除时时,整整个个元元组组也也就就不不存存在在了了,那那么么这这种种(或或这这几几种种)配配件件的的数数据据也也都都丢丢失失了了,把把不不应该删除的数据也删除了。应该删除的数据也删除了。解决办法解决办法解决办法解决办法 l属于属于第一范式第一范式的数据结构还的数据结构还是一个不好的数据
39、结构是一个不好的数据结构,需,需要要进一步把它进一步把它转换转换成成第二规范化形式第二规范化形式,办法办法是:是:把把1NF1NF关系模式通过关系模式通过投影分解投影分解转换成转换成2NF2NF关系模式的关系模式的集合,即集合,即对函数依赖关系按对函数依赖关系按决定因素决定因素分组分组,决定因,决定因素相同的分为一组,构成一个关系模式。素相同的分为一组,构成一个关系模式。分解时遵循的基本原则就是分解时遵循的基本原则就是“一事一地一事一地”,让一个,让一个关系只描述一个实体或者实体间的联系。关系只描述一个实体或者实体间的联系。l因此,因此,“配件配件-供应商供应商-库存库存”可以可以分解成分解成
40、三个数据结构,三个数据结构,它们都是属于它们都是属于2NF的数据结构。的数据结构。配件库存配件库存配件配件供应商供应商*配件编号配件编号*配件编号配件编号*供应商名称供应商名称*供应商名称供应商名称配件名称配件名称供应商地址供应商地址价格价格(厂价厂价)规格规格库存量库存量库存占用资金库存占用资金三三、3NF 第三范式第三范式l定义定义7:关系模式关系模式R中若不存在这样的码中若不存在这样的码X,属性组属性组Y及非主属性及非主属性Z(Z Y),使得使得X Y,(Y X),YZ成立,成立,则称则称R 3NF;l3NF定义定义:如果一个属于第二范式的数据结构,它所有的:如果一个属于第二范式的数据结
41、构,它所有的非关键字数据元素都是彼此函数独立的,换句话说,在所非关键字数据元素都是彼此函数独立的,换句话说,在所有的非关键字数据元素之间,不存在函数依赖关系,那么有的非关键字数据元素之间,不存在函数依赖关系,那么我们称它是我们称它是第三规范化形式第三规范化形式(ThirdNormalForm)的数据的数据结构,简称结构,简称第三范式第三范式(3NF)。即关系模式中不存在部分依赖和传递依赖关系。即关系模式中不存在部分依赖和传递依赖关系。例例1 配件库存配件库存*配件编号配件编号*供应商名称供应商名称价格价格(厂价厂价)库存量库存量库存占用资金库存占用资金配件库存配件库存*配件编号配件编号*供应商
42、名称供应商名称价格价格(厂价厂价)库存量库存量3NF例例2l有有若若干干项项工工程程,每每项项工工程程都都有有规规定定的的完完工工日日期期,每每项项工工程程要要由由若若干干人人完完成成,每每一一个个职职工工只只能能承承担担一一项项工工程程,每一个职工有固定的工资。每一个职工有固定的工资。l那么,可以设计一个称为那么,可以设计一个称为“分派职工任务分派职工任务”的数据存的数据存贮的数据结构。贮的数据结构。分派职工任务分派职工任务职工编号职工编号姓名姓名工资工资工程代号工程代号工程完成日期工程完成日期职工职工工程工程*职工编号职工编号姓名姓名工资工资工程代号工程代号工程工程*工程代号工程代号工程名
43、称工程名称工程完成日期工程完成日期分解成分解成3NF*证明证明证明证明若若若若R R 3NF,3NF,则则则则R R必属于必属于必属于必属于2NF2NF,R R 2NF2NF(用反证法用反证法用反证法用反证法)这与题设这与题设R 3NF矛盾矛盾l证明证明:假设假设R 3NF,R 2NF则则存在属性存在属性A,候选码候选码X,A,X R,使得使得这样在这样在R中就有非主属性中就有非主属性A,不满足第三范式的定义,不满足第三范式的定义,所以所以R 3NF由于是由于是X的子集的子集可断之可断之,但,但X X 并且:并且:X A F四、四、BCNF(Boyce Codd Normal Form)l由由
44、Boyce和和Codd1974年共同提出,对年共同提出,对3NF进行扩充、修正。进行扩充、修正。l即即:关系关系R中所有的决定因素都是候选码中所有的决定因素都是候选码。l由由BCNF的的定义定义可以得出可以得出结论结论,一个满足,一个满足BCNF的关系模式有:的关系模式有:所有的非主属性,对每一个码,都是完全函数依赖。所有的非主属性,对每一个码,都是完全函数依赖。所有的主属性对所有的主属性对每一个不包含它的码每一个不包含它的码,也是完全函数依赖。,也是完全函数依赖。没有任何属性完全函数依赖于非码的任何一组属性。没有任何属性完全函数依赖于非码的任何一组属性。l定义定义8:关系模式:关系模式R 1
45、NF,若若XY且且Y X 时时X 必含有码,必含有码,则则R BCNF。实例实例l非非BCNF范式范式:关系模式:关系模式STJ(S,T,J)中,)中,S是学生、是学生、T是老师、是老师、J是课程;是课程;每个老师只教一门课;每个老师只教一门课;每门课都有若干老师;每门课都有若干老师;某一学生选定一门课就对应一个固定的老师。某一学生选定一门课就对应一个固定的老师。l由由语义语义可以得到如下的可以得到如下的函数依赖函数依赖:(S,J)T(S,T)JTJl函数依赖函数依赖图示图示(见右图(见右图5.6)SJTSTJ图图5.6STJ中的函数依赖中的函数依赖实例分析实例分析l这个关系的这个关系的候选码
46、候选码:(S,J)和)和(S,T)lSTJ是是3NF,因为没有任何非主属性对码传递依赖或部分,因为没有任何非主属性对码传递依赖或部分依赖。依赖。l但是,存在主属性但是,存在主属性J对候选键对候选键(S,T)的部分依赖,或者说的部分依赖,或者说T是决定因素,而是决定因素,而T不是码,不是码,STJ不是不是BCNF。l经经BCNF分解分解后,得到:后,得到:ST(S,T)TJ(T,J)BCNF对对BCNF的分析的分析l3NF和和BCNF,是在函数依赖的条件下,是在函数依赖的条件下,对模式分解所能达到的分离程度的对模式分解所能达到的分离程度的“测度测度”。lBCNF实现了彻底的分离,已消除了插入、实
47、现了彻底的分离,已消除了插入、删除异常。删除异常。l3NF的分离的的分离的“不彻底性不彻底性”,表现在可能,表现在可能存在主属性对码的部分依赖和传递依赖。存在主属性对码的部分依赖和传递依赖。5.2.4 多值依赖多值依赖实例实例:教员,课程,参考书:教员,课程,参考书(P178-P179)学校中某一门课程由多个教员讲授,他们使用相同学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。我们可以用一个非规范化的关书可以供多门课程使用。我们可以用一个非规范化的关系来表示教员系来表示教员T,课程
48、课程C和参考书和参考书B之间的关系:之间的关系:课程课程C教员教员T参考书参考书B物理物理李李勇勇普通物理学普通物理学王王军军光学原理光学原理物理习题集物理习题集数学数学李李勇勇数学分析数学分析张张平平微分方程微分方程高等代数高等代数课程课程C教员教员T参考书参考书B物物理理李李勇勇普通物理学普通物理学物物理理李李勇勇光学原理光学原理物物理理李李勇勇物理习题集物理习题集物物理理王王军军普通物理学普通物理学物物理理王王军军光学原理光学原理物物理理王王军军物理习题集物理习题集数数学学李李勇勇数学分析数学分析数数学学李李勇勇微分方程微分方程数数学学李李勇勇高等代数高等代数数数学学张平张平数学分析数学
49、分析数数学学张平张平微分方程微分方程数数学学张平张平高等代数高等代数关系的码是关系的码是(C,T,B),即即A1l_Key。因而因而TEACHINGBCNF。但是当某一课程但是当某一课程(如物理如物理)增加增加一名讲课教员一名讲课教员(如周英如周英)时时,必须必须插人多个元组:插人多个元组:(物理物理,周英周英,普通物理学普通物理学),(物理物理,周英周英,光学原理光学原理),(物理物理,周英周英,物理习题集物理习题集)当某一课程(如数学)去掉一当某一课程(如数学)去掉一本参考书(如微分方程),则本参考书(如微分方程),则必须删除多个元组。必须删除多个元组。对对数据的增删改很不方便数据的增删改
50、很不方便,数据数据的冗余也十分明显的冗余也十分明显。Teaching定义定义:l设设R(U)是是属属性性集集U上上的的一一个个关关系系模模式式,X、Y、Z是是U的的子子集,并且集,并且Z=U-X-Y。l若若对对R(U)的的任任一一关关系系r,对对于于X的的一一个个给给定定值值x,存存在在Y的的一组值与其对应,一组值与其对应,l而而Y的这组值又不以任何方式与属性的这组值又不以任何方式与属性Z 的值相关,的值相关,l那么就是说,那么就是说,Y多值依赖多值依赖于于X,记为:记为:XY。l当当Y的这组值个数为的这组值个数为1时,时,XY就成了就成了XY。U多值依赖的示意图f(xi)=yi1yi2yim