第十二章_数据库教案关系数据理论(续1)_第1页
第十二章_数据库教案关系数据理论(续1)_第2页
第十二章_数据库教案关系数据理论(续1)_第3页
第十二章_数据库教案关系数据理论(续1)_第4页
第十二章_数据库教案关系数据理论(续1)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据依赖的公理系统,数据依赖的公理系统是模式分解算法的理论基础 Armstrong公理系统: 函数依赖的一个有效而完备的公理系统 逻辑蕴含: 对于满足一组函数依赖F的关系模R, 其中任何一个关系r, 若函数依赖XY都成立, 则称F逻辑蕴含XY 一套推理规则(Armstrong公理系统): 可以求得给定关系模式的码, 可以从一组函数依赖求得蕴含的函数依赖,数据依赖的公理系统,Armstrong公理系统: 设U为属性集总体, F是U上的一组函数依赖, 于是有关系模式R, 对R来说有以下的推理规则 A1 自反律: 若YXU, 则XY为F所蕴含 A2 增广律: 若XY为F所蕴含, 且ZU, 则XZYZ 为F所蕴含 A3 传递律: 若XY和YZ为F所蕴含, 则XZ为F所蕴含 定理1: Armstrong推理规则是正确的, 即如果F成立, 则由F出发, 根据Armstrong公理导出的函数依赖总是正确的,数据依赖的公理系统,证明1: 设YXU 对R的任一关系r中的任意两个元组t, s 若tX=sX, 由YX 可得tY=sY 所以XY成立 证明2: 设XY为F所蕴含, 且ZU 对R的任一关系r中的任意两个元组t, s 若tXZ=sXZ, 则有tX=sX和tZ=sZ 又XY成立, 则有tX=sX和 tY=sY 所以tYZ=sYZ, 所以XZYZ为F所蕴含,数据依赖的公理系统,证明3: 设XY及YZ为F所蕴含 对R的任一关系r中的任意两个元组t, s 若tX=sX, 由XY可得tY=sY 又YZ成立, 则有tZ=sZ 所以XZ为F所蕴含 根据上述推理规则得到另外的推理规则 1合并规则: 若XY 和XZ, 则有XYZ 2伪传递规则: 若XY和 WYZ, 则有XWZ 3分解规则: 若XY及ZY, 则有XZ,数据依赖的公理系统,引理1: XA1 A2. Ak成立的充分必要条件是X Ai成立(由合并规则和分解规则可以证明) 定义2: F的闭包 在关系模式R中为F所蕴含的函数依赖的全体, 记作F+ 定理2: Armstrong公理系统是有效的、完备的 有效的: 指由F出发, 根据Armstrong公理导出的每个函数依赖一定在F+中(由定理1可证明) 完备的: 指F+中的每个函数依赖必定可由F出发, 根据Armstrong公理推导出来,数据依赖的公理系统,由定理2可知, 理论上是可以求得F+的, 如果有F+, 判断XY是否属于F+是非常容易的, 但实际上由F求F+有时几乎是不可能做到的, 例如从 F=XA1 , XA2 , XAn 出发可以推导出2n个函数依赖 定义3: 设F为属性集U上的一组函数依赖, X U, XF+=A|X A能由F根据Armstrong公理导出, XF+称为属性集X关于函数依赖集F的闭包 引理2(由引理1得出):设F为属性集U上的一组函数依赖, X,Y U, XY能由F根据Armstrong公理导出的充分必要条件是Y XF+,数据依赖的公理系统,判断XY是否能由F根据Armstrong问题, 转化为求XF+, 判断Y是否为XF+的子集问题 求XF+算法(输入X, F, 输出XF+) (1)令X(0)=X, i=0 (2)求B, B=A|(v)(w)(v wFv X(i)Aw) (3) X(i+1)=BX(i) (4)判断X(i+1)=X(i) (5)若不等, i=i+1, 返回(2) (6)若相等或X(i)=U, XF+ =X(i),结束,数据依赖的公理系统,例子: 已知关系模式R, U=A, B, C, D, E, F=AB C, B D, C E, EC B, AC B 求(AB)F+ (1)X(0)=AB, i=0 (2)求B, B=CD (3) X(1)=BX(0)=ABCD (4)因为X(1)X(0), 所以再找出左部为ABCD子集的那些函数依赖 (5)B=CDBE (6) X(2)=BX(1)=ABCDE (AB)F+ =ABCDE,数据依赖的公理系统,定义4: 设F, G为两个函数依赖集, 如果F+=G+, 则称F和G是等价的, 也称F覆盖G, 或称G覆盖F, 也可以说F和G互相覆盖 引理3: F+=G+的充分必要条件为FG+和GF+ 证: 必要性 F+=G+F+ G+ G+ F+ 所以 F G+ G F+ 充分性 F G+则F+ (G+ )+, 但(G+ )+= G+ 故F+ G+ 同理可证 G+ F+ 所以F+=G+,数据依赖的公理系统,引理3给出了测试函数依赖集F和G是否等价的方法: 测试FG+和GF+是否成立 例如: 测试FG+ 对每个函数依赖XY F, 测试它是否在G+中 计算X关于G+ 的闭包 , 然后测试Y 定义5: 如果函数依赖集F满足下列条件, 则称F为一个极小的函数依赖集, 也称最小覆盖 (1) F中的每个函数依赖的右部为单属性 (2) F中不存在这样的函数依赖XA, 使得F-XA 与F等价,数据依赖的公理系统,(3) F中不存在这样的函数依赖XA, 使得F-XA ZA与F等价(Z X) 定理3: 每个函数依赖集F均等价于一个极小的函数依赖集Fm, Fm称为F的最小覆盖 证明: 只要能构造一个满足定义5中3个条件的覆盖Fm, 定理得证 (1) 逐一检查F中的函数依赖XY, 如Y=A1A2.An ,则用XAi | i=1,2., K取代XY (2) 逐一检查XA 令G=F-XA, 若A XG+ 则从F中去掉该函数依赖, 对所有的XA检查并处理后, 的覆盖G, G满足定义5中的(1)(2),数据依赖的公理系统,(3) 检查G中每个函数依赖XA, 设X= B1B2.Bm , 对Bi逐一做下列检查和处理 G与G-XA(X- Bi) A是否等价 如等价, 则以X- Bi取代X, 如不等价, 则X不变 所有的Bi检查完后, 令最后的X为Z 并以G- XA(Z A) 代替G G中每个XA做如此检查后, 设得函数依赖集G 显然G满足定义5中的3项, 故令G为Fm, 即Fm是可构造的,数据依赖的公理系统,关系模式R1和R2, 如果F和G等价, 那么R1的关系一定是R2的关系, 所以在R中用与F等价的依赖集G来取代F是允许的 给定关系模式R, 求候选码 例子: 对于R(ABCDE), F=AB, BC E, EDA求出R的所有候选关键字 如果K是关键字, 则有K U, 所以只要判断KF+ =U 且KF+ U (KK) (CD)F+ =CD (CDE)F+ =CDEAB (CDA)F+ =ABCDE (CDB)F+ =CDBEA,模式分解,有时候为了控制由于冗余带来的问题以及插入和删除等问题要求关系模式满足一定的范型,可以通过模式分解来达到,这一过程称之为规范化(Normalization) 有时候考虑到查询的效率,需要将满足较高范型的关系模式进行合并,这一过程称之为 Denormalization,模式分解,关系模式R(U,F)的一个分解是指 =R1, R2, , Rn, 其中U=ni=1Ui, 并且没有UiUj, 1i,j n, Fi是F在Ui上的投影 Fi是F在Ui上的投影=XY | XYF+XYUi的最小函数依赖集 模式分解的三个定义: 朴素想法: 一个关系分解成多个关系, 相应的原来一个关系中的数据就要分散到多个关系中, 要使分解有意义, 就要求后者不能丢失前者的信息,模式分解,例子: 已知R, 其中U=S#, SD, MN F=S#SD, SD MN, 由于R中存在传递函数依赖S#MN, 会发生更新异常 分解 1=R1, R2, R3 分解后Ri的关系ri是R的关系r在Ui上的投影 S# SD MN r1=S1, S2, S3, S4 S1 D1 张五 r2=D1, D2, D3 S2 D1 张五 r3=张五, 李四, 王一 S3 D2 李四 如果问S1在哪个系学习, 此 S4 D3 王一 时变得无从知道, 丢失了原 来的信息,模式分解,分解 2=R1, R2 S# SD MN r1= S1, D1, S2, D1, S1 D1 张五 S3, D2, S4, ,D3 S2 D1 张五 r2= S1,张五, S2,张五, S3 D2 李四 S3,李四, S4,王一 S4 D3 王一 通过自然连接, 可以恢复r 无损分解(分解具有无损连接性): 不丢失信息 2不能解决插入、删除异常, 由于丢失SDMN,模式分解,分解 3=R1, R2 S# SD MN r1= S1, D1, S2, D1, S1 D1 张五 S3, D2, S4, ,D3 S2 D1 张五 r2= D1,张五, S3,李四, S3 D2 李四 S4,王一 S4 D3 王一 通过自然连接, 可以恢复r 保持函数依赖: 不丢失函数依赖 保持函数依赖又具有无损连接性:,模式分解,通过例子来考察分解后的性质 R 1=R1, R2, R3 有损分解、不保持函数依赖 3=R1, R2 无损分解、保持函数依赖,模式分解,2 ? 结论: 对一个模式的分解是多种多样的, 但分解后产生的模式应与原模式等价, 等价的三个不同定义: 分解具有“无损连接性” 分解要保持函数依赖 分解既要保持函数依赖又要具有无损连接性 定义3: 设=R1,R2, , Rn是R的一个分解, r是R的任意一个值, 如果满足条件r= r1 r2, , rn, 其中ri= Ui (r), 称分解具有无损连接性或简称无损分解,模式分解,定义4: 设=R1,R2, , Rn是R的一个分解, 如果 逻辑蕴含F, 称分解保持函数依赖 关系模式分解的两种准则 只满足无损分解: 最基本的要求, 发同样的查询得到查询结果相等 既满足无损分解又满足保持函数依赖,模式分解,反例: 只保持函数依赖, 而不满足无损分解要求的分解. 关系模式R(ABCD), 设F=A B, C D, 它的分解=R1(AB), R2(CD), 分解无意义 无损分解测试算法: 检测一个分解是否无损分解 输入: 关系模式R(A1, A2, ., An) R上的函数依赖集F R上的分解=R1, R2, . ,Rk 输出: 是无损分解 步骤:,模式分解,(1) 建立n列, k行的矩阵M,属性, 的K个关系模式,A1 A2 . Aj . An R1 R2 Ri . Mi, j Rk,.,.,.,Mi, j= aj 若AiUi bij 若AiUi,模式分解,(2) 对F中的每个函数依赖XY反复进行下面 的检查和处理, 直到M无变化 为止 检查X中的属性所对应的列, 找出X相等的那些行, 如果找到X相等的两行(或多行), 把相应的Y属性对应的符号该为一致, 即如果其中之一为aj, 则其他也改成aj, 如果这两个符号为bij和blj, 将它们统一成bij或blj (3)当M无变化时, 如果M中有一行变成了 a1,a2.,an, 则是无损分解, 否则不是,模式分解,例子: 关系模式R(ABCDE) =R1(AD), R2(AB), R3(BE), R4(CDE), R5(AE) 是R的一个分解, 在R上有下列函数依赖 F=A C, B C, C D, DE C, CE A, 判别是否是无损分解 解: (1)建M (2)对A C检查 b13, b23, b53 b13 对B C检查 b13, b33 b13,模式分解,=R1(AD), R2(AB), R3(BE), R4(CDE), R5(AE) ,模式分解,对C D检查 对DE C检查,模式分解,对CE A检查 再进行下去, M无任何变动, 由于第三行已是全a, 所以是无损分解,模式分解,定理: 算法1可以正确判断一个分解是无损分解 定理: 关系模式R, 分解 =R1, R2具有无损连接性的充分必要条件为 U1U2U1-U2F+或U1U2U2-U1F+ 保持函数依赖分解测试算法: 检测一个分解是否保持函数依赖 输入: , F 输出: 是否保持函数依赖,模式分解,(1) 令G= , 检查G是否覆盖F (2) 对F中的每个函数依赖XY进行下列检查 1)计算X关于G的闭包XG+, 检查Y是否是XG+的子集 为了计算XG+, 不必求出G, 可以分别地, 反复地计算Ui(F) (其中i=1,2,.,k)对XG+所增加的属性 Z=X while Z有改变 do for i=1 to k do Z=Z(Z Ui)F+ Ui),Z中与Ui有关属性,是Ui(F)对XG+增加的属性,模式分解,经反复计算, 直至Z不变 Z是XG+如果YXG+, 则XY G+ 2)如果F中的所有函数依赖都属于G+ ,则保持函数依赖 例子: 关系模式R(ABCD), F=A B, B C, C D, D A, 判别=R1(AB), R2(BC), R3(CD) 是否保持函数依赖 解: U1(F) A B U2(F) BC U3(F) C D,F中的前三个函数依赖已明显在G中, 只要检验D A是否为F所蕴含,模式分解,令 Z=D 第一遍: i=1 ZU1=D A, B = Z不变 i=2 ZU2=D B, C = Z不变 i=3 ZU3=D C, D =D Z=D(DF+ C, D) =D(A,B,C,D C, D) = C, D,模式分解,第二遍: i=1 ZU1=C,D A, B = Z不变 i=2 ZU2=C,D B, C =C Z=C,D(CF+ B, C) =C,D(A,B,C,D B, C)= B,C,D i=3 ZU3=B,C,D C, D =C,D Z=B,C,D(C,DF+ C, D) =B,C,D(A,B,C,D C, D)= B,C, D,模式分解,第三遍: i=1 ZU1=B,C,D A, B =B Z=B,C,D(BF+ A,B) = A,B,C,D Z是全部属性集, 不可能再改变 所以DG+ =A,B,C,D 因为A D G + 所以DA G+ 所以保持函数依赖,模式分解,对数据库设计者来说两种重要的范式: 3NF和BCNF 由于关系规范化要求不同, 出现了不同的范式, 其规范化条件越来越强, 后面的范式可以看成是前面范式的特例, 从关系规范化的发展看来, 有这些范式, 但在规范化时, 不必按此步骤顺序已不不去做, 对于数据库设计者来说1NF和2NF并不重要 一般来说属于3NF而非BCNF的关系模式不是很多, 即使出现了这种关系模式, 对数据库设计者来说, 引起的更新异常往往也不是重要的,模式分解,例子: 关系模式R(C, S, Z), 其中C-city, S-street, Z-zip, R属于3NF而非BCNF 问题: 插入异常(如不知道街道) 规范化: R1(Z,C) R2(S,Z), 都为BCNF 因为(ZCSZ)(ZC-SZ)F+, 但F中的CS Z将得不到保持 R(C,S,Z)还是合理的, 因为撇开街道, 单单表示Z与C的关系在应用中不是很必要的,C S,Z,码,非主属性,模式分解算法,保持函数依赖的3NF范式分解:算法1 对R中的F进行最小化处理 不在F中出现的属性组成一个关系模式,并从U中去掉这些属性 若存在XAF, 有XA=U, 则=R, 终止算法 否则,对于具有相同左部的函数依赖分成一组,假设有K组,记为F1,F2,Fk, Fi的所有属性构成Ui, 若UiUj(ij), 则去掉Ui, 这样得到的一个分解=R1, R2, , Rk构成了R的一个保持函数依赖的分解,模式分解算法,具有无损连接性和保持函数依赖的3NF范式分解:算法2 设X是关系模式R的关键字 通过算法1得到一个分解 = U R* 若存在一个Uj, 有XUj, 则将R*从中去掉 是一个具有无损连接和保持函数依赖的3NF分解,模式分解算法,具有无损连接性的BCNF范式分解:算法3 =R 检查中的每个关系模式是否为BCNF,若是算法终止 设中Ri不属于BCNF, 那么必存在XAFi+(AX), X不是Ri的关键字,对Ri进行分解:=S1,S2, Us1=XA, Us2=Ui

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论