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)