Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

BCNF Decomposition

I am trying to figure out the correct steps in performing a BCNF decomposition. I found this example, but I do not understand how to perform the correct steps.

Schema = (A,B,C,D,E,F,G,H) FD's + {A -> CGH, AD->C, DE->F, G->G}

Could someone show the correct steps?

like image 539
Mike Avatar asked Dec 06 '10 15:12

Mike


People also ask

Is the decomposition also in BCNF?

2NF decomposition gives R1(A,B) , R2(C,D) and R3(A,C,E). this decomposition decomposed relations are in 3NF and also in BCNF.

What is BCNF explain?

Boyce–Codd normal form (or BCNF or 3.5NF) is a normal form used in database normalization. It is a slightly stronger version of the third normal form (3NF). BCNF was developed in 1974 by Raymond F. Boyce and Edgar F. Codd to address certain types of anomalies not dealt with by 3NF as originally defined.


1 Answers

Determine a minimal cover using your FD's:

{A -> C, A -> G, A -> H, 
 B -> nothing, 
 C -> nothing,
 D -> nothing,
 E -> nothing,
 F -> nothing
 G -> nothing
 H -> nothing
 DE -> F}

Note AD -> C drops out because A alone determines C which implies D is redundant in the FD (see Armstrong's Axioms - Augmentation).

3NF and BCNF definitions relate to dependencies about compund keys. The only compound key you have here is DE. Neither D or E participate in any other non-null FD's so eliminating transitive dependencies and ensuring that dependent attributes rely on the 'key, the whole key, and nothing but the key' is not an issue here.

Break into relations so that the FD left hand side is the key and the right hand sides are the non-key dependent attributes of that key:

[Key(A), C, G, H]
[Key(D, E), F]

Now eliminate these attributes from the cover, whatever is left are standalone relations.

[Key(B)]

This should be in 3NF/BCNF

like image 52
NealB Avatar answered Sep 22 '22 18:09

NealB