模式分解是否具有无损链接性

无损连接定理

关系模式R(U,F)的一个分解,ρ={R11,F1>,R22,F2>}具有无损连接的充分必要条件是:

U1∩U2→U1-U€F或U1∩U2→U2 -U1€F+


遇到此类情况可以套定理,也可以用算法求出,利用图表法算出答案。

验证无损连接性算法:看不懂算法可以先看下面的例子再返回来看算法定理

ρ={R11,F1>,R22,F2>,...,Rkk,Fk>}是关系模式R的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为Xi→Alj,其步骤如下:

① 建立一张n列k行的表,每一列对应一个属性,每一行对应分解中的一个关系模式。若属性Aj Ui,则在j列i行上真上aj,否则填上bij

② 对于每一个FDi做如下操作:找到Xi所对应的列中具有相同符号的那些行。考察这些行中li列的元素,若其中有aj,则全部改为aj,否则全部改为bmli,m是这些行的行号最小值。

如果在某次更改后,有一行成为:a1,a2,...,an,则算法终止。且分解ρ具有无损连接性,否则不具有无损连接性。

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

③ 比较扫描前后,表有无变化,如有变化,则返回第② 步,否则算法终止。如果发生循环,那么前次扫描至少应使该表减少一个符号,表中符号有限,因此,循环必然终止。


例:已知R,U={A,B,C,D,E},F={A→C,B→C,C→D,DE→C,CE→A},R的一个分解为R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE),判断这个分解是否具有无损连接性。

首先列出下表:

按照F中所给的关系模式在表格中进行对应,首先是A->C:

把第一列相同的a1,对应相应行改成与第三列第一行相同的数字:


之后是关系模式B->C:


C->D:

DE->C:

CE->A:

对照完毕之后,检查一行是否有全部为a,如果有,则为无损链接性。

由此可见此分解满足无损链接性。

你可能感兴趣的:(MySQL)