【教学课件】第10章数据依赖和关系模式的规范化.ppt
《【教学课件】第10章数据依赖和关系模式的规范化.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第10章数据依赖和关系模式的规范化.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第1010章章 数据依赖和关系模式的数据依赖和关系模式的规范化规范化10.1 10.1 关系模式设计中的一些数据语义问题关系模式设计中的一些数据语义问题 数据的语义不但表现为完整性约束,对数据库数据的语义不但表现为完整性约束,对数据库的状态或状态的转换施加一定的限制,而且对关的状态或状态的转换施加一定的限制,而且对关系模式的设计也提出一定的要求。系模式的设计也提出一定的要求。属性间往往存在一定的依赖关系,而最基本的属性间往往存在一定的依赖关系,而最基本的依赖关系是函数依赖。所谓函数依赖是指一个或依赖关系是函数依赖。所谓函数依赖是指一个或一组属性的值可以决定其他属性的值。一组属性的值可以决定其
2、他属性的值。一般地讲,设,是关系的两个不同的属性组,一般地讲,设,是关系的两个不同的属性组,如果函数依赖于,或函数决定,则其依赖关如果函数依赖于,或函数决定,则其依赖关系可表示为系可表示为。设有一关系,具有下列属性:学号(设有一关系,具有下列属性:学号(S S)、课)、课程号(程号(C C)、成绩()、成绩(G G)、任课教师姓名()、任课教师姓名(TNTN)、教)、教师所在系名(师所在系名(D D)。这些数据具有下列语义:)。这些数据具有下列语义:()学号是一个学生的标识,课程号是一门课程的标()学号是一个学生的标识,课程号是一门课程的标识,这些标识与其代表的学生和课程分别一一对应;识,这些
3、标识与其代表的学生和课程分别一一对应;()一位学生所修的每门课程都有一个成绩;()一位学生所修的每门课程都有一个成绩;()每门课程(注意:不是每种课程!同一种课,如()每门课程(注意:不是每种课程!同一种课,如数学课,可以开好多门,每门课有一个课程号)只有数学课,可以开好多门,每门课有一个课程号)只有一位任课教师,但一位教师可以教多门课;一位任课教师,但一位教师可以教多门课;()教师中没有重名,每位教师只属于一个系。()教师中没有重名,每位教师只属于一个系。根据上述语义,可以确认下面函数依赖的集合:根据上述语义,可以确认下面函数依赖的集合:,从图可以看出,属性集,可以从图可以看出,属性集,可以
4、决定其他所有属性的值,而,的任何子集决定其他所有属性的值,而,的任何子集则不能,故,是这个关系的主键。这样的则不能,故,是这个关系的主键。这样的关系用来查询是很方便的。关系用来查询是很方便的。计算机系通知教师准备给学生补考,可以计算机系通知教师准备给学生补考,可以“查询图查询图10-10-1 1函数依赖计算机系所开课程的不及格学生的学号、不及函数依赖计算机系所开课程的不及格学生的学号、不及格课程号以及任课教师的姓名格课程号以及任课教师的姓名”.查询仅涉及一个关查询仅涉及一个关系,是一元查询,不须做连接运算,可以用下面的系,是一元查询,不须做连接运算,可以用下面的SQLSQL语语句来表达:句来表
5、达:SELECT S SELECT S,C,TN FROM R WHERE CSAND F;但是这样的关系也有问题,首先数据冗余太多,但是这样的关系也有问题,首先数据冗余太多,如一门课程的教师名须对选这门课的所有学生重复一如一门课程的教师名须对选这门课的所有学生重复一次;一个系名须对选该系所开课程的所有学生重复一次;一个系名须对选该系所开课程的所有学生重复一次。除冗余外,在进行增、删、改操作时,还会发生次。除冗余外,在进行增、删、改操作时,还会发生所谓更新异常现象所谓更新异常现象:()由于冗余,在修改时往往会导致数据的不一()由于冗余,在修改时往往会导致数据的不一致。例如,改变一门课程的任课教
6、师,或一门课改由致。例如,改变一门课程的任课教师,或一门课改由另一个系开出,则需要修改多个元组。如果部分修改,另一个系开出,则需要修改多个元组。如果部分修改,部分不修改,则会导致数据的不一致。这叫修改异常。部分不修改,则会导致数据的不一致。这叫修改异常。()由于主属性不能为空值,如某系有位教师不教课,()由于主属性不能为空值,如某系有位教师不教课,则这位教师的姓名及所属的系名就不能插入;同样,则这位教师的姓名及所属的系名就不能插入;同样,如果一位教师所开的课暂时无人选,或是列入计划而如果一位教师所开的课暂时无人选,或是列入计划而目前不开,则也无法插入。这叫插入异常。目前不开,则也无法插入。这叫
7、插入异常。()如果所有学生都退选一门课,则有关这门课的其()如果所有学生都退选一门课,则有关这门课的其他数据(任课教师名及所属系名)也将被删除。如果他数据(任课教师名及所属系名)也将被删除。如果一位教师因病暂时停开他所开的课,则有关这位教师一位教师因病暂时停开他所开的课,则有关这位教师的其他信息(所属系、可开课程)都将被删去。这叫的其他信息(所属系、可开课程)都将被删去。这叫删除异常。删除异常。在上例的关系中,包含了三方面的信息:学生各门课程在上例的关系中,包含了三方面的信息:学生各门课程的成绩,各门课程开课的教师以及各个教师所属的系。的成绩,各门课程开课的教师以及各个教师所属的系。上例中上例
8、中,所有这三方面的数据都集中在一个关系中,此所有这三方面的数据都集中在一个关系中,此关系的主键为属性集关系的主键为属性集S S,C C。(C C,TNTN)和()和(TNTN,D D)本来可以作为独立的关系而存)本来可以作为独立的关系而存在,而今却不得不依附于其他关系。这就是说,必须对应在,而今却不得不依附于其他关系。这就是说,必须对应一个主键一个主键S S,C C的值,才能插入或存在一个(的值,才能插入或存在一个(C C,TNTN)或()或(TNTN,D D)的值。这是关系结构带来的限制,不是现)的值。这是关系结构带来的限制,不是现实世界的真实反映。实世界的真实反映。解决这个问题的途径是把关
9、系分解,也就是进行解决这个问题的途径是把关系分解,也就是进行所谓关系规范化。例如,把上例的关系分解为下列三所谓关系规范化。例如,把上例的关系分解为下列三个关系:个关系:SCG(S,C,G)CTN(C,TN)TND(TN,D)这样的分解使关系的语义单纯化,使之符合这样的分解使关系的语义单纯化,使之符合“一地一地一事一事”的原则。但是分解以后,对某些查询必须进行的原则。但是分解以后,对某些查询必须进行开销很大的连接操作,影响数据库的性能。开销很大的连接操作,影响数据库的性能。关系的规范化主要是对关系进行必要的分解,但如关系的规范化主要是对关系进行必要的分解,但如何分解,分解后是否有损于原来的信息,
10、回答这些问何分解,分解后是否有损于原来的信息,回答这些问题需要理论的指导,下面将讨论这些问题。题需要理论的指导,下面将讨论这些问题。n表示一个关系的模式,表示一个关系的模式,U=A1,A2,An是是R的所有的所有属性的集合,属性的集合,F是是R中函数依赖的集合,中函数依赖的集合,r是是R所取的值,所取的值,即即R实有元组的集合。实有元组的集合。n定义定义10-1 设有一关系模式设有一关系模式R(A1,A2,An),X和和Y为其属为其属性的子集。设性的子集。设t1,t2是关系是关系R中的任意两个元组,如果中的任意两个元组,如果t1X=t2X,则则t1Y=t2Y。这时我们称。这时我们称Y函数依赖于
11、函数依赖于X,或,或X函数决定函数决定Y,X称为决定子(称为决定子(determinant)。)。一个函数依赖要能成立,不但要求关系的当前值都能一个函数依赖要能成立,不但要求关系的当前值都能满足函数依赖条件,而且还要求关系的任一可能值都能满满足函数依赖条件,而且还要求关系的任一可能值都能满足函数依赖条件。确认一个函数依赖,需要弄清数据的语足函数依赖条件。确认一个函数依赖,需要弄清数据的语义,而语义是现实世界的反映,不是主观的臆断。义,而语义是现实世界的反映,不是主观的臆断。如果为的子集,显然如果为的子集,显然成立,这称为平凡函成立,这称为平凡函数依赖(数依赖(trivial functiona
12、l dependencytrivial functional dependency)。平凡函数)。平凡函数依赖必然成立,它不反映新的语义。我们平常所指的函数依赖必然成立,它不反映新的语义。我们平常所指的函数依赖一般都指非平凡函数依赖(依赖一般都指非平凡函数依赖(nontrivial functional nontrivial functional dependencydependency)。)。如果不函数依赖于,则记做如果不函数依赖于,则记做 。如果如果且且,则与一一对应,可记做,则与一一对应,可记做 。定义定义10-2 10-2 设设X,YX,Y是某关系的不同属性集是某关系的不同属性集,如如
13、XYXY,且不,且不存在存在XX为为X X的子集,使的子集,使XYY,则称,则称Y Y完全函数依赖完全函数依赖(full functional dependency(full functional dependency)于)于X X,记做,记做X YX Y;否则称否则称Y Y部分函数依赖部分函数依赖p(partial functional partial functional dependency)dependency)于于X X,记做,记做X YX Y。在在10.110.1节的例子中节的例子中,S S,C,C是主键,故是主键,故S S,C,CTNTN,但,但C CTNTN,故,故S S,p
14、pf fC CTNTN,而,而S S,C CGG。定义定义10-310-3设设X,Y,ZX,Y,Z是某关系的不同的属性集,如果是某关系的不同的属性集,如果XY,Y X,YZ,XY,Y X,YZ,则称传递函数依赖(则称传递函数依赖(transitive transitive functional dependencyfunctional dependency)于)于X X。n定义定义10-4 10-4 设设F F是是R R的函数依赖集合,的函数依赖集合,XYXY是是R R的一个函的一个函数依赖。如果一个关系模式满足数依赖。如果一个关系模式满足F F,则必然满足,则必然满足XYXY,就称就称F F
15、逻辑蕴涵逻辑蕴涵XYXY,或表示为,或表示为F|=XYF|=XY。n定义定义10-5 10-5 函数依赖集合所逻辑蕴涵的函数依赖的全函数依赖集合所逻辑蕴涵的函数依赖的全体称为体称为F F的闭包(的闭包(closureclosure),记为),记为F F,即,即F FXYXYF|=XYF|=XY。为了从已知的函数依赖推导出其他函数依赖,为了从已知的函数依赖推导出其他函数依赖,ArmstrongArmstrong提出了一提出了一套推理规则,我们常称为套推理规则,我们常称为ArmstrongArmstrong公理(公理(Armstrong saxions Armstrong saxions)。)。其
16、推理规则可归结为如下三条其推理规则可归结为如下三条:A1 A1:自反律(:自反律(reflexivityreflexivity)如果如果,则,则成立。这是一个平凡函数依赖。成立。这是一个平凡函数依赖。A2A2:扩展律(:扩展律(augumentationaugumentation)如如果果成成立立,且且,则则成成立立。式式中中,和和是是和和的简写,以后将沿用此表示法。的简写,以后将沿用此表示法。A3A3:传递律(:传递律(transitivitytransitivity)如果如果,成立,则成立,则成立。成立。引理引理10-110-1ArmstrongArmstrong公理是正确的(公理是正确的
17、(soundsound),即如果),即如果F F成立,则由成立,则由F F根据根据ArmstrongArmstrong公理所推导的函数依赖总是公理所推导的函数依赖总是成立的。成立的。引理引理10-2 10-2 下列三条推理规则是正确的。下列三条推理规则是正确的。(1)(1)合并规则(合并规则(the union rulethe union rule),|=|=。(2)(2)伪伪传传递递规规则则(the the pseudo pseudo transitivity transitivity rulerule):,|=|=。(3)(3)分解规则(分解规则(the decomposition rul
18、ethe decomposition rule):如果):如果且为的子集,则且为的子集,则成立。成立。定义定义10-610-6设为的子集,则属性集关于函数依设为的子集,则属性集关于函数依赖集的闭包赖集的闭包定义为定义为且且可由可由ArmstrongArmstrong公理导出。公理导出。引理引理10-3 10-3 能由能由ArmstrongArmstrong公理导出的充分必公理导出的充分必要条件是要条件是。定理定理10-110-1ArmstrongArmstrong公理是正确的、完备的公理是正确的、完备的(complete)(complete)算法算法10-110-1计算属性集关于的闭包。计算属
19、性集关于的闭包。输入:属性集为的子集,函数依赖集。输入:属性集为的子集,函数依赖集。输出:输出:。方法:按下列方法计算属性集序列方法:按下列方法计算属性集序列X X(0)(0),X,X(1)(1),(i)(i)(1)(1)初始化初始化X X()X X,i i。(2)(2)求属性集求属性集B=B=A|(A|(V)(V)(W)(VWFVW)(VWFVX X(i)(i)AWAW)。(3)X(3)X(i+1)(i+1)BXBX(i)(i)。(4)(4)判别判别X X(i+1)(i+1)X X(i)(i)。(5)(5)若不等,若不等,i ii i1 1,返回,返回(2)(2);若相等,;若相等,X X+
20、=X=X(i)(i),结束。,结束。【例例10-110-1】设设ABCABC,DEGDEG,CACA,BECBEC,BCDBCD,CGBDCGBD,ACDBACDB,CEAGCEAG,试试用用算算法法10-110-1计计算算(BD)(BD)+。解:令解:令(0)(0)BDBD。找找左左部部为为BDBD的的子子集集的的函函数数依依赖赖,只只有有。(1)(1)BDEGBDEGBDEG,BDEG,找找左左部部为为BDEGBDEG的的子子集集的的函函数数依依赖赖,有有DEGDEG,BECBEC。X X(2)(2)BDEG EGC BDEG EGC BCDEG BCDEG找左部为找左部为BCDEGBCD
21、EG的子集的函数依赖,有的子集的函数依赖,有DEGDEG,CACA,BECBEC,BCDBCD,CGBDCGBD,CEAGCEAG。X X(3)(3)BCDEG BCDEG ABCDEG=ABCDEGABCDEG=ABCDEG因因X X(3)(3)U U,一望可知不必再进行计算了,一望可知不必再进行计算了,(BD)(BD)+=ABCDEGABCDEG。可是在算法。可是在算法10-110-1中,还要迭代一次才能结束。中,还要迭代一次才能结束。定义定义10-710-7设设F F,G G为两个函数依赖集,如果为两个函数依赖集,如果F F+G G+,则称则称F F和和G G是等价的,也可称是等价的,也
22、可称F F覆盖(覆盖(covercover)G G,或,或G G覆盖覆盖F F;也可说;也可说F F和和G G互相覆盖。互相覆盖。引理引理10-410-4F FG G的充分必要条件是的充分必要条件是F FG G+且且G GF F+。引理引理10-5 10-5 任一函数依赖集任一函数依赖集F F总可以为一右部恒为单总可以为一右部恒为单属性的函数依赖集所覆盖属性的函数依赖集所覆盖.定义定义10-810-8函数依赖集如果满足下列条件,则称为极函数依赖集如果满足下列条件,则称为极小函数依赖集或最小覆盖。小函数依赖集或最小覆盖。(1)F (1)F中每个函数依赖的右部为单属性。中每个函数依赖的右部为单属性
23、。(2)F(2)F中中不不存存在在这这样样的的函函数数依依赖赖XAXA,使使得得F FXAXA与与F F等价。等价。(3)(3)在在 F F中中 也也 不不 存存 在在 这这 样样 的的 XAXA,使使 得得 F FXAXAZAZA与与F F等价,式中,等价,式中,Z Z为为X X的子集。的子集。定理定理10-210-2任一函数依赖集任一函数依赖集F F都与一最小函数依赖集都与一最小函数依赖集FF等价。等价。FF称为称为F F的最小覆盖。的最小覆盖。10.3 多值依赖 除了函数依赖外,关系的属性间还有其他一些依赖关除了函数依赖外,关系的属性间还有其他一些依赖关系,多值依赖(系,多值依赖(Mul
24、tiValued Dependency,MVDMultiValued Dependency,MVD)是其中)是其中之一。之一。在多值依赖(表示为在多值依赖(表示为,读做多值决定,读做多值决定,或多值依赖于)中,对于给定的值,其对应的是或多值依赖于)中,对于给定的值,其对应的是的一组数值(其个数可以从零到多个),而且这种对的一组数值(其个数可以从零到多个),而且这种对应关系,对于给定的值所对应的()每应关系,对于给定的值所对应的()每个值都能成立。个值都能成立。定义定义10-910-9设,是关系模式的属性集,如果对于设,是关系模式的属性集,如果对于的任何值,都有如下的性质:的任何值,都有如下的性
25、质:则称满足则称满足XYXY。与函数依赖一样,多值依赖也有一组公理:与函数依赖一样,多值依赖也有一组公理:互补律:互补律如果如果,则,则()。()。如如果果需需要要,可可用用()表表示示多多值值依依赖赖,以强调其互补关系。以强调其互补关系。:扩展律(多值依赖):扩展律(多值依赖)如果如果,而,而,则,则。A6A6:传递律(多值依赖):传递律(多值依赖)如果如果,且,且,则,则()。()。下面两个公理与函数依赖和多值依赖都有关。下面两个公理与函数依赖和多值依赖都有关。A7A7:如如果果,则则,即即函函数数依依赖赖是是多多值值依依赖赖的的特特例。例。A8A8:如果:如果,而且对某个与不,而且对某个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 10 数据 依赖 关系 模式 规范化
限制150内