Ho letto molte fonti diverse su come differenziare le relazioni che sono in 3NF/BCNF. E ho finora questo è la mia comprensione ...Trovare una relazione in 3NF ma non in BCNF
userò questa relazione come un esempio ...
R = {A, B, C, D, E}
e
F = {A -> B, B C - > E, E D -> A}
.
In primo luogo dobbiamo trovare le chiavi della relazione. I used this video to help me do that. e ho avuto
Keys = {ACD, BCD, CDE}
Ora per assicurarsi R
è in BCNF , dobbiamo fare in modo che il lato sinistro di ogni dipendenza funzionale in F
è uno dei Keys
. Sappiamo immediatamente che questo non è il caso, perché il primo FD è A -> B
e A
non è una delle chiavi. Quindi non è in BCNF.
Ora per assicurarsi R
è in 3NF, dobbiamo fare in modo che il lato sinistro di ogni dipendenza funzionale in F
è uno dei Keys
OR lato destro di ogni dipendenza funzionale in F
è un sottoinsieme di uno degli Keys
. Se si guarda il lato destro di ogni FD, sono B
, E
e A
. Questi sono ciascuno un sottoinsieme di Key
, quindi questo significa che è in 3NF.
Quindi questo è uno dei rari casi (secondo wiki) in cui una relazione è in 3NF
ma non in BCNF
. Questo metodo è corretto? È affidabile? Mi sto perdendo qualcosa?
Sì, hai fatto tutto bene. – laurids
si consiglia di controllare questo: http://class2go.stanford.edu/db/Winter2013 – laurids