Skip to content

Relational-Database-Design-BCNF

Lossless-join Decomposition

  • For the case of R=R1R2 a decomposition of R into R1 and R2 is lossless join if and only if at least one of the following dependencies is in F+:

R1R2R1R1R2R2

Dependency Preservation

  • Let the schema R is decomposed into R1,R2,Rn.
  • Let Fi be the subset of dependencies F+ that only includes attributes in Ri for 1in,
  • The decomposition is dependency preserving, if (F1F2Fn)+=F+
  • If the decomposition is not dependency preserving, then checking updates for violation of functional dependencies may require computing joins, which is expensive.

Example: R={A,B,C}F={AB,BC} can be decomposed in two different ways

  • R1={A,B},R2={B,C}

    • Lossless-join decomposition
      • R1R2={B} and BBC
      • Dependency preserving
  • R1={A,B},R2={A,C}

    • Lossless-join decomposition
      • R1R2={A} and AAB
      • Not dependency preserving (cannot check BC without computing R1R2)

BCNF