Part XI: Normalisation

This part relates Predica's domain-and-attribute style to the familiar normal forms of the Relational Model. The goal is not to turn Predica schemas into unnested tables and then normalise them. The normal forms are used as diagnostics: they help identify facts stored on the wrong subject, independent facts combined together, and derived combinations stored as base facts.

The early chapters cover 1NF, 2NF, 3NF, and BCNF. In this setting, 1NF is mainly about the distinction between an attribute's declared type and the cardinality of its extension. 2NF, 3NF, and BCNF diagnose several ways a fact can be attached to the wrong subject. The later chapters cover 4NF, 5NF, 6NF, and DKNF: independent many-valued facts, join dependencies, decomposition into irreducible facts, and the ideal of reducing constraints to consequences of domains and keys.