In database design, a lossless join decomposition is a decomposition of a relation
into relations
such that a natural join of the two smaller relations yields back the original relation. This is central in removing redundancy safely from databases while preserving the original data.[1] Lossless join can also be called non-additive.[2]
Definition
A relation
on schema
decomposes losslessly onto schemas
and
if
, that is
is the natural join of its projections onto the smaller schemas.
A pair
is a lossless-join decomposition of
or said to have a lossless join with respect to a set of functional dependencies
if any relation
that satisfies
decomposes losslessly onto
and
.[3]
Decompositions into more than two schemas can be defined in the same way.[4]
Criteria
A decomposition
has a lossless join with respect to
if and only if the closure of
includes
or
. In other words, one of the following must hold:[4]


Criteria for multiple sub-schemas
Multiple sub-schemas
have a lossless join if there is some way in which we can repeatedly perform lossless joins until all the schemas have been joined into a single schema. Once we have a new sub-schema made from a lossless join, we are not allowed to use any of its isolated sub-schema to join with any of the other schemas. For example, if we can do a lossless join on a pair of schemas
to form a new schema
, we use this new schema (rather than
or
) to form a lossless join with another schema
(which may already be joined (e.g.,
)).[vague]
Example
- Let
be the relation schema, with attributes A, B, C and D.
- Let
be the set of functional dependencies.
- Decomposition into
and
is lossless under F because
and we have a functional dependency
. In other words, we have proven that
.[5][6]
References