Binary Decomposition

Decomposition
1
Binary Decomposition - 1

Binary Decomposition can be applied to:

Decompose a non-BCNF relation into a
collection of BCNF relations

Decompose a non-3NF relation into a
collection of 3NF relations
2
Binary Decomposition - 2

Basic Steps of Binary Decomposition:
Suppose X  A  F is a FD violating the BCNF
(resp. 3NF) requirement, where X  R and A 
R

Decompose R into XA and R – A

If either XA or R – A is not in BCNF (resp.
3NF), decompose it further
3
Binary Decomposition - 3

If R w.r.t. F is not in BCNF, we can always
obtain a lossless-join decomposition of R into a
collection of BCNF relations. However, it may
not always be dependency preserving

If R w.r.t. F is not in 3NF, we can always obtain
a lossless-join decomposition and dependency
preserving of R into a collection of 3NF
relations. How?
4
Binary Decomposition - 4

Let R = { R1, R2, . . . Rn} be the result of binary
decomposition. This is always lossless-join, but may not
preserve the FD’s  need to fix it



Identify the set Lost of FD’s in F that are lost (i.e., not
preserved)
For each FD X  A in Lost, create a relation schema
XA and add it to R
Refinement step: if there are several FD’s with the
same LHS, e.g., X  A1, X  A2, . . . , X  Ak, we
replace these k FD’s with a single FD X  A1…Ak
and create just one relation with schema XA1…Ak
5
Synthesis Approach



Synthesis Approach is applicable for 3NF
decomposition only
Consider relation schema <R, F>
The synthesis approach:



Get a canonical cover FC of F
For each FD X  A in FC, add schema XA to R
If the decomposition R is not lossless, need to fix
it by adding to R an extra relation schema
containing just those attributes that form any key
of R
6
Review: Decomposition into 3NF

Binary Decomposition:



Lossless-join √
May not be dependency preserving. If so, then
add extra relations XA, one for each FD X → A
we lost
Synthesis Approach


Dependency preservation √
May not be lossless-join. If so, we need to add to
R one extra relation schema that includes the
attributes that form any key of R
7
Question #1




1.
2.
Consider R = {A, B, C, D, E, F, G, H} with a set of
FDs
F = {CD→A, EC→H, GHB→AB, C→D, EG→A,
H→B, BE→CD, EC→B}
The candidate keys are: {BEFG, CEFG, EFGH}
Is R w.r.t. F in 3NF? If not, decompose it into
relations in 3NF using:
Binary Decomposition
Synthesis Approach
8
To Check Lossless Join - 1
Suppose relation R{A1 , . . . , Ak} is decomposed
into R1,. . . , Rn
To determine if this decomposition is lossless, we
use a table,
L[ 1 … n ] [ 1 . . . k ]
Initializing the table:
for each relation Ri do
for each attribute Aj do
if Aj is an attribute in Ri
then L [ i ][ j ]  aAj
else L [ i ][ j ]  biAj
9
To Check Lossless Join - 2
repeat
for each FD X  Y in F do:
if ∃ rows i and j such that L [ i ] == L [ j ], for each attribute
in X,
then for ∀ column t corresponding to an attribute At in Y do:
if L [ i ][ t ] == aAt
then L [ j ][ t ]  aAt
else if L [ j ][ t ] == aAt
then L [ i ][ t ]  aAt
else L [ j ][ t ]  L [ i ][ t ]
until no change
The decomposition is lossless if L contains a row of all a’s.
10
Question #2

Assume R(A, B, C, D, E, F, G) with the set of FDs
F={C→AD, E→G, FG→A, EF→A, G→B, BE→C}
is decomposed into the following relations. Check if
this decomposition is lossless join.
R1 = {A, C, D}
R2 = {E, C, G}
R3 = {A, F, G}
R4 = {A, E, F}
R5 = {B, G}
R6 = {B, C, E}
11