1NF (definiton of a table)
- has a primary key
- no repeating columns
- all values are scalar (atomic)
- no dependent columns (computed columns)
2NF
- in 1NF
- no partial dependencies
- i.e. if there is a composite key, no values rely on just a portion of the composite key
3NF
- in 2NF
- no transitive dependencies in non-key attributes
- i.e. if {A} -> (B, C) and {B} -> C, then C shouldn't be in the first table
BCNF (3.5NF)
- in 3NF
- all determinants are key attributes