Decomposition in DBMS is the process of splitting a single relation (table) into two or more relations to eliminate redundancy and anomalies while preserving all original information. It plays a key role in database normalization by making the schema cleaner and more consistent.
- Ensures no data or information is lost when the table is split (lossless decomposition).
- Helps remove insertion, update, and deletion anomalies caused by redundant data.

Types of Decomposition
There are two types of Decomposition:
- Lossless Decomposition
- Lossy Decomposition

Lossless Decomposition
Lossless decomposition is a technique in which a relation R is split into two or more relations such that joining them back always reconstructs R exactly, with no loss or gain of information. It ensures:
- No original data or tuples are lost during decomposition
- Joining the decomposed relations returns exactly the original relation — no extra or missing rows
Example:
Consider a relation R(A, B, C):
A | B | C |
|---|---|---|
55 | 16 | 27 |
48 | 52 | 89 |
Decomposing it into R1(A, B) and R2(B, C):
R1(A, B)
A | B |
|---|---|
55 | 16 |
48 | 52 |
R2(B, C)
B | C |
|---|---|
16 | 27 |
52 | 89 |
Joining R1 and R2 on the common attribute B gives back the exact original relation R - confirming the decomposition is lossless.
A | B | C |
|---|---|---|
55 | 16 | 27 |
48 | 52 | 89 |
Lossy Decomposition
Lossy decomposition occurs when splitting a relation into sub-relations and then joining them back does not reconstruct the original relation - the join produces extra, spurious tuples that weren't present in the original data. These extraneous tuples make it hard for users to identify which rows were actually real.
Example:
Consider a relation R(A, B, C):
A | B | C |
|---|---|---|
1 | 2 | 1 |
2 | 5 | 3 |
3 | 3 | 3 |
Decomposing it into R1(A, B) and R2(B, C):
R1(A, B)
A | B |
|---|---|
1 | 2 |
2 | 5 |
3 | 3 |
R2(B, C)
B | C |
|---|---|
2 | 1 |
5 | 3 |
3 | 3 |
Joining R1 and R2 on B gives:
A | B | C |
|---|---|---|
1 | 2 | 1 |
2 | 5 | 3 |
2 | 3 | 3 |
3 | 5 | 3 |
3 | 3 | 3 |
Properties of Decomposition
- Lossless Join: Joining the decomposed sub-relations must reconstruct the original relation exactly, with no loss or gain of tuples. This ensures no information is lost during decomposition.
- Dependency Preservation: All functional dependencies that held in the original relation should still be enforceable on the decomposed relations, without needing an expensive join to check them. This maintains data consistency and integrity.
- Lack of Data Redundancy: The decomposition should minimize or eliminate duplicate/repeated data across the sub-relations, keeping only the necessary information in each.