Skip to content

Last modified: May 29, 2025

BCNF Decomposition

(recall BCNF: For every functional dependency X → Y, X must be a superkey)

Step 1

Check which functional dependencies of R are not in BCNF, if they're all in BCNF we do not need to decompose R.

AB -> CD

D -> E

A -> C

B -> D


{AB}+ = {A,B,C,D,E} -> CK: AB

AB -> CD

D -> E (violates BCNF)

A -> C

B -> D


Step 2

Create two sub-relations:

  1. {X}+

  2. R - {X}+ + X

AB -> CD

D -> E -> {D}+ = {D, E} -> R1(DE), R2(ABCD)

A -> C

B -> D


Step 3

For each sub-relation we check if all of its functional dependencies are now in BCNF

  • if they are we keep the sub-relation as it is

  • if not, do Step 2 again for the sub-relation's dependency that does not satisfy BCNF

R1(DE)

CK = D

D -> E (BCNF)


R2(ABCD)

CK = AB

AB -> CD (BCNF)

A -> C (not in BCNF)

B -> D


R3(AC)

CK = A

A -> C (BCNF)


R4(ABD)

CK = AB

AB -> D (BCNF)

B -> D (not in BCNF)


R5(BD)

CK = B

B -> D (BCNF)


R6(AB)

CK = AB

AB -> AB (BCNF)


Step 4

Final decomposition is composed of sub-relations that all their functional dependencies hold BCNF

R1(DE)

D -> E


R3(AC)

A -> C


R5(BD)

B -> D


R6(AB)

AB -> AB