首先,您应该计算依赖项的规范覆盖。在这种情况下是:
{ A B → C
A B → D
C → E
C → F
G → A
G → F } >
由于(唯一的)候选键是B G,没有函数依赖满足BNCF。然后,从任何违反BCNF的函数依赖X → Y开始,我们计算X、X+的闭包,并将原始关系R<T,F>替换为两个关系R1<X+>和R2<T - X+ + X>。因此,在这种情况下选择依赖A B → C,我们将原始关系替换为:
R1 < (A B C D E F) ,
{ A B → C
A B → D
C → E
C → F} >
和:
R2 < (A B G) ,
{ G → A } >
然后我们检查每个分解的关系,看它是否满足 BCNF,否则我们递归地应用该算法。
在这种情况下,例如,在R1 中,键是A B,所以C -> E 违反了BCNF,我们将R1 替换为:
R3 < (C E F) ,
{ C → E
C → F } >
和:
R4 < (A B C D) ,
{ A B → C
A B → D } >
满足 BCNF 的两个关系。
最后,由于R2也不满足BCNF(因为key是B G),我们将R2分解为:
R5 < (A G) ,
{ G → A } >
和:
R6 < (B G) ,
{ } >
在 BCNF 中。
所以最终的分解由以下关系构成:R3、R4、R5 和 R6。我们还可以注意到,在分解中,原始关系上的依赖G → F丢失了。