Database normalization is the process of organizing data into distinct and unique sets.
The purposes of normalization are to:
- Reduce or eliminate storage of duplicate data
- Organize data into an efficient and logical structure
The process of normalization involves determining what data should be stored in each database table.
By tradition, the process of normalization involves working through well-defined steps, called normal forms.
In First Normal Form (1NF) you eliminate duplicate columns from the same table, create separate tables for each group of related data, and identify each row with a unique column or set of columns (the primary keys).
In Second Normal Form (2NF) you remove subsets of data that apply to multiple rows of a table, place them in separate tables, and create relationships between these new tables and the original tables through the use of foreign keys.
In Third Normal Form (3NF) you remove columns that are not dependent upon the primary key.
Additional normal forms have been defined, but are less commonly utilized. These advanced normal forms include Fourth Normal Form (4NF), Fifth Normal Form (5NF), Boyce Codd Normal Form (BCNF), and Domain-Key Normal Form (DK/NF).