Wednesday, August 5, 2009

Normalization

What is Normalization?

Normalization is the process of efficiently organizing data in a database. There are two goals of the normalization process: eliminating redundant data (for example, storing the same data in more than one table) and ensuring data dependencies make sense (only storing related data in a table). Both of these are worthy goals as they reduce the amount of space a database consumes and ensure that data is logically stored.

The main normal forms are summarized below.

Normal formDefined byBrief definition
First normal form(1NF)Two versions: E.F. Codd (1970), C.J. Date (2003)Table faithfully represents a relation and has no repeating groups
Second normal form (2NF)E.F. Codd (1971)No non-prime attribute in the table is functionally dependenton a part (proper subset) of a candidate key
Third normal form(3NF)E.F. Codd (1971); see also Carlo Zaniolo's equivalent but differently-expressed definition (1982)Every non-prime attribute is non-transitively dependent on every key of the table
Boyce-Codd normal form(BCNF)Raymond F. Boyce and E.F. Codd (1974)Every non-trivial functional dependency in the table is a dependency on a superkey
Fourth normal form (4NF)Ronald Fagin (1977)Every non-trivial multivalued dependency in the table is a dependency on a superkey
Fifth normal form(5NF)Ronald Fagin (1979)Every non-trivial join dependency in the table is implied by thesuperkeys of the table
Domain/key normal form(DKNF)Ronald Fagin (1981)Every constraint on the table is a logical consequence of the table's domain constraints and key constraints
Sixth normal form(6NF)Chris Date, Hugh Darwen, and Nikos Lorentzos (2002)Table features no non-trivial join dependencies at all (with reference to generalized join operator)




No comments:

Post a Comment