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] A relation
on schema
decomposes losslessly onto schemas
π
is the natural join of its projections onto the smaller schemas.
is a lossless-join decomposition of
or said to have a lossless join with respect to a set of functional dependencies
decomposes losslessly onto
[3] Decompositions into more than two schemas can be defined in the same way.
has a lossless join with respect to
In other words, one of the following must hold:[4] 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
) to form a lossless join with another schema
(which may already be joined (e.g.,