Introduction to Normalization -- from DevShed
Normalization Example -- from InfoCom (Central QueensLand University)


Generic Example:
Assumption: A customer can have multiple orders and an order can include multiple products.

0NF

CUSTOMER ORDER (CustName, OrderNo, ProdNo, ProdDesc, Qty, CustAddress, DateOrdered)

1NF - remove multivalued attributes

CUSTOMER (CustName, CustAddress)
CUSTOMER ORDER (CustName, OrderNo, ProdNo, ProdDesc, Qty, DateOrdered)

2NF - remove partial dependencies

CUSTOMER (CustName, CustAddress)
ORDER LINE (OrderNo, ProdNo, Qty, DateOrdered)
PRODUCT (ProdNo, ProdDesc)
ORDER (OrderNo, CustName)

3NF, BCNF

As above
Assumption: A customer can have multiple orders but an order can be for only 1 product. CustName and OrderNo preassigned as keys.

0NF

CUSTOMER ORDER (CustName, OrderNo, ProdNo, ProdDesc, Qty, CustAddress, DateOrdered)


1NF - remove multivalued dependencies

CUSTOMER (CustName, CustAddress)
ORDER (CustName, OrderNo, ProdNo, ProdDesc, Qty, DateOrdered)


2NF - remove partial dependencies

CUSTOMER (CustName, CustAddress)
CUSTOMER ORDER (CustName, OrderNo)
ORDER (OrderNo, ProdNo, ProdDesc, Qty, DateOrdered)


3NF - remove transitive dependencies

CUSTOMER (CustName, CustAddress)
CUSTOMER ORDER (CustName, OrderNo)
ORDER (OrderNo, ProdNo, Qty, DateOrdered)
PRODUCT (ProdNo, ProdDesc)


BCNF - resolve intrakey dependencies

CUSTOMER (CustName, CustAddress)
CUSTOMER ORDER (CustName, OrderNo) - CustName becomes just a foreign key
ORDER (OrderNo, ProdNo, Qty, DateOrdered)
PRODUCT (ProdNo, ProdDesc)