What is 3NF?
The third step in Normalization is 3NF.
A table is in 3NF, only if a relation is in 2NF and it has no Transitive Functional Dependency
Let us see an example −
Example (Table violates 3NF)
<MovieListing>
| Movie_ID | Listing_ID | Listing_Type | DVD_Price ($) |
| 0089 | 007 | Comedy | 100 |
| 0090 | 003 | Action | 150 |
| 0091 | 007 | Comedy | 100 |
The above table is not in 3NF because it has a transitive functional dependency −
| Movie_ID -> Listing_ID Listing_ID -> Listing_Type |
Therefore, Movie_ID -> Listing_Type i.e. transitive functional dependency.
Example (Table converted to 3NF)
To form it in 3NF, you need to split the tables and remove the transitive functional dependency.
<Movie>
| Movie_ID | Listing_ID | DVD_Price ($) |
| 0089 | 007 | 100 |
| 0090 | 003 | 150 |
| 0091 | 007 | 100 |
<Listing>
| Listing_ID | Listing_Type |
| 007 | Comedy |
| 003 | Action |
| 007 | Comedy |
Let us see the result again that is a table in 3NF now −
