Given a relation R(A, B, C) with the set of functional dependencies F = {A ->…

Given a relation R(A, B, C) with the set of functional dependencies F = {A -> B, B -> C, C -> B}.

(i) A lossless-join decomposition of R is always possible.

(ii) A dependency-preserving decomposition of R is always possible.

Assume every decomposition considered includes all the attributes of R, and "always possible" means at least one such decomposition exists (not that every decomposition has the stated property).

Answer: A. Both (i) and (ii) are trueConcept: A lossless-join decomposition of a relation R is a split into fragments whose natural join reconstructs R exactly; a dependency-preserving…

  1. A.

    Both (i) and (ii) are true

  2. B.

    Only (i) is true

  3. C.

    Only (ii) is true

  4. D.

    Both (i) and (ii) are false

Attempted by 302 students.

Show answer & explanation

Correct answer: A

Concept: A lossless-join decomposition of a relation R is a split into fragments whose natural join reconstructs R exactly; a dependency-preserving decomposition is one whose fragments' projected functional dependencies, taken together, imply every dependency in the original set F. For a binary split R1, R2 (with R1 union R2 = R), the standard lossless-join test says the split is lossless exactly when the shared attributes R1 intersect R2 functionally determine R1 or determine R2. Two general theorems govern existence: a lossless-join decomposition of R always exists for any relation schema and any FD set (the BCNF decomposition algorithm is guaranteed, by construction, to always split off a lossless fragment at each step); a dependency-preserving decomposition of R also always exists for any relation schema and FD set (the 3NF synthesis algorithm constructs one) -- even though a decomposition that is simultaneously lossless, dependency-preserving, and in BCNF is not always achievable together.

Application:

  1. Compute the closure of A under F = {A -> B, B -> C, C -> B}: starting from {A}, A -> B adds B giving {A, B}; then B -> C adds C, giving A+ = {A, B, C} = R. So A is a (minimal) candidate key of R.

  2. Split R into R1(A, B) and R2(B, C). Check the lossless-join test on the shared attributes: R1 ∩ R2 = {B}, and B -> C holds, so B functionally determines {B, C} = R2. The test (R1 ∩ R2) -> R2 is satisfied, so this split is lossless.

  3. Project F onto each fragment: R1(A, B) retains A -> B; R2(B, C) retains both B -> C and C -> B. Together these projected dependencies reconstruct all three original dependencies, so this same split is also dependency-preserving.

  4. So a single split, R1(A, B) and R2(B, C), is simultaneously lossless and dependency-preserving -- demonstrating that a decomposition with each property exists.

Cross-check: Try a different split, R1(A, B) and R2(A, C). Here R1 ∩ R2 = {A}; since A is a key, A functionally determines all of R (hence both R1 and R2), so this split is also lossless by the same test. But projecting F onto it keeps only A -> B and A -> C; the dependencies B -> C and C -> B are lost, so this split is lossless but not dependency-preserving. A third split, R1(A, B) and R2(C) (no shared attribute at all), fails the lossless test outright: the empty intersection determines nothing, so joining the fragments back can produce spurious rows. None of this contradicts either statement: the statements ask whether a decomposition with each property EXISTS, not whether every decomposition has it -- the R1(A, B)/R2(B, C) split above already exhibits one with both properties at once.

Result: Since a decomposition of R exists that is both lossless and dependency-preserving, both (i) and (ii) are true.

Explore the full course: Nta Ugc Net Paper 2

Loading lesson…