A normal form is a property of a relation schema that characterizes it in terms of the redundancy it permits. Normal forms are defined with respect to functional dependencies (and in higher forms, multivalued and join dependencies) that hold on the schema.
Normal forms are ordered by strictness. Each successive normal form imposes additional constraints that eliminate further classes of redundancy:
That is, every BCNF relation is in 3NF, every 3NF relation is in 2NF, and every 2NF relation is in 1NF.
| Normal Form | Condition |
|---|---|
| 1NF | All attributes are atomic |
| 2NF | 1NF + no partial dependencies on the primary key |
| 3NF | 2NF + no transitive dependencies on the primary key |
| BCNF | Every non-trivial FD has a super key as its determinant |
The goal of applying successively stricter normal forms is to minimize update anomalies (insertion, deletion, and modification anomalies) that arise from redundant data storage without losing information. The process of restructuring a schema to satisfy a normal form is called database normalization.