Uno schema relazionale è in 3NF se per ogni dipendenza non banale
è una superchiave
oppure
è primo (appartiene a qualche chiave)
Algoritmo
trasformare in 3NF
creo una tabella formata dagli attributi non presenti in F
per ogni dipendenza di F creo una tabella apposita
"X" ridondanti
nel caso in cui F sia del tipo
al posto di creare un ulteriore tabella, unisco l’attributo alla tabella già esistente
preservazione dati
se vogliamo far preservare i dati, creiamo una tabella che contiene una chiave:
Verifica forma normale con più decomposizioni
soluzione generale
nel caso chieda di verificare se la decomposizione sia in qualche forma normale (avendo più di una decomposizione) sarà necessario per ogni decomposizione:
estendere l’insieme di dipendenze funzionali
verificare le condizioni della forma normale in question (con F estesa)
per ogni decomposizione calcolare:
e verificare se rispetta la forma normale rispetto ad
esempio di domanda
data la decomposizione
R1(A,B)
R2(B,D,E)
R3(B,C)
e le dipendenze
F = {
b->c,
c->de
}
È in qualche forma conosciuta? motivare la risposta ed stendere gli schemi con le rispettive dipendenze funzionali
soluzione
estendo F
calcolo
calcolo le seguenti chiusure:
tolgo la lettera che li rappresenta:
vado a prendere per ogni insieme solo gli elementi che stanno in R1
per ogni insieme considerare la dipendenza ""
in questo caso, rispetta la bcnf
calcolo
calcolo le seguenti chiusure:
tolgo la lettera che li rappresenta:
vado a prendere per ogni insieme solo gli elementi che stanno in R2
rispetta
calcolo
in conclusione la decomposizione generale rispetta la BCNF.