Joe Celko's SQL for Smarties: Advanced SQL Programming, Third Edition

The relational model of data, and the normal forms of the relational model, were first defined by Dr. E. F. Codd (Codd 1970), and then extended by other writers after him. Dr. Codd invented the term "normalized relations" by borrowing from the political jargon of the day. The branch of mathematics called relations deals with mappings among sets defined by predicate calculus from formal logic. Just as in an algebraic equation, there are many forms of the same relational statement, but the normal forms of relations are certain formally defined desirable constructions. The goal of normal forms is to avoid certain data anomalies that can occur in unnormalized tables.
Data anomalies are easier to explain with an example, but first please be patient while I define some terms. A predicate is a statement of the form A(X), which means that X has the property A. For example, "John is from Indiana" is a predicate statement; here, "John" is the subject and "is from Indiana" is the predicate. A relation is a predicate with two or more subjects. "John and Bob are brothers" is an example of a relation. The common way of visualizing a set of relational statements is as a table, in which the columns are attributes of the relation, and each row is a specific relational statement.
When Dr. Codd defined the relational model, he gave 0 to 12 rules ...