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
===============
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
===============
cust_id (primary key)
lastname
firstname
product_id (foreign key)

products table
==============
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