Normalization is defined as the process of efficiently organizing data in a database. There are ultimately two goals of the normalization process. The first is to eliminate redundant data. Redundant data is defined as storing the same data in more than one table. The second is to ensure that data dependencies make sense by having only related data stored in the same table. Both of these goals are important since they reduce the amount of space a database consumes and ensures that data is logically stored.
The Normal Forms
Formal guidelines have been established by the database community to ensure that databases are normalized. These guidelines are referred to as “normal forms” and are numbered from one (First Normal Form (1NF) or the lowest form of normalization, through five (Fifth Normal Form (5NF) which is the highest form of normalization. In many applications, you'll often see 1NF, 2NF, and 3NF along with an occasional 4NF. Fifth Normal Form is seen very rarely and therefore will not be further discussed.
It is extremely important to mention that these are only guidelines and there are always exceptions to the rule. Occasionally, it may become necessary to stray from the guidelines in order to meet practical business requirements. However, when variations take place, it's extremely important to evaluate any possible effect they could have on your system and account for possible data inconsistencies.
First Normal Form (1NF)
First Normal Form (1NF) sets the very basic rules for an organized database as follows:
Eliminate duplicate columns from the same table.
Create separate tables for each group of related data and identify each row by using a unique column or set of columns (i.e., primary key).
Second Normal Form (2NF)
Second Normal Form (2NF) further addresses the concept of removing duplicate data as follows:
Meet all the requirements of the First Normal Form.
Remove subsets of data that apply to multiple rows of a table and place them in separate tables.
Create relationships between these new tables and their predecessors through the use of foreign keys
Third Normal Form (3NF)
Third normal form (3NF) goes one step further as follows:
Meet all the requirements of the Second Normal Form.
Remove columns that are not dependent upon the primary key.