数据库系统原理及应用丁忠俊第四章关系数据库理论.ppt
《数据库系统原理及应用丁忠俊第四章关系数据库理论.ppt》由会员分享,可在线阅读,更多相关《数据库系统原理及应用丁忠俊第四章关系数据库理论.ppt(99页珍藏版)》请在三一办公上搜索。
1、第四章 关系数据库设计理论,第一节 概述,一、关系DB设计理论的主要内容1、解决的主要问题从理论上来讲,如何设计一个比较好的关系模式的集合?,2、本章的主要内容,三方面的内容:,数据依赖(函数依赖、关键字、函数依赖的推理规则)关系模式的分解(两种特性:无损联接性和保持依赖性)范式理论(1NF-5NF),其中:数据依赖是基础。即:范式理论和关系模式的分解都是建立在数据依赖的概念基础之上。,二、关系模式使用中的异常问题例:设有关系模式R(TNAME,ADDR,C#,CNAME)(分别为:教师名,地址,课程号,课程名)其关系如下:,R,现实世界的事实可知:一个教师只有一个地址一个教师可讲若干课程每门
2、课程只有一个教师任教,R的侯选关键字为:(TNAME,C#),在使用过程中会存在以下问题:(1)数据冗余:当一个教师若讲多门课程,则其地址值会重复存储多次。数据冗余:同一个数据重复存储。数据冗余会引起:浪费存储空间;造成修改数据不一致性。,(2)更新操作异常修改异常:由数据冗余引起的。如上例:t1教师讲了三门课,其地址值a1重复存储了三次;若t1搬家,则它的地址值必须修改三处值,若只修改一处,则会产生修改不一致性。插入异常:指该插入的数据而不能插入到关系中。如:新增加一个教师,但尚未分配讲课任务,则不能将其姓名和地址值插入到R中。原因:R 的候选关键字(TNAME,C#)中,C#为空值。即:候
3、选关键字中主属性为空或部分为空的元组违反了实体完整性原则。,删除异常:指不该从关系中删除的数据被删除了。如:若要把原来上过课,但目前未上课的教师的所有元组删去,则将该教师的姓名和地址信息也从R中删除了。注:DB的更新操作异常和数据冗余在网状,层次,面向对象的模型也存在。,什么原因使得关系产生操作异常和数据冗余呢?原因:关系模式中的属性之间依赖问题;这就是引入属性之间函数依赖的原因。现在采用函数依赖的概念,利用分解方法,将R 分解两个等价的关系:R1(TNAME,ADDR)R2(TNAME,C#,CNAME),数据冗余大减,上述情况的异常消除。关系模式如何分解;分解到一个什么程度为好?将是本章讨
4、论的问题。,R1,R2,第二节 函数依赖,一、函数依赖(Functional Dependency 简称FD)的定义定义1:设有关系模式R(U),U=A1,A2,An,若对R的所有具体关系r都存在:对于每一个X值,都有唯一的Y值与之对应,则称 X 函数决定 Y;或说 Y 函数依赖于X,记为:,定义2:设有关系模式R(A1,A2,An),和 均A1,A2,An的子集,r是R 的任一具体的关系(R-型,r值),t1和t2是r中任意两个元组,若由 导致,则称 函数决定,或说 函数依赖于,记为:,注:(1)FD是对R一切可能的当前值r定义的,不是针对某个特定关系。(2)FD是语义范畴的概念,只有通过属
5、性之间的语义来确定是否存在函数依赖关系,不能用数学方法推导或证明。它是现实世界中属性之间客观存在或设计者人为强制相结合的产物。例:若设计者限定:无同名同姓;则:姓名年龄(反之:年龄 姓名),若有同名同姓:则,姓名 年龄。(3)中,称为决定的因素,只要 取一个值,则有 唯一的值与之对应。,二、函数依赖与属性间联系的关系设关系模式R,则:(1)如果,之间是1-1联系,则存在:和,即,相互函数依赖 记为。(2)如果,之间是 m-1联系,则存在,。(3)如果X,Y之间是n-m 联系,则X,Y 之间不存在函数依赖,即,.结论:根据关系r当前值,可从属性间的联系入手来决定函数依赖是否存在。,例:已知关系r
6、如下,r,下列函数依赖中,关系r满足哪些依赖?,a、ABb、(A,B)Dc、C(B,D,E)d、EAe、AE,三、关键字(键、码)用FD概念精确定义关键字定义:设关系模式R(A1,A2,An),F是R上的函数依赖集,X是(A1,A2,An)的一个子集,如果:(1)XA1,A2,An且(2)在X中不存在真子集 Y,使得YA1,A2,An成立,则称X是R的候选关键字。注:条件(1)表示X能唯一决定一个元组。条件(2)表示X是满足(1)而无多余的属性集。,例:关系模式R(学号,姓名,性别,年龄)中,按语义:学号姓名 学号性别 学号年龄 学号(学号,姓名,性别,年龄)学号是R一个候选关键字。也可说明:
7、(学号,姓名)也可决定R中的全部属性,但(学号,姓名)不是候选关键字。(学号,姓名)存在真子集:“学号”可以决定全部属性;“姓名”属性多余。说明:主属性:包含在候选关键字中的属性。非主属性:不包含在候选关键字中的属性。,四、函数依赖的分类,根据不同性质,函数依赖分类:,完全函数依赖部分函数依赖传递函数依赖,1、完全函数依赖与部分函数依赖定义:在关系模式R(U)中,如果,并且对 的任何一个真子集,都有 则称 完全函数依赖于,记作。如果对 某个真子集,有,则称 对 的函数依赖是部分的函数依赖,记作:。,例:关系模式SC(学号,课程号,成绩)中,显然:学号 成绩,课程号 成绩,而:(学号,课程号)成
8、绩,可见:(学号、课程号)是候选关键字:学号,课程号是主属性;成绩为非主属性。又如:关系模式R(学号,课程名,系名)中:学号系名,课程名 系名,(学号,课程名)系名.,f,p,注:只有决定因素是组合属性,才存在部分函数依赖,当决定因素是单属性时,只能是完全函数依赖。,2、传递函数依赖定义:在关系模式R(U)中,如果,且,则称Z传递函数依赖于,记作:。注:当条件 不成立时,即,则,实际上是直接函数依赖而非传递函数依赖。,例:在关系模式R(学号,学生姓名,系名,系主任名)中。学号学生姓名 学生姓名系名(设无同名同姓)则:学号系名是直接函数决定再:学号系名,系名 学号,系名系主任名,则有:学号 系主
9、任名。,t,五、函数依赖的逻辑蕴涵,有时需要从一些已知的FD去判断另一些FD是否成立。如:已知F=AB,BC在模式R中成立,那么AC在R中是否成立。这个问题称为逻辑蕴涵问题。定义:设F 在关系R上成立的函数依赖集,XY是一个其他的FD(XR,YR)。如果从F中的函数依赖能推出XY,则称F逻辑蕴涵XY,记为:F|XY。,定义:被F函数蕴涵的函数依赖的全体构成的集合称为F的闭包(closure),记为:F+=xY|FXY一般,F F+,若F=F+则称F是函数依赖的完备集。,值得注意:依据F计算F+是很麻烦的,即使F不大,F+也可能很大。如:有关系R(X,Y,Z)其函数依赖集F=XY,YZ则,共有4
10、3个依赖,这些函数依赖怎么出来?待学习了函数依赖的推理规则,再回答此,问题,第三节 F D 公理,目的:确定函数依赖的逻辑蕴涵。即从给定的F中的函数依赖,推出F+中的函数依赖。也就是说给定了F和,判断是 否在F+中。为此,要有一套推理规则。,一、Armstrong 公理 设有关系R(A1,A2,An)和属性全集U=A1 A2An X,Y,Z,W均是U的子集;F是U上的一个函数依赖集,推导规则是:A1 自反性(Reflexivity):若,则F逻辑蕴涵(平凡的函数依赖)A2 增广性(Augmentation):若F逻辑蕴涵,则F逻辑蕴涵A3 传递性(Transitivity):若F逻辑蕴涵,F逻
11、辑蕴涵:,例:设R(C,S,Z),其中:C为城市名,S为街名,Z为邮编,给定F=CSZ,ZC 即函数依赖图如下:,由Armstrong公理,有(1)ZC(已知)说明:ZC逻辑蕴涵F+中。(2)SZCS(由(1)和 A2增广性)说明:SZCS 逻辑蕴涵在F+中。(3)CSZ(已知)(4)CSCSZ(由(3)和A2增广性)说明:CSCSZ 在F+,也说明 CS是R 的一个候选关键字。(5)SZCSZ(由(2)和A2增广性,或由(2),(4)和A3传递性)说明:SZCSZ 在F+中,也说明 SZ 是R 的另一个候选关键字。注:可以证明候关键字:CS 和 SZ 中没有多余的属性存在。,说明:通过公理可
12、以推出F中的隐含的FD,尤其可推出关系R的候选关键字。能否保证由公理推出的函数依赖都是正确的,即所推出的函数依赖都是否 都属于F+?公理的正确性。正确性:只要F的FD为真,由公理推出的FD也为真,则推出的FD都由F+逻辑蕴涵。若公理正确,求F+,则可根据F通过公理推出所有的函数依赖。属于F+中函数依赖是否都能够由公理通过F中的FD推出?公理完备性。,定理:Armstrong公理是正确的,即若 是由F通过公理推出的,那么 在F+中。,证明:用FD定义证明(1)自反性:设r是R的任意一个关系,t1和t2是r任意的两个元组。若,则在t1和t2中的 的任何子集也必相等 由条件:必有 由FD定义可知:,
13、(2)增广性:设t1,t2,r的含义同上采用反证法:假定结果不成立:,即:但 由 设:或 若 则与已知的 相矛盾(,)若 则与假设的 相矛盾 增广性是正确的,(3)传递性:设t1,t2,r的含义同上采用反证法:假设结果不成立:即 X Z 即 但 若 则与条件 相矛盾(则,但由上),若 则与条件 相矛盾(,则)传递性正确,推论:由阿氐公理可以得出如下推论:(1)合并规则:若,成立,则 成立(2)分解规则:若 成立,则,成立(3)伪传递规则:若,成立,则 成立,证明:用公理证明,(1)(已知)(2)(3)(已知)(公理A2)(公理A1)(公理A2)又(已知)同理(公理A1)(已知)(公理A2)(已
14、知)(公理A3)(公理A3)(公理A3)同理(公理A3),例:判断下列推论是否正确,若正确给出相关证明;若错误,试举出一反例说明(1)如果ABC,则BC(2)如果ABC,则AB,或AC(3)如果AB 并且BCD,则ABCD解:(1)错误(2)错误(3)正确,R,R,AB ABCBC又 BCD ABCD(公理A3),R 满足ABC 但B C;R 满足ABC 但A C,A B,说明:通过规则A1,得出平凡的FD概念:对于函数依赖,若,则称 是平凡的函数依赖;若,则为非平凡的 FD。如:AA,A是平凡FD.平凡FD总是成立的,对A的语义无影响,对模式设计也没有影响。一般不考虑平凡FD,根据推论中合并
15、和分解规则:得出 推论:若A i(i=1,2,n)是关系模式R 的属性集则 XA1 A2An成立的充分必要条件是XA i(i=1,2,n)均成立。,属性集的闭包概念定义:设有关系模式R(A1,A2,An),U=A1,A2,An;F是U上的一个函数依赖集,则称所有用公理从F推出的函数依赖 中的Ai的属性集合为X 的属性闭包,记为。即:=Ai用阿氐公理从F推出 XA i。显然:,例:设关系模式R(A,B,C),R 的FD集 F=AB,BC 则:C+=C(CC)B+=BC(由BB,BC)A+=ABC(由AA,AB,BC;AABC)A 是R的侯选关键字 可见:计算属性闭包 比从F计算F+要简单得多。下
16、列定理告诉我们判断:从 一眼看出某一函数依赖是否是用阿氐公理从F推出。定理:设F是关系模式R(A1,A2,An)的FD集,U=A1,A2,An。若,则 是用阿氐公理从F推出的充要条件是。,二、Armstrong公理是完备的。证明见书(证明:不能从F通过公理推出的FD不在F+中)Armstrong公理完备性告诉我们两个重要结论:(1)所有由F逻辑蕴涵的 的右端属性A的集合称为 的属性闭包。(与 定义等价)(2)用阿氐公理从F推导出来的所有FD的集合是F的闭包F+(与F+定义等价:F+是由F逻辑蕴涵的所有FD的集合)可见:函数依赖公理和函数依赖的逻辑蕴涵之间有某种等效关系。,三、属性集闭包的计算计
17、算F+的目的:确定某一函数依赖 是否由F逻辑蕴涵,即它是不是成立。公理的完备性说明:通过计算,若 则 是由阿氐定理从F推出,则 是成立的。这就说明:则 成立。因此,把计算F+转化为 计算,可达到同样的目的。,算法:求属性集 在F上的属性闭包。输入:关系模式R的全部属性集U,F为U上的函数依赖集输出:在F上的属性闭包方法:按下列规则计算;,(1)置初值(2)其中A是这样的属性:在F中寻找尚未用过的左边是 的子集的函数依赖:其中:在Z中寻找 中未出现过的属性集合A;若无这样的A则转(4),否则:(3)判断是否有,若是则转(4),否则转(2)(4)输出,即为上述方法计算步骤是很有限的,因为U,X,F
18、是有限集。,例:设函数依赖集F=ABC,DEG,CA,BEC,BCD,CGBD,ACDB,CEAG 试用算法,求(BD)+,解:设=BD(1)=BD(2)在F中找左边是BD子集的FD,只有:DEG,显然(i=0)接下来在F中找左边是BDEG子集的FD,(但用过的不再考虑):BEC,显然(i=1)又在F中找左边是BCDEG的子集的FD:CA,BCD,CGBD,CEAG 于是:BCDEGABDG(不考虑用过的FD),在 中未出现的属性是A 此时,虽然,但发现 已包含了全部属性,所以不再计算下去。若即使计算下去,很快发现 或再也找不到在 中未出现的属性。(BD)+=ABCDEG,说明:判断计算终止的
19、4种方法:(1);(2)当 包含了全部属性;(3)在F中FD的右边属性中再也找不到 中未出现过的属性;(4)在F中未用过的FD的左边属性已经没有 的子集。算法计算正确性见书。,说明:利用 求R的候选关键字:上例:由于(BD)+=ABCDEG(B,D)可能是R的候选关键字;(B,D)是否一定是R候选关键字,则还要看(B,D)是否存在决定全部属性的 真子集:即(B)+ABCDEG D+ABCDEG 求B+求D+=B D+=DEG=B D也不是真子集 B+=B B不是真子集(B,D)是R的一个候选关键字怎么找出R的全部候选关键字呢?(下面介绍求候选关键字的理论),四.FD集的等价和覆盖(求F 的最小
20、集)定义:设F和G是两个函数依赖集,若F+G+则称F和G等价;如果F和G等价,则说F覆盖G,同时G覆盖F。引理1:设F和G是函数依赖集,则F+G+的充分必要条件是F G+且G F+。证明略。这说明,检查F和G是否等价并不困难,只要检查 F G+且G F+是否成立。检查F G+是否成立,即F中的每一个FD是否属于G+。例如:对于X Y F,则在G上计算X+,看是否满足Y X+,若满足,则X Y G+。继续检查其他所有依赖,若全部满足,则F G+。同理,对G中每个依赖作同样的处理来检查G F+才能确定F+=G+.引理2:每一个函数依赖集F都可以由一个右端只有单个属性的函数依赖集G所覆盖。证明:设G
21、由行为X A(A为单属性)的函数依赖组成。AY且X Y在F中。此时,显然能从X Y按分解规则导出X A,从而有G F+。,.,反之,如果YA1A2An,而且X A1,X A2,X An在G中,可根据合并规则得:X A1An,因而有F G+。由此得:FG,即F被G覆盖。在研究FD时,它的最小集是很有用处的。定义:对于给定的一个函数依赖集F,当满足下列条件时,称为F的最小集,记为F(最小集也称为最小覆盖)。(1)F 的每个依赖的右部都是单个属性;(2)对于F 的任一函数依赖X A来说,F X A与F 都不等价;(3)对于F 的任一函数依赖X A来说,(F X A)U Z A与F 都不等价,其中Z为
22、X的任一子集。这个定义中:条件(1)保证了每个依赖的右边都是单属性 条件(2)保证在F中不存在多余的依赖 条件(3)保证在F中的每一个依赖的左边没有多余的属性,定理:每一个函数依赖集F都与它的最小依赖集F 等价这个定理的证明按最小依赖集的定义考虑其三个条件,证明的过程也是计算最小集的过程。证明过程见书。,例:设FAB C,C A,BC D,ACD B,D EG,BE C,CG BD,CE AG求F 解:按最小覆盖依赖集的定义,分别考虑三个条件。(1)用分解规则,将F中所有的FD变为右边是单属性的依赖AB C,C A,BC D,ACD B,D E,D G,BE C,CG B,CG D,CE A,
23、CE G(2)去掉F中函数依赖左边多余的属性方法:逐个检查F中左边非单属性的依赖,如:XY A,若判Y是否为多余属性,只要在F中求X+,若X+包含A,则Y为多余属性,否则Y不多于,依法判F中其它FD。考察:ACD B(CD)+CDAEGBA为多余属性,应去掉,即用CD B代替ACD B,再考察:CE A(C)=CA(C A)E为多余属性,用C A代替CE AAB C,C A,BC D,CD B,D E,D G,BE C,CG B,CG D,C A,CE G(3)去掉F中多余的依赖方法:从F中的第一个FD开始,将它从F中去掉(设为X Y),然后从剩下的依赖求X,看X是否包含Y,若包含,则X Y是
24、多余的,应去掉,这样依次做下去。,(1),显然:上面F中有两个C A,应去掉一个.考察;CG B先去掉CG B则:CG D保留(CG)CGD(CG D)(CG)CGDB(CD B)CG B为多余FD。得:FAB C,C A,BC D,CD B,D E,D G,BE C,CG D,CE G 注:求出的F不是唯一的。,注:依F中的顺序不同,则F是不同的若先考察:CD B(CD)CDG(D G)(CD)CDGB(CG B)CD B多余.再考察:CG D(CG)CGB(CG B)(CG)CGBD(BC D)CG D 多余另一个FAB C,C A,BC D,DC E,D G,BE C,CG B,CE G
25、,(1),(1),(2),(2),(2),(1),第四节 关系模式的分解,一、关系模式分解中的问题1模式分解的目的为了消除更新异常(插、删、改)和减少数据冗余,设计一个较好的关系模式。2模式分解的定义定义:设有关系模式R(A1,A2,A3,An),Ri(i=1,2,k)是R的一些属性子集,R1R2Rk=U 则称用=R1,R2,Rk代替R的过程称为关系模式R 的分解。注:关系模式的分解,不仅仅是属性集合的分解,它是对模式上的函数依赖集以及关系模式当前值的分解的具体表现。,例,设关系模式(其中S#为学号,SD为系名,MN为系主任名),R中当前值的关系r如下:,关系r,若不分解R,存在的问题:删除异
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 原理 应用 丁忠俊 第四 关系 理论
链接地址:https://www.31ppt.com/p-6166816.html