当前位置:文档之家› 模式分解补充材料(打印)

模式分解补充材料(打印)

补充阅读材料(例题) 属性闭包的计算例1设关系模式R 的属性集U={A,B,C,D,E,G},F={AB →C,BC →AD,D →E,CG →B}是R 上的函数依赖集.求{A,B}关于F 的闭包,即{A,B}F +。

解: 从X={A,B} 出发,X(0)=AB 。

(1) 左部为X(0)子集的函数依赖只有AB →C ,X(1)=AB ∪C =ABC(2) 左部为X(1)子集而未检查的函数依赖只有BC →AD ,X(2)=ABC ∪AD =ABCD (3) 左部为X(2)子集而未检查的函数依赖只有D →E ,X(3)=ABCD ∪E =ABCDE已经不存在左部为X(3)的子集而未检查的函数依赖。

因此,{A,B}F +={A,B,C,D,E}注意到函数依赖CG →B 没有用上,因为它的左边没有包含在{A,B}F +中。

函数依赖集的最小化例2 设F={A →BC,B →AC,C →A},对F 进行极小化处理解:(1) 根据分解规则,把F 中的函数依赖转化成右部都是单属性的函数依赖集合,分解后的函数依赖集仍用F 表示F={A →B, A →C,B →A, B →C,C →A} (2) 去掉F 中的冗余函数依赖 判断A →B 是否冗余。

设G1={A →C,B →A, B →C,C →A},得 A G1+=AC因+∉1G A B ,所以A →B 不冗余。

判断A →C 是否冗余。

设G2={A →B,B →A, B →C,C →A},得 A G2+=ABC因+∈2G A C ,所以A →C 冗余(以后得检查不再考虑A →C )。

判断B →A 是否冗余。

设G3={A →B, B →C,C →A},得 B G3+=ABC因+∈3G B A ,所以B →A 冗余(以后得检查不再考虑B →A )。

判断B →C 是否冗余。

设G4={A →B, C →A},得 B G4+=B因+∉4G B C ,所以B →C 不冗余。

判断C →A 是否冗余。

设G5={A →B, B →C},得 C G5+=C因+∉5G C A ,所以C →A 不冗余。

由于该例中的函数依赖表达式的左部均为单属性,因而不需要进行第三步的检查。

上述结果为最小函数依赖集,用F m 表示:F m ={A →B, B →C,C →A}若依次按A →B ,B →C 的顺序判定函数依赖是否冗余,则得到最小依赖集:F m2={A →B, B →A, A →C,C →A}。

这说明最小依赖集不唯一,与对各函数依赖FDi 及X →A 中X 各属性的处置顺序有关。

同时注意到,在此例中A 、B 、C 是一一对应的。

例3 求F={AB →C,A →B,B →A}的最小函数依赖集F m解:(1) 将F 中函数依赖都分解为右部为单属性的函数依赖。

显然,F 已满足该条件。

(2) 去掉F 中冗余的函数依赖。

判断AB →C 是否冗余。

设},{1A B B A G →→=,得AB AB G =+1)(∵ +∉1)(G AB C , ∴ AB →C 不冗余。

判断A →B 是否冗余。

设},{2A B C AB G →→=,得A A G =+2)(∵ +∉2)(G A B , ∴ A →B 不冗余。

判断B →A 是否冗余。

设},{3B A C AB G →→=,得B B G =+3)(∵ +∉3)(G B A , ∴ B →A 不冗余。

经检验后得函数依赖集仍然为F 。

(3) 去掉各函数依赖左部冗余得属性。

本题只需考虑AB →C 的情况。

方法一:在决定因素中去掉B ,若+∈F A C ,则以A →C 代替AB →C 。

求得:ABC A F =+。

∵ +∈F A C ∴ 以A →C 代替AB →C 。

故,F m ={A →C, A →B,B →A}方法二:也可在决定因素中去掉A ,若+∈F B C ,则以B →C 代替AB →C 。

求得:ABC B F =+。

∵ +∈F B C ∴ 以B →C 代替AB →C 。

故,F m ={B →C, A →B,B →A}例4 F={BE →G,BD →G,CDE →AB,CD →A,CE →G,BC →A,B →D,C →D},求Fmin. 解: (1) 先分解右边F={BE →G,BD →G,CDE →A, CDE →B,CD →A,CE →G,BC →A,B →D,C →D} (2) 判断每个函数依赖,是否冗余。

F={ BD →G, CDE →B,CD →A,CE →G, B →D,C →D} (3) BDG B F =+, 包含G ,用B →G 代替BD →GD D F =+,未包含G ,不能用D →G 代替BD →G CEBDGA CE F =+)(,包含B ,用CE →B 代替CDE →B CDA C F =+)(,包含A ,用C →A 代替CD →AFmin ={B →G,CE →B,C →A,CE →G,B →D,C →D } 候选码的确定确定关系模式的候选码是进行规范化分析的出发点,有下述准则可以使用: 关系R(U,F)中,F 是最小函数依赖集。

准则1:如果属性A 只在F 中各函数依赖的左端出现,则A 必是码中的属性; 准则2:如果属性A 只在F 中各函数依赖的右端出现,则A 必不是码中的属性; 确定候选码的步骤是:(1) 对于关系模式R(U,F),求F 的最小函数依赖集,仍用F 表示。

(2) 根据准则1,确定码中必须有的属性集(设为M)。

(3) 根据准则2,去掉码中没有的属性集。

(4) 确定余下的属性集(设为W)。

(5) 从M 开始,令K =M ,如果U K F =+,K 就是候选码。

否则从W 选择属性加入到K 中,直到U K F =+,K 就是候选码。

(6) 注意可能有多个候选码。

例5 设R(U,F),U=ABCDEG,F={BE →G,BD →G,CDE →AB,CD →A,CE →G,BC →A,B →D,C →D},求R 的码。

解:(1) 求得 Fmin ={B →G,CE →B,C →A,CE →G,B →D,C →D } (2) 只在左端出现的属性CE (M=CE)。

(3) 只在右端出现的属性ADG 。

(4) 余下的属性B (W=B)。

R 的候选码只可能是CE 、CEB 。

经计算ABCDEG CE F =+)(,因此R 的码是CE 。

模式分解对模式分解的两个基本要求(1) 避免信息丢失:无损连接性; (2) 避免数据关系丢失。

分解具有无损连接性和分解保持函数依赖是两个相互独立的标准。

无损分解决定一个关系是否可分解,保持数据依赖决定一个关系分解的好坏。

算法6.2 判别一个分解的无损连接性若},,,,{111><><=k k k F U R F U R ρ是R<U ,F>的一个分解,},,,{21n A A A U =,},,,{21m FD FD FD F =,不妨设F 是一极小依赖集,记i FD 为i A X i 1→。

(1) 建立一张n 列k 行的表。

每一列队应一个属性,每一行对应分解中的一个关系模式。

若属性j A 属于i U ,则在j 列i 行交叉处填上j a ,否则填上ij b ;(2) 对每一个i FD 做下列操作:找到i X 所对应的列中具有相同符号的那些行。

考察这些行中i l 列的元素,若其中有i l a ,则全部改为i l a ,否则全改为i ml b ,m 是这些行的行号最小值。

如在某次更改后,有一行成为n a a a ,,,21 。

则算法终止。

ρ具有无损连接性,否则ρ不具有无损连接性。

对F 中m 个FD 逐一进行一次这样的处置,称为对F 的一次扫描。

(3) 比较扫描前后,表有无变化。

如有变化,则返回第(2)步。

否则终止算法。

定理 6.5 对于R<U,F>的一个分解},,,{222111><><=F U R F U R ρ,如果+∈-→⋂F U U U U 2121或+∈-→⋂F U U U U 1221,则ρ具有无损连接性。

定义6.19 若+=+⎪⎭⎫⎝⎛=⋃i k i F F 1,则R<U,F>的分解},,,,{111><><=k k k F U R F U R ρ保持函数依赖。

引理6.3 给出了判定两个函数依赖集等价的可行算法。

因此引理6.3 也给出了判别R 的分解是否保持函数依赖的方法。

例 6 关系模式R={CITY ,ST,ZIP},其中CITY 为城市,ST 为街道,ZIP 为邮政编码,F={(CITY ,ST) →ZIP,ZIP →CITY}。

如果将R 分解成R1和R2,R1={ST,ZIP},R2={CITY,ZIP},检查分解是否具有无损连接和保持函数依赖。

解:(1) 检查无损连接性方法一:求得R1∩R2={ZIP} ; R2-R1={CITY}.∵ (ZIP →CITY)∈F + (即 R1∩R2→ R2-R1∈F +)∴ 分解具有无损连接性 方法二:构造判定矩表T ,如下图:R1(ST,ZIP) 由FR1(ST,ZIP)(2) 检查分解是否保持函数依赖求得 ΦF R =)(1π ; }{)(2CITY ZIP F R →=π。

∵ ()()+++≠→=F CITY ZIP F F R R }{)()(21ππ∴ 该分解不保持函数依赖。

可求得R 的两个候选码为(ZIP,ST),(CITY ,ST)。

只在左端出现的属性为:ST ,候选码必包含ST ;其它属性为:CITY 、ZIP 。

因 ST ST F =+)(,),,(),(ZIP ST CITY ST ZIP F =+,),,(),(ZIP ST CITY ST CITY F =+故 R 有两个候选码:(ZIP,ST),(CITY ,ST)例7 设关系模式R 的属性集U={A,B,C,D,E},F={A →B,B →C,D →E}是R 上的函数依赖集,ρ={R1(A,B,C),R2(A,D,E)}是R 上的一个模式分解。

(1) 求函数依赖集F 的闭包F +中非平凡的函数依赖子集F *;(2) 求函数依赖集F *在关系模式R1、R2上的投影; (3) 判断分解ρ是否具有无损分解;(4) 判断分解ρ是否具有函数依赖保持性。

解:(1) 求函数依赖集F 的闭包F +中非平凡的函数依赖子集F *对F 中的函数依赖A →B ,求属性集A 关于F 的闭包 从X={A} 出发,X(0)=A 。

左部为X(0)子集的函数依赖只有A →B ,X(1)=A ∪B =AB左部为X(1)子集而未检查的函数依赖只有B →C ,X(2)=AB ∪C =ABC 左部为X(2)子集而未检查的函数依赖已不存在,故},,{C B A A F =+ 同理,},{C B B F =+,},{E D D F =+由},,{C B A A F =+,},{C B B F =+,},{E D D F =+得},,,{*E D C B C A B AF →→→→= (2) 求函数依赖集F *在关系模式R1、R2上的投影;因R1(A,B,C),},,,{*E D C B C A B AF →→→→=,所以},,{1C B C A B A F →→→= 因R2(A,D,E),},,,{*E D C B C A B A F →→→→=,所以}{2E D F →= (3) 判断分解ρ是否具有无损分解 方法一:构造判定矩表T ,如下图:由F由F方法二:}{21A R R =⋂,},{21C B R R =-,由已知可得A →B ,A →C ,因而A →BC ,即+∈-→⋂F R R R R 2121,故分解ρ具有无损连接性。

相关主题