Dettagli generali
Forma normale: proprietà che certifica la qualità di uno schema
Prima forma normale è data per scontata, una relazione ha chiave primaria e attributi sono atomici
Impiegato → Stipendio
Progetto → Bilancio
Freccia "→" significa “determina”
(A1, A2, A3, …, Ai → Ak) Dipendenza funzionale
Dipendenza Funzionale è chiamata “banale” se attributo presente sia a destra che a sinistra (A, B → C, A)
Esempio: Impiegato, Progetto → Funzione
Boyce-Codd
Una relazione R è in forma normale di Boyce-Codd se D.F. non banale x→y, x è superchiave di R
Come faccio ad avere una relazione in forma di BC? Decompongo le tabelle
R si decompone senza perdita su due relazioni se l’insieme degli attributi comuni alle due relazioni è chiave per almeno una delle due relazioni
R(x) si decompone senza perdita in R1(x) e R2(x) se istanza legale (=valida) su R
Ciascuna delle D.F. dello scherma originario dovrebbe coinvolgere attributi che compaiono tutti insieme in uno degli schemi decomposti
Terza forma normale
Una relazione r è in terza forma normale se D.F. non banale x → A
- x è superchiave
- A è primo (ovvero C.C.)
Accetta qualche ridondanza e anomalia, ma solo quelle che non si possono risolvere con boyce-codd:
BCFN Non ammette ridondanze → NON sempre raggiungibile
3FN ammette piccole ridondanze → SEMPRE raggiungibile
Procedimento di normalizzazione in 3FN:
input r
- Trovare le chiavi candidate
- Trovare le dipendenze funzionali
- Verificare se in 3FN tramite la definizione
- Se sì, FINE
- Se no, continua
- Normalizzazione
- Creare una nuova relazione D.F. iniziale
- Avendo l’accortezza di verificare che una delle relazioni decomposte contenga una delle C.C. iniziali
- Se sì, FINE
- Se no, continua
- Creo una relazione contenente solo gli attributi di una C.C.
- Verificare che lo schema decomposto conservi le D.F. senza perdita di informazioni → Non dobbiamo farlo, ne siamo già sicuri
- Verificare che lo schema decomposto sia anche in BCFN
- La C.C. è unica nella relazione di partenza?
- Se sì, 3FN → BCFN
- Se no, applico la definizione di BCFN
- La C.C. è unica nella relazione di partenza?
2FN
| Impiegato | Categoria | Stipendio |
I → C
C → S ← D.F. Transitiva, attr. di sx sono attr. di destra di altra D.F.
C.C. { I }
È in 2FN (non ci sono D.F. parziali)
Non è in 3FN (ci sono D.F. transitive)
1FN
| Impiegato | Progetto | Stipendio |
C.C. { I, P }
I → S ← D.F. parziale
Non è in 2FN
Una relazione è in 2FN se non ha D.F. parziali
Riassunto
R è in 1FN: definita C.C., attributi atomici
R è in 2FN: no D.F. parziali
R è in 3FN: no D.F. transitive (x→y, y→z) ⇐> D.F. x→A, x è superchiave A è primo