I have a relation looks like:
R = (X,Y,C,D)
and functional dependencies:
FD = {XY -> CD, YC -> D, D -> X}
I found out that the candidate keys are XY, YC, YD.
In this case, I have 3 candidate keys... so how do I use them when I decompose the relation into BCNF? I've never done decomposition of the relation with more than one key...
Thanks.
Relation 1: (Y,C,D)
Relation 2: (D,X)
#KeyM
1.Find out the FD that violates BCNF
In this case its D->X
2.Decompose into two relations R1,R2
R1(D,X) R2(D,rest)
3. Repeat 1,2 until all of the relations are in BCNF
Using this our solution is R1(Y,C,D) , R2(D,X)
Related
So i have a relation R(A, B, C, D, E), with FD
{A->C, CE->B, BC->AD, D-E}.
And i want to normalize it to BCNF.
Since A->C and D->E violate BCNF. i substract C and E from ABCDE
which will be ABD. But how do i project the FD of the original Relation to the new ABD relation? I was told that the resulted FD on ABD will be
{AB->D, AD->B}
I don't quite understand it.
Any help would be appreciated!
The algorithm to project a set of dependencies over a decomposed schema is exponential, since one should calculate the closure of each subset of the attributes of the decomposed schema, and see which attributes of the closure belong to the decomposed relation. In simple cases, however, like that of your example, it is easy to check all the possible subsets (six):
A+ = AC
B+ = B
D+ = DE
AB+ = ABCDE (D is present in ABD, so AB → D is in the projection)
AD+ = ABCDE (B is present in ABD, so AD → B is in the projection)
BD+ = BDE
I found a relation this way - CUSTOMER (NAME, STREET, CITY, STATE, ZIP)
That use abbreviating for each following way,
Name - N
STREET - R
CITY - C
STATE - T
ZIP - Z
And given F = {N->RCT, RCT->Z, Z->CT}
And question is decompose to 3NF and BCNF.
I decompose it to 3NF, In here I considered practical way,
R1(N,R,Z)
R2(Z,C,T)
Is it correct?
Or do I have to consider only given functional dependencies for decompose. If I think this way and decompose to 3NF, then the answer will be
R1(N,R,C,T)
R2(R,C,T,Z)
Please someone advice me which way the correct way.
Your first decomposition is not correct, while the second is. To decompose in 3NF, the first step of the “synthesis” algorithm requires to find a canonical cover of the set of dependencies, and then group the dependencies found in groups with the same left hand side.
Since there are no redundant dependencies or superflous attribute in your dependencies, we can start from the three dependencies, that have a different left hand side, producing three relations:
from N → RCT, R1 (N, R, C, T), with key N
from RCT → Z, R2 (R, C, T, Z), with key RCT
from Z → CT, R3 (C, T, Z), with key Z
then, noting that the third relation is completely contained in the second one, we can eliminate it. The final formal step of the algorithm requires that we check if in some decomposed relation is present a key of the original relation (otherwise a new relation with the key should be added). This is true, since Z is such a key, which is present in the second relation. So, the final decomposition is:
R1 (N, R, C, T), with key N
R2 (R, C, T, Z), with key RCT
Note that, by applying the “analysis” algorithms to find the BCNF we obtain a different solution:
R1 <(N, R, C, T),
{ N → RCT }>
R2 <(C, T, Z),
{ Z → CT } >
R3 <(R, Z),
{ } >
but in this decomposition the functional dependency CRT → Z is lost.
I have a relation R consisting of {A,B,C,D,E,F} and the below are the dependencies that follow :
{A} -> {C,F}
{C} -> {D}
{B} -> {E}
This has to be converted to 2NF and 3NF accordingly.
I just converted them accordingly.
Could you please validate and let me know if the below forms are valid ?
2NF :
{A,C,F,D}
{B,E}
3NF :
{A,C,F}
{C,D}
{B,E}
The conversion in 3NF is not a correct one, since you have a decomposition that is not “data preserving” (that is, if you have an instance of the relation R, and project it over the attributes of the decomposed relations, when you do the natural join of them you obtain a relation which is different from R).
The reason is that the (only) candidate key of R is {A,B}, and this two attributes must be both present in a decomposed relation. So, in the synthesis algorithm to decompose a schema in 3NF, the last step says that if no candidate key of the original relation is present in any decomposed relation, one must add a schema with a key. So the correct decomposition is the following:
R1 < (A C F), { A → C F } >
R2 < (B E), { B → E } >
R3 < (C D), { C → D } >
R4 < (A B), { } >
I looked in Decomposing a relation into BCNF answers and tried it on my homework, but i don't get the correct answers, so i ask for help in BCNF decomposition
Consider R=(ABCDEG) & F={BG->CD, G->A, CD->AE, C->AG, A->D}.
I start pick A->D.
Now i got S=(AD), R'=(ABCEG).
I pick G->A.
Now i got S=(AD,AG) R'=(BCEG).
I pick C->G.
Now i think i need to get S=(AD,AG,CG) and R'=(BCE), But the answer in the end is (AD,AG,CGE,BC) .what went wrong? or perhaps, a better algorithm?
To convert a relation R and a set of functional dependencies(FD's) into 3NF you can use Bernstein's Synthesis. To apply Bernstein's Synthesis -
First we make sure the given set of FD's is a minimal cover
Second we take each FD and make it its own sub-schema.
Third we try to combine those sub-schemas
For example in your case:
R = {A,B,C,D,E,G}
FD's = {BG->CD,G->A,CD->AE,C->AG,A->D}
First we check whether the FD's is a minimal cover (singleton right-hand side , no extraneous left-hand side attribute, no redundant FD)
Singleton RHS: So we can write our FD's as { BG->C, BG->D, G->A, CD->A, CD->E, C->A, C->G, A->D}.
No extraneous LHS attribute: We can remove D from LHS of CD->A and CD->E since D is an extraneous attribute here (As we can get D from C since C->A and A->D). So we now have {BG->C, BG->D, G->A, C->A, C->E, C->G, A->D}
No redundant FD's: We note that there are a lot of redundant dependencies here. Removing them we have {BG->C, G->A, C->E, C->G, A->D}
Second we make each FD its own sub-schema. So now we have - (the keys for each relation are in bold)
R1={B,G,C}
R2={G,A}
R3={C,E}
R4={C,G}
R5={A,D}
Third we see if any of the sub-schemas can be combined. We see that R3 and R4 can be combined as they have the same key. So now we have -
S1 = {B,G,C}
S2 = {A,G}
S3 = {C,E,G}
S4 = {A,D}
This is in 3NF. Now to check for BCNF we check if any of these relations (S1,S2,S3,S4) violate the conditions of BCNF (i.e. for every functional dependency X->Y the left hand side (X) has to be a superkey) . In this case none of these violate BCNF and hence it is also decomposed to BCNF.
Note My final answer above is (AD,AG,CGE,BCG). The solution you expect is (AD,AG,CGE,BC) but that's wrong. The last relation here (S1) should also have the G attribute as shown above.
Give input: A relation R0 with set (Minimal) of FD's S0.
Output : A decomposition of R into a collection of relations, all of which are in BCNF
Algo:
R <- R0, and S <- S0
Repeat till R is in BCNF.
If there is a FD X -> Y that violates BCNF condition.
Compute {X}+ , and choose {X}+ as one relation as R1, and
another R2 as {(R - X + ) U X}
Map FD set S on R1 and R2 (determine FDs on R1 and R2).
Recursively repeat the algo on R1 and R2.
Rule:
1.Should be attribute preserving.
2.Should be lossless
3.Should be FD preserving
Example:
R(xyz) FD xy -> z; key : xy
z-> y;
Solve:
z-> y violet the BCNF condition.
So decompose relation R
{z}+= yz;
R1(yz) where key is z
and R2(xz) key is x
Given
R(a, b, c, d, e, p, w)
two keys: (b, c, d) and (p).
F ={
{b,c,d} -> {a,e,p,w},
p -> {a, b, c, d, e, w},
w -> c
}.
Is R in the 3rd normal form?
R(a,b,c,d,e) and a set of FD
F={
Fdl: {a,b} -> {c,d,e}
Fd2: c -> {a,b,d,e}
Fd3: e-> a
}
Keys for R: {a,b} and {c}.
Is R in 2nd normal form?
I know that in 2NF there must not be any partial dependency of any column on primary key, as well as, in 3NF every non-prime attribute of table must be dependent on primary key.
But I don't get these example from the book.
Is R in the 3rd normal form?
No, R is not in 3NF as in 3NF we have two main properties: that if X->A then either X should be a super key or A should be a prime attribute. In FD3 w->c does not have these properties.
Is R in 2nd normal form?
Yes it is in 2NF, as in the RHS of the FDs the prime attributes are present.