Relationship decomposition is the process of replacing a relation schema with a collection of smaller schemas such that . Decomposition is the primary mechanism of database normalization.
Lossless Decomposition
A decomposition is lossless-join (or non-loss) if the original relation can always be reconstructed by performing a [[Relational Algebra#Natural Join ()|natural join]] of the decomposed relations:
for every valid instance of .
For a decomposition of into two schemas and , the decomposition is lossless-join if and only if at least one of the following functional dependencies holds:
In other words, the common attributes of the two schemas must form a super key for at least one of them.
A decomposition that is not lossless produces spurious tuples when [[Relational Algebra#Natural Join ()|joined]], tuples that did not exist in the original relation.
Dependency-preserving Decomposition
A decomposition is dependency-preserving if every functional dependency in the original set can be verified using only the attributes present in a single decomposed relation, without needing to compute [[Relational Algebra#Natural Join ()|joins]].
Formally, let be the restriction of to the attributes of . The decomposition preserves dependencies if: