Normalizzazione dei dati

La normalizzazione dei dati può essere vista come un processo che consente di decomporre schemi di relazione non ottimali in schemi più piccoli, tali da garantire la mancanza di anomalie di aggiornamento (Update Anomalies)

Forme normali

Le forme normali forniscono:

Esistono varie forme normali; le più importanti sono la prima, la seconda e la terza forma normale (1NF, 2NF, 3NF)

Esiste poi la forma normale di Boyce-Codd (BCNF), definita sulla base di 3NF

1NF, 2NF, 3NF e BCNF sono tutte definite considerando solo vincoli di dipendenza funzionale e di chiave

Richiami

Ricordiamo che una superchiave di uno schema di relazione $R = \{A_1, A_2,..,A_n\}$ è un insieme di attributi $S \subseteq R$ tali che non esistono due tuple $t_1$ e $t_2$ in qualche stato r di R per cui $t_1[S] = t_2[S]$

Inoltre, una chiave k è una superchiave con la proprietà di minimalità, cioè la rimozione da k di un qualche attributo fa perdere a k la proprietà di superchiave

Tutte le chiavi “minimali” sono dette chiavi candidate, una tra esse viene scelta arbitrariamente ed è detta chiave primaria

Un attributo di uno schema di relazione R che ricorre in qualche chiave candidata di R è detto attributo primo di R

Prima forma normale (1NF)

<aside> <img src="/icons/exclamation-mark_purple.svg" alt="/icons/exclamation-mark_purple.svg" width="40px" /> La 1NF è stata definita per non consentire attributi multivalore, composti e le loro combinazioni

</aside>

Gli unici valori consentiti da 1NF sono valori atomici (o indivisibili)

La 1NF proibisce anche attributi composti (relazioni annidate)

Per normalizzare: spostare gli attributi della relazione annidata in una nuova relazione e propagare la chiave primaria in essa

Seconda forma normale (2NF)