The 2nd level of normalization or the 2nd normal form deals with data redundancy that occurs vertically across the different rows in a table. In order to determine if a database table is in the 2nd normal form, traverse the actual table record data from top to bottom for each column in the table and check if each column is free from redundant data.
Consider the following database table for bank customers (let's assume that the bank's policy allows each customer to have only 1 product):
customers table
column | |
cust_id |
primary key |
lastname |
|
firstname |
|
product |
|
cust_id | lastname | firstname | product |
0001 |
henry |
john |
credit card |
0002 |
smith |
adam |
savings |
0003 |
johnson |
mary |
credit card |
0004 |
bailey |
harry |
credit card |
0005 |
morgan |
alex |
savings |
It is quite obvious that there is redundant data in the product column. This redundancy can easily be removed by normalizing the table to it's 2nd normal form. The resulting design will be as follows:
customers table
column | |
cust_id |
primary key |
lastname |
|
firstname |
|
product_id |
|
products table
column | |
product_id |
primary key |
name |
|
The normalization results in 2 tables. The product table is tied back to the customer table through the use of a
foreign key - in this case, the product_id field.
See also:
1st normal form and
3rd normal form