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 update anomalies

Forme normali

Le forme normali forniscono:

1NF, 2NF, 3NF, BCNF → solo vincoli di dipendenza funzionale e di chiave

4NF → dipendenza multivalued

5NF → join dependency

Definizioni

Una superchiave di uno schema di relazione $R = \{A_1, A_2,..,A_n\}$ è un insieme di attributi $S \subseteq R$ con la proprietà che non esistono due tuple $t_1$ e $t_2$ in qualche stato di relazione legale di r di R tali che $t_1[S] = t_2[S]$

Una chiave k è una superchiave con la proprietà aggiuntiva che 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 $A$ di uno schema di relazione $R$ è primo se e solo se fa parte di almeno una chiave candidata 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)

Dipendenza funzionale piena

Una dipendenza funzionale $X \to Y$è piena se la rimozione di qualche attributo A da X implica che la dipendenza non vale più, cioè: $\forall A \in X, (X \backslash \{A\}) \not \rightarrow Y$

Una dipendenza funzionale $X \to Y$ è parziale se qualche attributo $A \in X$ può essere rimosso e la dipendenza vale ancora, cioè $\exist A \in X, (X\backslash \{A\}) \rightarrow Y$