我的理解是,分解的时候要保持函数依赖则分解后的模式依然包括以前的函数依赖关系,比如R(A,B,C,D),有函数依赖{A—》B
,AC—》D,AB—》D},则分解R1(A B D),R2(A C
D)是保持函数依赖的,而R1(A C) R2(A B
D)是不保持函数依赖的,因为两个模式都不包括AC—》D的关系,这样就损失了AC—》D的函数依赖。
判别的方法并不麻烦
画张表 慢慢的按要求推就行了。
例CS->G C->T TH->O HI->C
HS->I
{R1(CSG),R2(CT) R3(THI),R4(HIC),R5(HSI)}
构表(下面可能会出现变形)
表1
C
T
H
I
S
G
R1(CSG)
a1
b12
b13
b14
a5
a6
R2(CT)
a1
a2
b23
b24
b25
b26
R3(THI)
b31
a2
a3
a4
b35
b36
R4(HIC)
a1
b42
a3
a4
b45
b46
R5(HSI)
b51
b52
a3
a4
a5
b56
(对于不会画表的。这里介绍一下。左别有的例如R1(CSG)则c下面为a1,没有的t下面就为b+他的行列数即b12)
根据C->T 则1 2 4
行中的c全为a1 然后将 1 2 4
行的T全部转成a2,(前题是T的124行中到少有一个为a2的。不然全转成最上面一行即第一行的.)
转后成表2
C
T
H
I
S
G
R1(CSG)
a1
a2
b13
b14
a5
a6
R2(CT)
a1
a2
b23
b24
b25
b26
R3(THI)
b31
a2
a3
a4
b35
b36
R4(HIC)
a1
a2
a3
a4
b45
b46
R5(HSI)
b51
b52
a3
a4
a5
b56
HI->C
则三四五行的HI一样。即将C的3,4,5行转成a1(再多说一次,这里C的3,4,5行中有a1才可以转成a1,没有就照最上面一行(3)转)
转后成表3
C
T
H
I
S
G
R1(CSG)
a1
a2
b13
b14
a5
a6
R2(CT)
a1
a2
b23
b24
b25
b26
R3(THI)
a1
a2
a3
a4
b35
b36
R4(HIC)
a1
a2
a3
a4
b45
b46
R5(HSI)
a1
b52
a3
a4
a5
b56
HS中没有相等的,跳过.
再CS->G 发现15行相等
则G的15行变为a6
C
T
H
I
S
G
R1(CSG)
a1
a2
b13
b14
a5
a6
R2(CT)
a1
a2
b23
b24
b25
b26
R3(THI)
a1
a2
a3
a4
b35
b36
R4(HIC)
a1
a2
a3
a4
b45
b46
R5(HSI)
a1
b52
a3
a4
a5
a6
再C->T 最T全变为a2
C
T
H
I
S
G
R1(CSG)
a1
a2
b13
b14
a5
a6
R2(CT)
a1
a2
b23