What is Dependency Preserving Decomposition? Why is it important?
Dependency Preserving Decomposition
A decomposition of a relation R into smaller relations R₁, R₂, ..., Rₙ is said to be
dependency preserving if all functional dependencies of R can still be enforced
without performing a join.
Formal Definition
Let R be decomposed into R₁, R₂, ..., Rₙ.
If the functional dependencies F of R can be inferred from the union of FDs preserved in each decomposition:
(F₁ ∪ F₂ ∪ ... ∪ Fₙ)+ = F+
then the decomposition is dependency preserving.
Why is it important?
- We want to maintain constraints (FDs) directly on decomposed tables.
- If dependencies are not preserved, we must join tables to check or enforce them → costly and inefficient.
Example — Dependency Preserving
Given:
R(A, B, C) FDs: A → B, B → C
Decompose into:
R1(A, B) R2(B, C)
Each functional dependency remains inside one of the decomposed relations:
- In R1: A → B
- In R2: B → C
To verify the functional dependencies, no need to join decomposed relations — dependency preserving.
Example — Not Dependency Preserving
Given:
R(A, B, C) FDs: A → BC
Decomposition:
R1(A, B) R2(A, C)
Here each FD is split and cannot be enforced directly from any single relation.
To verify A → BC, we must join:
R1 ⋈ R2
Therefore not dependency preserving.
No comments:
Post a Comment