Eroxl's Notes
Relationship Decomposition
aliases
Decomposition, Decompose

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: