当前位置:文档之家› 第15讲 模式分解

第15讲 模式分解


Sloc D1 D2 D3 D2 D2
1.分解1:R1<Sno, >、R2<Sdept, >、R3<Sloc, >
分解后的DB无法恢复到原来的情况。
表1:R的一个关系r
Sno 99001 99002 99003 99004
Sdept 计算机 电信 自控 电信
Sloc D1 D2 D3 D2
99005
三、保持函数依赖的分解

定义:设ρ={R1<U1, F1>,…, Rk<Uk,Fk>}是R<U,F>的一
个分解,若 F ( Fi ) , 则保持函数依赖。
i 1

k

其中Fi=∏Ui F. 例7: 已知R<U,F>,U={A,B,C},F={A→B,C→B} 判断ρ 1={AC,AB}是否具有依赖保持性? 例8: 已知R<U,F>,U={ABCDEF}, F={A→B,E→A,C→F, CE→D},判断ρ 2={ABE,CDEF}是否具有依赖保持性?
记FDi为 Xi->Ali 1)建立一个n列k行的表。每列对应一个属性Aj ,每行对应一个子 关系模式的属性集Ui 。若Aj属于Ui,则在第i行j列交叉处填上aj, 否则填上bij; 示例 2)对每个FDi做如下操作:找到Xi所对应的列中具有相同符号的那 些行,考察这些行中li列的元素,若其中有ali则全部改为ali,否则 全部改为bmli;m是这些行的行号最小值(若某个btli被更动 ,那 么该表的li列中凡是btli的符号均作相应更改)。 若有一行成为a1,…,an。则算法终止,分解具备无损连接性。 对F中个FD逐一进行上述处理,称为对F的一次扫描。
判断一个分解是否具有无损连接性 方法一: 定理:已知R<U,F>的一个分解 ρ={R1<U1,F1>,R2<U2,F2>}, ρ具有无损连接性的充 要条件是 (U1∩U2)→(U1-U2)∈F+ 或(U1∩U2)→(U2-U1)∈F+ 证明从略。 例3: 已知R<U,F>, U={A,B,C}, F={A→B, C→B}。分解 ρ1={R1(AB), R2(BC)}、分解ρ2={R1(AC), R2(BC)}是否 具备无损连接性?
例9:已知R<U,F>, U={C, T, H, I, S, G}, 最小集F={C→T, CS→G, HT→I, HI →C, HS→I}, 将R分解为3NF且具有函数依赖保持性。
四、模式分解的算法
算法2: 分解为3NF,既具有无损连接性又保持函数依赖 ①设X是R<U,F>的码。R由算法1分解为ρ={R1<U1,F1>, R2<U2,F2>,…, Rn<Un,Fn>},令τ=ρ∪{ R*<X, FX> } ②若有某个Ui, X Ui,将R*从τ中去掉。 ③τ即为所求。
3)比较扫描前后,若表有变化,则返回2);若表无变化,则算法 终止,分解不具备无损连接性。
示例 (第1步)
示例(第2步)
考察C->D:
考察AB->C:
考察D->E:
练习: 设有关系模式R<U,F>, U={E,G,H,I,J}, F={E->I, J->I, I->G, GH->I, IH->E}, 判断ρ= {EG, EJ, JH, IGH, EH} 是否为无损连 接分解。
例4:已知R<U,F>,U={ABCDEF} , F={A→B,C→F,E→A,CE→D } ρ={R1(ABE), R2(CDEF)}是否具备无损连接性?
判断一个分解是否具有无损连接性 方法二: (通用算法)
ρ={R1<U1,F1>,…,RK<UK,FK>}是R<U,F>的一个分解, U={A1,…,An}, F={FD1,…,FDm},并设F是一极小依赖集,
4.key 5.属性闭包 X+ 6.FD集的等价,若F+ =G+ ,则F与G等价 7.最小FD集Fmin 二、R的规范化 1.1NF,2NF,3NF,BCNF 2.R设计原则 三、模式分解 1.无损联接性,检验算法。 2.依赖保持性,检验方法。 3.模式分解的算法
例2:已知关系模式R<U,F>,其中 U={Sno,Sdept,Sloc},F={Sno->Sdept,Sdept->Sloc}. 分析R属于?NF,并分析模式分解中存在的问题。
表1:R的一个关系r
Sno 99001 99002 99003 99004 99005
Sdept 计算机 电信 自控 电信 管理
四、模式分解的算法
算法3(分解法):分解为BCNF,且具有无损连接性。 步骤: ①令ρ={R<U,F>} ②检查:若ρ中所有关系模式均属于BCNF,则算法终止。 ③ 若ρ中Ri<Ui,Fi>不属于BCNF,则必有X→A∈Fi+,且X不是 Ri的码,显然AX是Ui的真子集。对Ri进行分解:{Ri1,Ri2}, 其 中 Ui1=XA, Ui2=Ui-{A}, 用 分 解 {Ri1<Ui1,Fi1 >, Ri2<Ui2,Fi2 >}代替Ri<Ui,Fi>,转②
四、模式分解的算法
算法1(合成法): 将R<U,F>分解为3NF并保持函数依赖的算法 ①对R<U,F>中的函数依赖集F进行极小化处理(处理后 的结果仍记为F); ②找出不在F中出现的属性,把它们构成一个关系模式。 并把这些属性从U中去掉(剩余的属性仍记为U); ③若X→A∈F且XA=U,则ρ={R},算法终止; ④否则,对F按具有相同左部的原则分组,每组函数依 赖 Fi 所 涉 及 的 全 部 属i 性 形 i成 U j 个 属 性 集 Ui ; 若 U Ui U 一 Ui包含于Uj就去掉Ui。 ⑤停止,是3NF且具有依赖保持性。
6.4
模式的分解
模式分解的定义 无损连接分解 保持函数依赖的分解 模式分解的算法
一、关系模式分解的定义
关系模式R<U,F>的一个分解是指 ρ={R1<U1,F1>, R2<U2,F2>,…, Rn<Un,Fn>} 其中U= U1∪U2∪…∪Un ,并且没有Ui Uj, i≠j , Fi是F在Ui上的投影。
一、函数依赖 1.FD定义:若r中任意两个元组t,s,如果t[x]=s[x]导致 t[y]=s[y] ,则x→y。 2.FD的逻辑蕴涵,F+ ={X→Y| X→Y是从F用推理系统推出} 3.Armstrong推理系统 自反,若Y X, 则X→Y 增广,若X→Y 则XZ→YZ 传递,若X→Y,Y→Z, 则X→Z 推论: 合并,若X→Y ,X→Z, 则X→YZ 分解,若X→YZ, 则X→Y,X→Z 伪传递,若X→Y,WY→Z,则XW→Z
模式分解的目标 无损连接
保持函数依赖
达到更高级范式
二、无损连接的分解

引入一个记号:设ρ={R1, R2,…, Rk} 是R<U,F>的一 k 个分解,r是R<U,F>的一个关系。定义mρ(r)= ∏Ri(r) 即mρ(r)是r在ρ中各关系模式上投影的自然连接。
i=1
定义:ρ={R1<U1,F1>,…,Rk<Uk,Fk>}是R<U,F>的一个分解. 若对R的任一关系r都有r = mρ(r),则称具有无损连 接性。简称为无损分解。
例10:已知R<U,F>, U={C, T, H, I, S, G}, 最小集F={C→T, CS→G, HT→I, HI→C, HS→I}, 将R分解为BCNF且为无损分解。
作业:
1.对给定的关系模式R<U,F>,U={A,B,C,D,E,P}, F={A->B, C->P, E->A, CE->D},有如下分解: ρ={R1(ABE), R2(CDEP)} 1)求R的候选码,并判断ρ是否无损 2)R1,R2分别属于第几范式 2. 关系R(ABCDE)满足下列函数依赖: F={A->C, C->D, B->C, DE->C, CE->A} 1)求R的候选码 2)判断ρ={AD, AB, BC, CDE, AE}是否无损连接分解 3)分解R为BCNF,并具有无损连接性
3.分解3: R1 Sno
99001 99002 99003 99004 99005
Sdept
计算机 电信
自控 电信 管理
Sloc D1 D2 D3 D2 D2
R2
分解可恢复, 并且解决了异常。
Sdept Sloc D1 D2 D3 D2
Sdept 计算机 电信 自控 电信 管理
计算机 电信 自控 管理
F在Ui上的投影(记作∏Ui F)是指 函数依赖集合{X→Y| X→Y∈F+∧XYUi}的一个覆盖Fi。 例1:已知R<U,F>,U={A,B,C,D}, F={A->BD, D->C}, 如 果将R分解为R1(U1, F1)和R2(U2, F2), 其中U1={A,B,D}, U2={A,C}, 则F1,F2分别是?
2.分解2: R1 Sno
99001
99002 99003
管理
D2
R2
分解后可以恢复, 但仍然存在插入和删除异常。
Sno Sloc
Sdept
计算机
电信 自控
99001
99002
D1
D2 D3
99004
99005
电信
管理
99004
99005
D2
D2
表1:R的一个关系r
相关主题