| normal form | rule | example | what to look for |
|---|---|---|---|
| unnormalized | has repeating groups | Student(s#,progr,school,(module,classroom,mark)) | - can have brackets |
| 1NF | no 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 |