Third normal form
The third normal form (3NF) is a normal form used in database normalization. 3NF was originally defined by E.F. Codd^{[1]} in 1971. Codd's definition states that a table is in 3NF if and only if both of the following conditions hold:
 The relation R (table) is in second normal form (2NF)
 Every nonprime attribute of R is nontransitively dependent (i.e. directly dependent) on every key of R.
A nonprime attribute of R is an attribute that does not belong to any candidate key of R.^{[2]} A transitive dependency is a functional dependency in which X → Z (X determines Z) indirectly, by virtue of X → Y and Y → Z (where it is not the case that Y → X).^{[3]}
A 3NF definition that is equivalent to Codd's, but expressed differently, was given by Carlo Zaniolo in 1982. This definition states that a table is in 3NF if and only if, for each of its functional dependencies X → A, at least one of the following conditions holds:
 X contains A (that is, X → A is trivial functional dependency), or
 X is a superkey, or
 A is a prime attribute (i.e., A is contained within a candidate key)^{[4]}
Zaniolo's definition gives a clear sense of the difference between 3NF and the more stringent BoyceCodd normal form (BCNF). BCNF simply eliminates the third alternative ("A is a prime attribute").
Contents
"Nothing but the key"
A memorable summary of Codd's definition of 3NF, paralleling the traditional pledge to give true evidence in a court of law, was given by Bill Kent: every nonkey attribute "must provide a fact about the key, the whole key, and nothing but the key."^{[5]} A common variation supplements this definition with the oath: "so help me Codd".^{[6]}
Requiring that nonkey attributes be dependent on "the whole key" ensures that a table is in 2NF; further requiring that nonkey attributes be dependent on "nothing but the key" ensures that the table is in 3NF.
Chris Date refers to Kent's summary as "an intuitively attractive characterization" of 3NF, and notes that with slight adaptation it may serve as a definition of the slightlystronger BoyceCodd normal form: "Each attribute must represent a fact about the key, the whole key, and nothing but the key."^{[7]} The 3NF version of the definition is weaker than Date's BCNF variation, as the former is concerned only with ensuring that nonkey attributes are dependent on keys.
Example
An example of a 2NF table that fails to meet the requirements of 3NF is:
Tournament  Year  Winner  Winner Date of Birth 

Indiana Invitational  1998  Al Fredrickson  21 July 1975 
Cleveland Open  1999  Bob Albertson  28 September 1968 
Des Moines Masters  1999  Al Fredrickson  21 July 1975 
Indiana Invitational  1999  Chip Masterson  14 March 1977 
Because each row in the table needs to tell us who won a particular Tournament in a particular Year, the composite key {Tournament, Year} is a minimal set of attributes guaranteed to uniquely identify a row. That is, {Tournament, Year} is a candidate key for the table.
The breach of 3NF occurs because the nonprime attribute Winner Date of Birth is transitively dependent on the candidate key {Tournament, Year} via the nonprime attribute Winner. The fact that Winner Date of Birth is functionally dependent on Winner makes the table vulnerable to logical inconsistencies, as there is nothing to stop the same person from being shown with different dates of birth on different records.
In order to express the same facts without violating 3NF, it is necessary to split the table into two:


Update anomalies cannot occur in these tables, which are both in 3NF.
Derivation of Zaniolo's conditions
A lemma proved by Zaniolo states that a table is in 3NF if and only if, for each of its functional dependencies X → A, at least one of the following conditions holds:
 X contains A, or
 X is a superkey, or
 A is a prime attribute (i.e., A is contained within a candidate key)
The lemma is proved in the following way: Let X → A be a nontrivial FD (i.e. one where X does not contain A) and let A be a nonkey attribute. Also let Y be a key of R. Then Y → X. Therefore A is not transitively dependent on Y if and only if X → Y, that is, if and only if X is a superkey.^{[8]}
Normalization beyond 3NF
Most 3NF tables are free of update, insertion, and deletion anomalies. Certain types of 3NF tables, rarely met with in practice, are affected by such anomalies; these are tables which either fall short of BoyceCodd normal form (BCNF) or, if they meet BCNF, fall short of the higher normal forms 4NF or 5NF.
Notes & References
 ↑ Codd, E.F. "Further Normalization of the Data Base Relational Model." (Presented at Courant Computer Science Symposia Series 6, "Data Base Systems," New York City, May 24th25th, 1971.) IBM Research Report RJ909 (August 31st, 1971). Republished in Randall J. Rustin (ed.), Data Base Systems: Courant Computer Science Symposia Series 6. PrenticeHall, 1972.
 ↑ Codd, 43.
 ↑ Codd, 4546.
 ↑ Zaniolo, Carlo. "A New Normal Form for the Design of Relational Database Schemata." ACM Transactions on Database Systems 7(3), September 1982.
 ↑ Kent, William. "A Simple Guide to Five Normal Forms in Relational Database Theory", Communications of the ACM 26 (2), Feb. 1983, pp. 120125.
 ↑ The author of a 1989 book on database management credits one of his students with coming up with the "so help me Codd" addendum. Diehr, George. Database Management (Scott, Foresman, 1989), p. 331.
 ↑ Date, C.J. An Introduction to Database Systems (7th ed.) (Addison Wesley, 2000), p. 379.
 ↑ Zaniolo, 494.
See also
 Attributevalue system
 First normal form
 Second normal form
 BoyceCodd normal form
 Fourth normal form
 Fifth normal form
Further reading
 Date, C. J. (1999), An Introduction to Database Systems (8th ed.). AddisonWesley Longman. ISBN 0321197844.
 Kent, W. (1983) A Simple Guide to Five Normal Forms in Relational Database Theory, Communications of the ACM, vol. 26, pp. 120125
External links
 Litt's Tips: Normalization
 Rules Of Data Normalization
 Database Normalization Basics by Mike Chapple (About.com)
 An Introduction to Database Normalization by Mike Hillyer.
 Normalization by ITS, University of Texas.
 A tutorial on the first 3 normal forms by Fred Coulson
 Description of the database normalization basics by Microsoft