Lossless join and dependency preservation are two checks used after decomposing a relation. A decomposition is lossless when the smaller relations can be joined back to reproduce exactly the original valid relation without creating spurious tuples. A decomposition is dependency-preserving when the original functional dependencies can still be enforced using the smaller relations without joining them first. This chapter explains both concepts from zero, including tests, examples, BCNF and 3NF connections, solved questions and common mistakes.
Lossless Join and Dependency Preservation in Simple Words
Lossless Join
It protects the data. After splitting a table, joining the smaller tables should give exactly the original valid information.
Dependency Preservation
It protects the rules. Functional dependencies should still be enforceable by checking the smaller tables directly.
One-line memory trick
Lossless = preserve data · Dependency preservation = preserve rulesThese ideas come after normalization and BCNF. Revise Normalization in DBMS, Functional Dependency in DBMS and BCNF in DBMS if those basics are not clear yet.
What Is Decomposition in DBMS?
Decomposition means splitting one relation into smaller relations to reduce redundancy or satisfy a normal form while trying to keep the original information and constraints intact.
Original relation
R(Student_ID, Student_Name, Dept_ID, Dept_Name)
Smaller relations
STUDENT(Student_ID, Student_Name, Dept_ID)
DEPARTMENT(Dept_ID, Dept_Name)
A decomposition is not automatically good just because the tables are smaller. We must check its quality.
What Is Lossless Join Decomposition?
A decomposition is lossless when joining the decomposed relations gives exactly the original valid relation. No valid information should disappear, and no false combinations should be created.
R(A, B, C)
Decompose into:
R1(A, B)
R2(B, C)
If R1 JOIN R2 reconstructs exactly R, the decomposition is lossless.
Lossy Decomposition and Spurious Tuples
A decomposition is lossy when joining the smaller relations does not reconstruct the original relation correctly. A common problem is the creation of extra false rows.
Spurious tuples are extra rows produced by a join that were not valid tuples of the original relation.
Lossless
The join gives the intended original information only.
Lossy
The join can create incorrect combinations called spurious tuples.
Binary Lossless Join Test
If relation R is decomposed into R1 and R2, the decomposition is lossless with respect to F when the common attributes functionally determine all attributes of at least one decomposed relation.
(R1 ∩ R2) → R1
or
(R1 ∩ R2) → R2
R1 ∩ R2 means the attributes common to both relations.
Shortcut
Common attributes must determine one complete sideLossless Join Example Step by Step
R(A, B, C)
F = { A → B }
R1(A, B)
R2(A, C)
Lossy Join Example
R(A, B, C)
F = { A → B }
R1(A, C)
R2(B, C)
The common attribute is C. But C does not determine all attributes of R1 or R2 under the given FD set.
Verdict
Lossy with respect to the given functional dependenciesDecomposition Quality Verifier
Case 1: Good on both tests
Verdict
What Is Dependency Preservation?
A decomposition is dependency-preserving when the original functional dependencies can be enforced using the decomposed relations individually, without joining them first.
R(A, B, C)
F = { A → B, B → C }
R1(A, B)
R2(B, C)
A → B can be checked inside R1 and B → C can be checked inside R2. Therefore the decomposition preserves the dependencies.
Projected Functional Dependencies
After decomposition, each smaller relation keeps the functional dependencies that involve only attributes available in that relation. These are called projected dependencies.
F1 = projection of F on R1
F2 = projection of F on R2
...
Fn = projection of F on Rn
In formal terms, a decomposition is dependency-preserving when the projected dependencies together imply the original functional dependencies.
(F1 ∪ F2 ∪ ... ∪ Fn)+ = F+
For most beginner questions, the practical method is easier: check whether each original FD can be enforced directly or derived from the projected FDs.
Dependency-Preserving Decomposition Example
R(A, B, C)
F = { A → B, B → C }
R1(A, B)
R2(B, C)
| Original FD | Can be checked in | Preserved? |
|---|---|---|
| A → B | R1(A,B) | Yes |
| B → C | R2(B,C) | Yes |
Both original rules remain local, so the decomposition is dependency-preserving.
Non-Dependency-Preserving Example
R(A, B, C)
F = { A → B, B → C }
R1(A, B)
R2(A, C)
A → B can be checked in R1. Because A → B and B → C, A → C is also implied and can appear in the projection on R2.
But B → C cannot be derived from the projected dependencies without combining information across the decomposed relations.
Verdict
Not dependency-preservingLossless Join vs Dependency Preservation
| Point | Lossless Join | Dependency Preservation |
|---|---|---|
| Main concern | Information | Functional-dependency rules |
| Main question | Can we join back exactly? | Can we enforce FDs locally? |
| Failure causes | Wrong reconstruction or spurious tuples | Some rules require joining relations |
| Typical test | Common attributes determine one side | Projected dependencies imply original FDs |
| Priority | Essential | Highly desirable |
Can a Decomposition Be Lossless but Not Dependency-Preserving?
Yes. A decomposition may reconstruct the original relation correctly but still separate an original functional dependency across two relations.
This is an important trade-off in BCNF. BCNF decomposition is lossless, but dependency preservation is not guaranteed.
BCNF Example: Lossless but Not Dependency-Preserving
R(A, B, C)
F = { AB → C, C → B }
BCNF decomposition using C → B gives:
R1(C, B)
R2(A, C)
The common attribute is C, and C determines all of R1, so the decomposition is lossless.
But the original dependency AB → C is not contained inside either smaller relation and is not enforceable locally from their projected dependencies. So dependency preservation is lost.
For the full BCNF rule, revise BCNF in DBMS: 3NF vs BCNF.
3NF and Dependency Preservation
The standard 3NF synthesis method can produce a dependency-preserving decomposition. It can also be made lossless by ensuring that a relation containing a candidate key is present when needed.
3NF
Slightly less strict, but dependency-preserving decomposition is achievable.
BCNF
Stronger control of dependency-based redundancy, but dependency preservation may be lost.
Possible Decomposition Results
What Is the Chase Test?
For decompositions involving more than two relations, textbooks may use the chase or tableau test to test losslessness. It uses symbolic rows and repeatedly applies functional dependencies to see whether the decomposition can reconstruct a valid original row.
You normally do not need the chase for simple two-relation questions because the intersection test is much easier.
How to Test a Decomposition Step by Step
Complete Solved Example
Given:
R(A, B, C)
F = { A → B, B → C }
Decomposition:
R1(A, B)
R2(B, C)
Lossless test
The common attribute is B. Since B → C, B determines all attributes of R2. Therefore the decomposition is lossless.
Dependency-preservation test
A → B is in R1 and B → C is in R2. Therefore both original dependencies can be enforced locally.
Mistakes to Avoid
How to Write This Topic in Semester Exams
Definitions
Define lossless join and dependency preservation in one or two lines.
Rule + example
Write the binary lossless condition and one dependency-preservation example.
Full answer
Explain lossy join, spurious tuples, FD projection, BCNF trade-off and solve one complete decomposition.
For answer presentation, use How to Write High-Scoring Answers in University Semester Exams. For revision priority, use the previous-year-paper method.
Practice Questions With Answers
1. What is lossless join decomposition?
It is a decomposition in which joining the smaller relations reconstructs exactly the original valid relation without creating spurious tuples.
2. What is dependency preservation?
It means the original functional dependencies can be enforced using the decomposed relations individually.
3. What are spurious tuples?
They are incorrect extra tuples created when decomposed relations are joined after a lossy decomposition.
4. What is the binary lossless join condition?
The common attributes of R1 and R2 must functionally determine all attributes of R1 or all attributes of R2.
5. Can a decomposition be lossless but not dependency-preserving?
Yes. This can happen in BCNF decomposition.
6. What is a projected functional dependency?
It is a dependency that holds using only attributes of one decomposed relation.
7. Does BCNF always preserve dependencies?
No. BCNF decomposition may be lossless while failing to preserve some original dependencies locally.
8. Why is 3NF useful if BCNF is stronger?
3NF can preserve dependencies while still removing most important redundancy.
9. Which property is essential?
Lossless join is essential because the decomposition must preserve the original information correctly.
10. What should I study next?
Study multivalued dependency, 4NF, join dependency and 5NF.
One-Minute Revision Sheet
Frequently Asked Questions
What is lossless join in DBMS in simple words?
A lossless join means that after splitting a relation, joining the smaller relations reproduces the original valid relation without adding false tuples.
What is dependency preservation in DBMS?
Dependency preservation means the original functional dependencies can still be checked and enforced using the decomposed relations individually.
What is the lossless join test for two relations?
The common attributes must functionally determine all attributes of R1 or all attributes of R2.
What is the difference between lossless join and dependency preservation?
Lossless join protects information, while dependency preservation protects the ability to enforce functional-dependency rules locally.
Can BCNF decomposition lose dependency preservation?
Yes. BCNF decomposition can be lossless while some original dependencies are no longer enforceable inside a single decomposed relation.
What should I study after this topic?
Continue with multivalued dependency, Fourth Normal Form, join dependency and Fifth Normal Form.
What Should You Learn Next?
Next: Multivalued Dependency & Fourth Normal Form (4NF)
You now know how to judge whether a decomposition safely preserves information and functional dependencies. The next step is understanding independent multi-valued facts, multivalued dependency and 4NF.
For video revision after reading, use the DBMS YouTube study guide only as a secondary resource.
