
数据库技术及应用第8章关系数据库设计理论.ppt
47页8.1 关系模式规范化设计的必要性关系模式规范化设计的必要性关系数据库的关系数据库的模式设计为什么要规范化模式设计为什么要规范化?什么是好的关系模什么是好的关系模式式?一个一个“不好不好”的关系模式可能产生哪些问题的关系模式可能产生哪些问题?下面通过?下面通过一个例子来加以分析和讨论一个例子来加以分析和讨论例例8.1 假设有一个存放学生选课有关信息的关系,其关系模式如下:假设有一个存放学生选课有关信息的关系,其关系模式如下:R(学号,课程号,课程名,课程类型,学时,学分,选修日期,成绩学号,课程号,课程名,课程类型,学时,学分,选修日期,成绩)通过对某大学的实地调查,通过对某大学的实地调查,已知事实(语义)如下已知事实(语义)如下:(1)一门课程有唯一的课程名、课程类型、学时和学分,但课程名不唯一;一门课程有唯一的课程名、课程类型、学时和学分,但课程名不唯一;(2)一门课程可以被多名学生选修;一门课程可以被多名学生选修;(3)一名学生可以选修多门课程;一名学生可以选修多门课程;(4)一名学生可以多次选修同一门课程,每选修一次有一个成绩一名学生可以多次选修同一门课程,每选修一次有一个成绩。
一个满足上述语义的关系模式一个满足上述语义的关系模式R的一个实例如表的一个实例如表8.1所示8.1 关系模式规范化设计的必要性关系模式规范化设计的必要性分析表分析表8.1发现该关系存在以下几个方面的问题:发现该关系存在以下几个方面的问题:(1)数据冗余数据冗余同一门课程的同一门课程的课程信息重复出现课程信息重复出现的次数与选修该门课程的学的次数与选修该门课程的学生的人次相同,这将生的人次相同,这将浪费大量的存储空间浪费大量的存储空间2)更新异常更新异常由于数据冗余数据冗余,当某门课程的,当某门课程的课程类型变更时课程类型变更时,必须修改与,必须修改与该门课程有关的所有选课记录这不但工作量大,还该门课程有关的所有选课记录这不但工作量大,还可能可能因为漏改某些因为漏改某些记录而记录而导致数据不一致导致数据不一致3)插入异常插入异常当一门课程还尚无学生选修,则无法把该门课程的课程信息当一门课程还尚无学生选修,则无法把该门课程的课程信息插入数据库,即插入数据库,即该插入的数据插不进去该插入的数据插不进去4)删除异常删除异常当删除选课记录的同时,会把该门课程的课程信息一并删除当删除选课记录的同时,会把该门课程的课程信息一并删除掉,即在掉,即在删除数据的同时把不该删的也删掉了删除数据的同时把不该删的也删掉了。
可以可以得出结论得出结论:关系模式:关系模式R是一个是一个“不好不好”的关系模式的关系模式因此,必须对关必须对关系模式进行规范化设计系模式进行规范化设计一个好的关系模式应当不会发生好的关系模式应当不会发生插入异常、删插入异常、删除异常和更新异常,数据冗余应尽可能小除异常和更新异常,数据冗余应尽可能小例如,可以将关系模式例如,可以将关系模式R分解分解为:为:R1(学号,课程号,选修日期,成绩学号,课程号,选修日期,成绩),R2(课程号,课程名,课程类课程号,课程名,课程类型,学时,学分型,学时,学分),这样前面所述的四个问题就都不存在了这样前面所述的四个问题就都不存在了关系模式关系模式R为什么会产生这些问题为什么会产生这些问题?一个?一个“不好不好”的关系模的关系模式会有哪些不好的性质式会有哪些不好的性质?如何改造如何改造一个一个“不好不好”的模式?的模式?8.2 函数依赖与码函数依赖与码 关系模式可以形式化地表示为:关系模式可以形式化地表示为:R(U,D,DOM,F)其中,其中,R:关系名,关系名,U:属性名集合,属性名集合,D:值域集合,值域集合,DOM:属性属性向值域的映像集合,向值域的映像集合,F表示属性间数据依赖关系的集合表示属性间数据依赖关系的集合。
本章中把本章中把关系模式简化为关系模式简化为R(U,F)数据依赖是数据依赖是一个关系内部属性与属性之间的一个关系内部属性与属性之间的约束关系约束关系,是现,是现实世界属性间相互联系的实世界属性间相互联系的抽象,是数据内在的性质,是语义抽象,是数据内在的性质,是语义的体现的体现其中函数依赖(其中函数依赖(FD)是最重要的一种数据依赖类型,)是最重要的一种数据依赖类型,其他的数据依赖有多值依赖(其他的数据依赖有多值依赖(MVD)等类型1971年年E.F.Codd提出提出了针对关系数据库模式设计的规范化了针对关系数据库模式设计的规范化理论这一理论的理论这一理论的研究表明使得关系模式研究表明使得关系模式“不好不好”的原因是的原因是由于该关系模式中由于该关系模式中存在某些存在某些不合适的数据依赖,不合适的数据依赖,而通过分解而通过分解关系模式关系模式可消除可消除这些不合适的数据依赖这些不合适的数据依赖8.2.1 函数依赖的定义及分类函数依赖的定义及分类定义定义8.1 设设R(U)是属性集是属性集U上的关系模式,上的关系模式,X,Y是是U的子集若对于若对于R(U)的任意一个可能的关系的任意一个可能的关系r,r中不可能存在两个元中不可能存在两个元组在组在X上的属性值相等,而在上的属性值相等,而在Y上的属性值不等,则称上的属性值不等,则称“X函函数确定数确定Y”或或“Y函数依赖于函数依赖于X”,记作,记作XY。
对于函数依赖,对于函数依赖,有以下几点说明有以下几点说明:(1)函数依赖函数依赖不是指不是指关系模式关系模式R的的某个(或某些)实例某个(或某些)实例应满足的应满足的约束条件,而是指约束条件,而是指R的的所有实例所有实例均要满足的约束条件均要满足的约束条件2)函数依赖函数依赖是语义范畴的概念是语义范畴的概念,只能,只能根据数据的语义来确定根据数据的语义来确定一一个函数依赖,而个函数依赖,而不能按照其形式化定义来证明不能按照其形式化定义来证明一个函数依赖一个函数依赖是否成立如是否成立如“课程名课程名学时学时”成立的条件是课程名不重复成立的条件是课程名不重复3)数据库设计者数据库设计者可以对现实世界作强制性规定可以对现实世界作强制性规定,如规定课程名,如规定课程名不能同名,使得不能同名,使得“课程名课程名学时学时”函数依赖成立函数依赖成立8.2.1 函数依赖的定义及分类函数依赖的定义及分类术语和记号术语和记号:若若XY,则,则X称为这个函数依赖的决定属性组,也称为称为这个函数依赖的决定属性组,也称为决定因素决定因素若若XY,YX,则记作,则记作XY若若Y不函数依赖于不函数依赖于X,则记作,则记作XY。
在在确定函数依赖时确定函数依赖时,可以,可以从属性间的联系入手从属性间的联系入手函数依赖与函数依赖与属性间的联系类型有关:属性间的联系类型有关:(1)若属性若属性X和和Y之间有之间有“一对一一对一”的联系,则的联系,则XY,YX,XY2)若属性若属性X和和Y之间有之间有“多对一多对一”的联系,则的联系,则XY,但,但YX3)若属性若属性X和和Y之间有之间有“多对多多对多”的联系,则的联系,则X与与Y之间不存在任何函数之间不存在任何函数依赖8.2.1 函数依赖的定义及分类函数依赖的定义及分类定义定义8.2 在在R(U)中,对于中,对于U的子集的子集X和和Y若XY,但,但Y X,则称则称XY是非平凡的函数依赖是非平凡的函数依赖若XY,但,但Y X,则称,则称XY是是平凡的函数依赖平凡的函数依赖显然,对于任一关系模式,显然,对于任一关系模式,平凡函数依赖平凡函数依赖都是必然成立的,都是必然成立的,它它不反映新的语义不反映新的语义若不特别声明,总假定讨论的是非平凡若不特别声明,总假定讨论的是非平凡的函数依赖的函数依赖定义定义8.3 在在R(U)中,如果中,如果XY,并且对于,并且对于X的任何一个真子的任何一个真子集集X,都有,都有XY,则称则称Y对对X完全函数依赖完全函数依赖,记作,记作XY。
若若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y对对X部分函数依赖部分函数依赖,记作记作XY定义定义8.4 在在R(U)中,如果中,如果XY,YX,YZ(Z Y且且Z X),则称),则称Z对对X传递函数依赖传递函数依赖,记作,记作XZ这里加上条件这里加上条件YX,是因为如果,是因为如果YX,则,则XY,实际上,实际上Z对对X是直接函数依赖而不是传递函数依赖是直接函数依赖而不是传递函数依赖fpt 8.2.1 函数依赖的定义及分类函数依赖的定义及分类例如例如,对于,对于关系模式关系模式SMC(学号,专业号,专业名,创办日期,学号,专业号,专业名,创办日期,所属学院,课程号,选修日期,成绩所属学院,课程号,选修日期,成绩)平凡的函数依赖平凡的函数依赖有:学号有:学号学号,学号,(学号,专业号)(学号,专业号)学号学号 等等等等;非平凡的函数依赖非平凡的函数依赖有:有:学号学号专业号,专业号,专业号专业号(专业名,创办日期,所属学院),(专业名,创办日期,所属学院),(学号,课程号,选修日期)(学号,课程号,选修日期)成绩成绩;这三个非平凡的函数依赖这三个非平凡的函数依赖同时也是完全函数依赖同时也是完全函数依赖。
部分函数依赖有部分函数依赖有:(学号,课程号,选修日期):(学号,课程号,选修日期)专业号专业号;传递函数依赖有传递函数依赖有:学号:学号专业名专业名pt 8.2.2 函数依赖的公理系统和推理规则函数依赖的公理系统和推理规则定义定义8.5 对于满足一组函数依赖对于满足一组函数依赖F的关系模式的关系模式R(U,F),其任,其任何一个关系何一个关系r,若函数依赖,若函数依赖XY都成立,(即都成立,(即r中任意两元组中任意两元组t和和s,若,若tX=sX,则,则tY=sY),则称),则称F逻辑蕴涵逻辑蕴涵XY,或称或称XY为为F所蕴涵所蕴涵给定函数依赖集给定函数依赖集F,问问XY是否为是否为F所蕴涵所蕴涵,需要一套推理,需要一套推理规则,这组推理规则是规则,这组推理规则是Armstrong在在1974年首先提出来的,年首先提出来的,称为称为Armstrong公理系统公理系统1)自反律自反律:若:若Y X U,则,则XY为为F所蕴涵2)增广律增广律:若:若XY为为F所蕴涵,且所蕴涵,且Z U,则,则XZYZ为为F所蕴涵3)传递律传递律:若:若XY及及YZ为为F所蕴涵,则所蕴涵,则XZ为为F所蕴涵。
所蕴涵注意:由自反律所得到的函数依赖均是平凡的函数依赖,注意:由自反律所得到的函数依赖均是平凡的函数依赖,自自反律的使用并不依赖于反律的使用并不依赖于F8.2.2 函数依赖的公理系统和推理规则函数依赖的公理系统和推理规则根据公理系统的三条推理规则又可推出下面根据公理系统的三条推理规则又可推出下面三条推理规则三条推理规则:(4)合并规则合并规则:若:若XY,XZ,则,则XYZ5)伪传递规则伪传递规则:若:若XY,WYZ,则,则XWZ6)分解规则分解规则:若:若XY及及Z Y,则,则XZ引理引理8.l XA1A2Ak成立的充分必要条件是成立的充分必要条件是XAi成立(成立(i=l,2,k)合并规则、伪传递规则、分解规则以及引理合并规则、伪传递规则、分解规则以及引理8.1的证明作为练的证明作为练习留给读者自己完成引理习留给读者自己完成引理8.1中的结论为关系模式设计中各中的结论为关系模式设计中各个关系的码的确定奠定了理论基础个关系的码的确定奠定了理论基础定义定义8.6 在关系模式在关系模式R(U,F)中为中为F所逻辑蕴涵的函数依赖的所逻辑蕴涵的函数依赖的全体称为全体称为F的闭包的闭包,记为,记为F+。
Armstrong公理系统是有效的、完备的公理系统是有效的、完备的8.2.3 属性集属性集X关于函数依赖集关于函数依赖集F的闭包的闭包判定判定XY是否为是否为F所逻辑蕴涵所逻。
