Related
Introduzione
La terza forma normale è importante perché aiuta a ridurre la ridondanza dei dati e a migliorare la coerenza dei dati. Inoltre, essa facilita la gestione e la manutenzione dei dati, poiché riduce il numero di modifiche che devono essere apportate in caso di aggiornamenti o cancellazioni di dati.
Definizione
Dati uno schema di relazione e un insieme di dipendenze funzionali su ,
è in 3NF se:
Dove almeno una di queste due condizioni è verificata:
appartiene a una chiave (è primo)
contiene una chiave (è una super chiave)
oss: È sbagliato scrivere perché poi non sapremmo come valutare dipendenze del tipo ovvero con 2 o più attributi a destra, infatti in una dipendenza del tipo possiamo scomporla in e .
Esempio 1
Le chiavi sono e
Valutiamo le dipendenze in :
- va bene ( è una super-chiave)
Ora non possiamo valutare perché il determinante non è super-chiave e per valutare il dipendente (parte destra) deve essere un singleton. Quindi dobbiamo dividere in e dipendenze che non sono in ma sono in .
Valutiamo le dipendenze in :
- va bene ( fa parte di una chiave quindi è detto primo)
- non rispetta la 3NF perché non è super-chiave e non è primo.
Quindi lo schema non è in 3NF.
Esempio 2
Abbiamo tre chiavi , e .
Valutiamo le dipendenze in :
- va bene ( è super-chiave)
- va bene ( è super-chiave e inoltre è primo)
Ora non possiamo valutare perché il determinante non è super-chiave e per valutare il dipendente (parte destra) deve essere un singleton. Quindi dobbiamo dividere in e dipendenze che non sono in ma sono in .
Valutiamo le dipendenze in :
- va bene ( è primo)
- va bene ( è primo)
Quindi lo schema è in 3NF.
Nota importante
Non è sufficiente considerare solo le dipendenze funzionali in , poiché non possiamo gestire le dipendenze con più attributi al dipendente (parte a destra). Invece, dobbiamo considerare le dipendenze funzionali in , che includono anche le dipendenze derivate.
Definizione Alternativa
Siano R uno schema di relazione e F un insieme di dipendenze funzionali su R. Uno schema R è in 3NF se e solo se non esistono né dipendenze parziali né transitive in R.
Dimostrazione di equivalenza con definizione originale
Dipendenze Parziali e Transitive
Dipendenze Parziali
Siano uno schema di relazione e un insieme di dipendenze funzionali su .
è una dipendenza parziale se:
- è super chiave (contenuto in una chiave)
- non è primo (non è contenuto da una chiave)
Ovvero: un attributo di una relazione dipende solo da una parte della chiave primaria.
Esempio
Dove:
- Le chiavi sono
Matr
eC#
.- Ad ogni numero di matricola (
Matr
) corrisponde un solo cognome (Cogn
)Quindi è possibile determinare la dipendenza
Matr C#
Cogn
e questa dipendenza è detta parziale.Per capirlo meglio abbiamo che l’attributo cognome
Cogn
dipende parzialmente dalla chiaveMatr C#
ovvero non serve la chiave intera per determinarlo ma soltanto una parte della chiave, infattiMatr
è una parte dalla chiave e determinaCogn
.
Dipendenze Transitive
Siano uno schema di relazione e un insieme di dipendenze funzionali su .
è una dipendenza transitiva su se:
- non è primo
- Per ogni chiave di abbiamo che non è contenuto propriamente in e
Ovvero: un attributo di una relazione dipende transitivamente da un’altra parte della relazione che a sua volta dipende dalla chiave primaria.
Esempio
Dove:
- La chiave è
Matr
eCF
.- Ad un numero di matricola corrisponde un solo comune di nascita
Matr
Com
.- Un comune si trova in una sola provincia
Com
Prov
.Quindi possiamo dire che
Matr
Prov
ovvero che ad una matricola corrisponde una sola provincia.In questo caso, la dipendenza transitiva è
Com
Prov
, poiché fa sì che l’attributo provincia dipenda transitivamente dalla chiave attraverso la dipendenzaMatr
Com
eCom
Prov
.La dipendenza
Com
Prov
è detta dipendenza transitiva perché “causa” la transitività, ovvero fa sì che l’attributo provincia dipenda da un’altra parte della relazione che a sua volta dipende dalla chiave primaria.