We claim the above decomposition is lossless.
How can we decide whether a decomposition is lossless?
- Let
be a relation scheme.
- Let
be a set of functional dependencies on
.
- Let
and
form a decomposition of
.
- The decomposition is a lossless-join decomposition of
if at
least one of the following functional dependencies are in
:
-
-
Why is this true?
Simply put, it ensures that the attributes involved in the natural join
(
) are a candidate key for at least one of the two relations.
This ensures that we can never get the situation where spurious tuples
are generated, as for any value on the join attributes there will be
a unique tuple in one of the relations.