Normalisation Summary

Example: Student(s#,progr,school,(module,classroom,mark)) with functional dependencies:
module -> classroom
progr -> school
normal formruleexamplewhat to look for
unnormalizedhas repeating groups Student(s#,progr,school,(module,classroom,mark)) - can have brackets
1NFno repeating groups Student(s#,progr, school)
Exams(s#,module,classroom,mark)
- must not have brackets
2NF no partial key dependencies Student(s#,progr, school)
Exams(s#,module,mark)
Module(module,classroom)
- for each composite key:
check whether part of key implies non-key attribute
3NF no transitive dependencies Student(s#,progr)
Programme(progr, school)

Exams(s#,module,mark)
Module(module,classroom)
- if there is more than 1 non-key attribute:
non-key attributes must not dependent on each other
BCNF every determinant is candidate key   - check all functional dependencies:
- all LHS must be candidate keys
4NF no multi-valued dependencies   
5NF not decomposable via joins