设关系模式R(A,B,C,D,E,G)上的函数依赖集F={D→G,C→A,CD→E,A→B},那么分解={DG,AC,CDE,AB

2024-11-22 22:14:29
推荐回答(1个)
回答1:

/*
无损分解的测试方法
CHASE过程,主要分成两个步骤:初始化表格及修正表格,最后进行判断
1.画初始表格
关系模式R的属性作为表格的列(ABCDEG),讲分解的关系作为行(DG,AC,CDE,AB)
如果行跟列无相交用bij表示(i行j列),有相交用aj表示(j列)
第一行
DG∩A -> b11 不相交(第1列)
DG∩B -> b12 不相交(第2列)
DG∩C -> b13 不相交(第3列)
DG∩D -> a1 相交(第4列)
DG∩E -> b15 不相交(第5列)
DG∩G -> a6 相交(第6列)

第二行
AC∩A -> a1
AC∩B -> b22
AC∩C -> a3
AC∩D -> b24
AC∩E -> b25
AC∩G -> b26

第三行
CDE∩A -> b31
CDE∩B -> b32
CDE∩C -> a3
CDE∩D -> a4
CDE∩E -> a5
CDE∩G -> b36

第四行
AB∩A -> a4
AB∩B -> a5
AB∩C -> b43
AB∩D -> b44
AB∩E -> b45
AB∩G -> b46
以上就初始表格图1

2.修正表格
D→G ∴ CDE∩G -> b36 改成 a6
C→A ∴ CDE∩A -> b31 改成 a1
C→A,A→B => C→B ∴ AC∩B -> b22 改成 a2
CDE∩B -> b32 改成 a2

结果就是图2

3.判断
如果结果存在全a的行就是无损分解,明显CDE这行就是全a,所以是无损分解