How to decompose into BCNF while preserving all functional dependencies I have a relation R = {A,B,C} and F={AB -> C , C -> B}.
In order to check if R is in BCNF.

I checked if AB and C are both superkeys and since C is not a superkey I conclude R is not in BCNF.

After decomposing R into BCNF, I have two relations : 

R1(C,B)   F1{ C -&gt; B}
R2(A,C)   F2{ A -&gt; C}


Now since A and C are both superkeys, I can conclude that now R(R1, R2) is in BCNF.

But after computing (F1 U F2)+, I can't derive AB -> C and so I lose that FD.

My question is, how can I decompose than into BCNF while preserving FD's?
this very example is discussed in the first place I looked.

The short answer is that you cannot always achieve all of


BCNF;
an information-equivalent schema;
using keys as the only declared constraint(s).


Pick any two.

In this case you must retain R = {A, B, C}, with key {A, B} -- then we can't losslessly decompose R. In order to represent the FD C -&gt; B as a relation with a suitable key, you need R1 = {C, B} with key {C}. So far we've achieved BCNF. To retain information equivalence, you need an Inclusion Dependency (aka Foreign Key constraint) R[C] ⊆ R1[C].

Strictly speaking to retain info equivalence, that Inclusion Dependency should probably be an Equality Dependency. But this is a contrived example, so nobody in practice would do that.