We claim the above decomposition is lossless.
How can we decide whether a decomposition is lossless?
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.
- 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 :
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.