Lossless join decomposition

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.,