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}> |