A function dependency (FD) is
a constraint denoted X Y between two sets of attributes X and Y from a relational schema R.
The FD specifies a restriction on
the possible tuples that can form a relation instance r of R
The inference rules for normalization are:
Acronym to remember: RATDUP
First Normal Form (1NF) is:
• Normal DB form, with no violations (only atomics values, no redundancy, few null)
Second Normal Form (2NF) is:
• 1NF with No Partial dependency - so every non-prime attribute is fully functionally dependent on every key
(ie: fails 2NF if only part of the minimal key determines an attribute in that table)
Third Normal Form (3NF) is:
• 2NF with No Transitive dependency (ie: fails 3NF if A –> B and B –> C )
Boyce-Codd NF (BCNF) is:
• 3NF but with the LHS of functional dependencies are super keys.
Note that 3NF can be better than BCNF
General steps to achieve the highest normal form (to 3NF) are: