第16讲 模式分解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三,保持函数依赖的分解
定义: 定义:设ρ={R1<U1, F1>,…, Rk<Uk,Fk>}是R<U,F>的一 是R<U,F>的一 个分解, 保持函数依赖. 个分解,若 F = ( U Fi ) , 则ρ保持函数依赖. 其中F 其中Fi=∏Ui F.
i =1 + k +
已知R<U,F>,U={A,B,C},F={A→B R<U,F>,U={A,B,C},F={A→B, 例7: 已知R<U,F>,U={A,B,C},F={A→B,C→B} 判断ρ1={AC,AB}是否具有依赖保持性? ρ1={AC,AB}是否具有依赖保持性 判断ρ1={AC,AB}是否具有依赖保持性? 已知R<U,F>,U={ABCDEF}, 例8: 已知R<U,F>,U={ABCDEF}, F={A→B,E→A,C→F, CE→D},判断ρ2={ABE,CDEF}是否具有依赖保持性? ρ2={ABE,CDEF}是否具有依赖保持性 CE→D},判断ρ2={ABE,CDEF}是否具有依赖保持性?
Sdept 计算机 电信 自控 电信 管理
Sloc D1 D2 D3 D2 D2 R2
分解可恢复, 分解可恢复, 并且解决了异常. 并且解决了异常.
Sdept Sloc D1 D2 D3 D2
Sdept 计算机 电信 自控 电信 管理
计算机 电信 自控 管理
二,无损连接的分解
引入一个记号: 引入一个记号:设ρ={R1, R2,…, Rk} 是R<U,F>的一 的一 k 个分解, 的一个关系. 个分解,r是R<U,F>的一个关系.定义mρ(r)= 的一个关系 定义m ∏Ri(r) i=1 中各关系模式上投影的自然连接. 即mρ(r)是r在ρ中各关系模式上投影的自然连接. 是 中各关系模式上投影的自然连接 定义:ρ={R1<U1,F1>,…,Rk<Uk,Fk>}是R<U,F>的一个分解. R<U,F>的一个分解 的一个分解. 定义 : 若对R的任一关系r都有r=m ,则称ρ 若对R的任一关系r都有r=mρ(r),则称ρ具有无损连接 简称ρ为无损分解. 性.简称ρ为无损分解.
四,模式分解的算法
算法1 合成法) 算法1(合成法): R<U,F>分解为 NF并保持函数依赖的算法 分解为3 将R<U,F>分解为3NF并保持函数依赖的算法 R<U,F>中的函数依赖集 进行极小化处理( 中的函数依赖集F ① 对 R<U,F> 中的函数依赖集 F 进行极小化处理 ( 处理后 的结果仍记为F 的结果仍记为F); 找出不在F 中出现的属性, 把它们构成一个关系模式. ② 找出不在 F 中出现的属性 , 把它们构成一个关系模式 . 并把这些属性从U中去掉(剩余的属性仍记为U 并把这些属性从U中去掉(剩余的属性仍记为U); X→A∈F且XA=U,则ρ={R},算法终止; ③若X→A∈F且XA=U,则ρ={R},算法终止; ④ 否则, 对 F 按具有相同左部的原则分组, 每组函数依 否则 , 按具有相同左部的原则分组 , 赖 Fi 所 涉 及 的 全 部 属i 性 形 i成U j 个 属 性 集 Ui ; 若 U Ui U 一 包含于U 就去掉U Ui包含于Uj就去掉Ui. 停止, NF且具有依赖保持性 且具有依赖保持性. ⑤停止,是3NF且具有依赖保持性.
例2:已知关系模式R<U,F>,其中 已知关系模式R<U,F>,其中 R<U,F>, {Sno,Sdept,Sloc},F={Sno->Sdept,SdeptU={Sno,Sdept,Sloc},F={Sno->Sdept,Sdept->Sloc}. 分析R属于?NF,并分析R的各种模式分解方法. 分析R属于?NF,并分析R的各种模式分解方法.
例10:已知 :已知R<U,F>, U={C, T, H, I, S, G}, , 最小集F={C→T, CS→G, HT→I, HI→C, HS→I}, 最小集 , 分解为BCNF且为无损分解. 且为无损分解. 将R分解为 分解为 且为无损分解
作业: 作业:
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)分解 为BCNF,并具有无损连接性 分解R为 分解 ,
ห้องสมุดไป่ตู้
表1:R的一个关系r
Sno 99001 99002 99003 99004 99005 2.分解2: 分解2 R1 Sno
99001 99002 99003 99004 99005
Sdept 计算机 电信 自控 电信 管理
Sloc D1 D2 D3 D2 D2 R2
分解后可以恢复, 分解后可以恢复, 但仍然存在插入和删除异常. 但仍然存在插入和删除异常.
判断一个分解是否具有无损连接性 方法一: 方法一: 定理:已知R<U,F> R<U,F>的一个分解 定理:已知R<U,F>的一个分解 ρ具有无损连接性的充 ρ={R1<U1,F1>,R2<U2,F2>}, ρ具有无损连接性的充 要条件是 (U1∩U2)→(U1 (U1∩U2)→(U1-U2)∈F+ (U1∩U2)→(U2 证明从略. 或(U1∩U2)→(U2-U1)∈F+ 证明从略. 已知R<U,F>, U={A,B,C}, F={A→B, C→B}. 例3: 已知 . 分解ρ1={AB, BC},分解 分解 ,分解ρ2={AC, BC}是否具备无损连 是否具备无损连 接性? 接性? 例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是一极小依赖集 记FDi为 Xi->Ali 1)建立一个 列k行的表.每列对应一个属性 j ,每行对应一个子 行的表. )建立一个n列 行的表 每列对应一个属性A 关系模式的属性集U 属于U ,则在第i行 列交叉处填上 列交叉处填上a 关系模式的属性集 i .若Aj属于 i,则在第 行j列交叉处填上 j, 否则填上bij; 否则填上 2)对每个FDi做如下操作:找到Xi所对应的列中具有相同符号的那 )对每个 做如下操作:找到 些行,考察这些行中li列的元素 若其中有a 则全部改为a 列的元素, 些行,考察这些行中 列的元素,若其中有 li则全部改为 li,否则 全部改为b 是这些行的行号最小值( 全部改为 mli;m是这些行的行号最小值(若某个 tli被更动 ,那 是这些行的行号最小值 若某个b 么该表的li列中凡是 的符号均作相应更改). 列中凡是b 么该表的 列中凡是 tli的符号均作相应更改). 若有一行成为a 则算法终止,分解具备无损连接性. 若有一行成为 1,…,an.则算法终止,分解具备无损连接性. , 中个FD逐一进行上述处理 的一次扫描. 对F中个 逐一进行上述处理,称为对F的一次扫描. 中个 逐一进行上述处理,称为对 的一次扫描 3)比较扫描前后,若表有变化,则返回 );若表无变化,则算法 );若表无变化 )比较扫描前后,若表有变化,则返回2);若表无变化, 终止,分解不具备无损连接性. 终止,分解不具备无损连接性.
一个模式的分解是多种多样的, 一个模式的分解是多种多样的,但是分解后产生的 等价. 模式应与原模式等价 模式应与原模式等价. 对"等价"的三种定义: 等价"的三种定义: 分解具有"无损连接性" 分解具有"无损连接性"; 分解要"保持函数依赖"; 分解要"保持函数依赖" 分解既具有"无损连接性" 保持函数依赖" 分解既具有"无损连接性",又"保持函数依赖".
Sdept 计算机 电信 自控 电信 管理
Sno 99001 99002 99003 99004 99005
Sloc D1 D2 D3 D2 D2
表1:R的一个关系r
Sno 99001 99002 99003 99004 99005 3.分解3: 分解3 R1 Sno
99001 99002 99003 99004 99005
表1:R的一个关系r
Sno 99001 99002 99003 99004 99005
Sdept 计算机 电信 自控 电信 管理
Sloc D1 D2 D3 D2 D2
1.分解1:R1<Sno, >,R2<Sdept, >,R3<Sloc, > 分解1
分解后的DB无法恢复到原来的情况. 无法恢复到原来的情况.
例5:已知 :已知R<U,F>,U={A,B,C,D,E},F={AB->C,C->D, D->E},R的一个分解为 1(A,B,C),R2(C,D),R3(D,E). 的一个分解为R 的一个分解为 . 判断此分解是否具备无损连接性. 判断此分解是否具备无损连接性. 例6:设有关系模式 :设有关系模式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} 是否为无损连接分解. 是否为无损连接分解.
例9:已知 :已知R<U,F>, U={C, T, H, I, S, G}, , 最小集F={C→T, CS→G, HT→I, HI →C, HS→I}, 最小集 , 分解为3NF且具有函数依赖保持性. 且具有函数依赖保持性. 将R分解为 分解为 且具有函数依赖保持性
四,模式分解的算法
算法2 算法2: 无损连接性又 分解为3NF 既具有无损连接性 3NF, 分解为3NF,既具有无损连接性又保持函数依赖 的码. 由算法 分解为ρ={R1<U1,F1>, 由算法1分解为 ①设X是R<U,F>的码.R由算法 分解为 是 的码 R2<U2,F2>,…, Rn<Un,Fn>},令τ=ρ∪{ R*<X, FX> } , = ∪ 若有某个U 中去掉. ②若有某个 i, X Ui,将R*从τ中去掉. 将 中去掉 即为所求. ③τ即为所求. 即为所求
6.4
模式的分解
模式分解的定义 无损连接分解 保持函数依赖的分解 模式分解的算法
一,关系模式分解的定义
关系模式R<U,F>的一个分解是指 的一个分解是指 关系模式 ρ={R1<U1,F1>, R2<U2,F2>,…, Rn<Un,Fn>} 其中U= U1∪U2∪…∪Un ,并且没有 i Uj, i≠j , 并且没有U 其中 ∪ Fi是F在Ui上的投影. 在 上的投影. F在Ui上的投影(记作∏Ui F)是指 在 上的投影(记作∏ 函数依赖集合{X→Y| X→Y∈F+∧XYUi}的一个覆盖 i. 的一个覆盖F 函数依赖集合 ∈ 的一个覆盖 . 已知R<U,F>,U={A,B,C,D}, F={A->BD, D->C}, 如 例1:已知 已知 = 果将R分解为 分解为R1(U1, F1)和R2(U2, F2), 其中 其中U1={A,B,D}, 果将 分解为 和 U2={A,C}, 则F1,F2分别是? 分别是? 分别是
四,模式分解的算法
算法3 分解法) 分解为BCNF,且具有无损连接性. 算法3(分解法):分解为BCNF,且具有无损连接性. BCNF,且具有无损连接性 步骤: 步骤: ①令ρ={R<U,F>} 检查: 中所有关系模式均属于BCNF 则算法终止. BCNF, ②检查:若ρ中所有关系模式均属于BCNF,则算法终止. 不属于BCNF, 则必有X→A∈F BCNF,则必有 ③ 若 ρ 中 Ri<Ui,Fi> 不属于 BCNF, 则必有 X→A∈Fi+, 且 X 不是 的码,显然AX AX是 的真子集. 进行分解: Ri的码,显然AX是Ui的真子集.对Ri进行分解:{Ri1,Ri2}, 其 中 Ui1=XA, Ui2=Ui-{A}, 用 分 解 {Ri1<Ui1,Fi1 >, >}代替 代替R >,转 Ri2<Ui2,Fi2 >}代替Ri<Ui,Fi>,转②