Terza forma normale e Boyce-Codd

Alcuni esempi, redatti con l'aiuto di http://dblab.dsi.unive.it:8080/

Attributi Dipendenze funzionali Chiavi Attributi primi Boyce-Codd 3NF Commento
a - {(a)} (a) R<(a){}> R<(a){}> Nessuna d.f.
a a→a {(a)} (a) R<(a){}> R<(a){}> D.f. banale, non si riporta
a, b a→b {(a)} (a) R<(a,b){a→b}> R<(a,b){a→b}>
a, b a→b, b→a {(a), (b)} (a b) R<(a,b){a→b,b→a}> R<(a,b){b→a}> Differenza tra BC e 3NF: nel primo caso sono esplicite entrambe le d.f., nella 3NF solo una
a, b, c a→b, b→c {(a)} (a) R1<(a,b){a→b}>, R2<(b,c){b→c}> R1<(a,b){a→b}>, R2<(b,c){b→c}> In entrambi i casi, si "estrae" una relazione. Dipendenze preservate.

Nota bene: b non è una chiave, ma diventa la chiave di una nuova relazione sia secondo BC sia secondo 3NF

a, b, c a→b, ab→c {(a)} (a) R<(a,b,c){a→b,a→c}> R<(a,b,c){a→bc}> b è determinato da a, quindi c è determinato dalla sola a (secondo Boyce-Codd) oppure in ogni caso da ab (secondo 3NF)
a, b, c a→b, ab→c, bc→a {(a),(bc)} (abc) R<(a,b,c) {a→b, a→c, bc→a}> R<(a,b,c) {bc→a}>
a, b, c, d, e, g, h, i adg→gi
ach→adg
bc→ad
ce→ach
{(bce)} (bce) R<(a,b,c) {a→b, a→c, bc→a}> R<(a,b,c) {bc→a}>