Normalization to 2NF and 3NF

database-designdatabase-theorynormalization

I solved this example to determine 2NF and 3NF. I would like to check if my answer is correct. Can somebody check the 2NF and 3NF of this example, please?

R( A B C D E F G H I J)

with functional dependencies:

AB -> C
A -> DE
B -> F
F -> GH
D -> IJ

My result:

2NF: 
R1 (AB -> C , A -> E) 
R2 (B -> F , F -> GH)
R3 (D -> I)

3NF:
R1 (AB -> C , A -> E) 
R2 (B -> F) 
R4 (F -> GH)
R3 (D -> I)

Best Answer

Firstly, i suggest you the steps to quickly find a correct normalization of the table, using the example that you brought, showing you the correct normalization.

Define the key

The key is usually defined by its usefulness, or its role in operations like joins (if we need a join lot of times we could choose a key instead of another).

I choose A U B as a key. I usually underline the key, but, because in this board we can't underline text, I will write the key as AB

Define the functional dependencies

You already found the FD, so we can go to the next step.

2NF Normalization

Looking at the FD the correct normalization is:

R1 (the previous big table) (**A**:R3,**B**:R2, C)
  AB -> C

(:R2 indicates a foreign key)

In this table we can find the AB -> C functional dependency.

R2 (**B**,F, G, H) 
  B -> F, 
  F -> GH

R3 (**A**, D, E, I, J) 
  A -> DE, 
  D -> IJ

3NF Normalization

R1 (**A**:R3, **B**:R2, C) 
  AB -> C

R2 (**B**, F:R4) 
  B -> F

R3 (**A**, D:R5, E) 
  A -> DE

R4 (**F**, G, H) 
  F -> GH

R5 (**D**, I, J) 
  D -> IJ