Database normalization Created 2026-10-31 Updated 2026-11-05
Database normalization organizes relational schemas using their dependencies to reduce redundant facts and update anomalies. If a table stores
(student,course,instructor,office) and each instructor has one office, repeating the office in every enrolment creates multiple places to update. Splitting instructor-office facts into a separate relation can remove that redundancy. A decomposition must be checked for lossless join and, when needed, dependency preservation; merely creating more tables is not a correctness argument. Different normal forms impose different conditions on functional dependencies and other dependency types. Lossless join 2026-11-05
A decomposition has a lossless join when projecting any permitted Database relation onto the component schemas and taking their natural join reconstructs exactly the original relation. Every original tuple reappears; the substantive requirement is that no spurious tuples are introduced. The dependencies defining permitted instances are essential to the claim.
For example, decompose into and . If is a functional dependency, this is lossless. Any joined tuple combines and from original rows; the dependency forces every row with that to have the same , so the combined tuple was already present. Without that dependency, original rows and yield two additional crossed combinations on rejoining. Removing redundancy is therefore insufficient: the decomposition must preserve which facts belonged together. A binary decomposition is lossless under functional dependencies when the common attributes determine one of its component schemas.