Database normalization prevents redundancy, inconsistency and data loss. It includes several steps as follows:
1. 1NF - First Normal Form states that all tuple values should be atomic. Atomic means that there should be only one useful piece of data for each attribute.
The first step in database normalization is to determine the functional dependencies in the database. This means to find which values are determined by which.
2. Decomposition and Boyce/Codd Normal Form
BCNF has only one requirement - every functional dependency must be functionally determined by either a candidate key*, or a superset of a candidate key( superkey).
*A candidate key is a set of attributes that must be unique for each tuple and irreducible into a smaller key.
Example:
candidate_key -> value
candidate_key2 -> value2
...
5. 5th Normal Form requires that each join dependency is satisfied by superkeys.
A join dependency(JD) is a set of projections on a relation which when joined reform the original relation.