Sei qui: Home Page -> Notes -> Università -> Basi di Dati -> Normalizzazione

Normalizzazione

La Normalizzazione è attuata sulle basi di Dati per ottemperare ad eventuali anomalie o criticità.
E' un processo con il quale si porta la base dati a soddisfare le cosiddette forme normali. L'obbiettivo minimo è quello di portare una base dati in 3a forma normale.

PRIMA FORMA NORMALE

Una tabella è in prima forma normale se e solo se ciascun attributo è definito su un dominio di valori atomici ( Ovvero non è presente più di una colonna riferita ad uno stesso attributo )
Le successive forme normali mirano alla distribuzione delle informazioni su più relazioni : lo scopo è quello di ridurre i legami funzionali tra i doversi attributi di una relazione. Tali legami sono esplicitati attraverso il concetto di dipendenza funzionale.

Ma spieghiamo per bene cosa si intende per dipendenza funzionale :
"Data una relazione R(X) ed un insieme di attributi A e B non vuoti e sottoinsiemi di X si dice che B è funzionalmente dipendente da da A se ad ogni combinazione di valori di A corrisponde una sola combinazione di valori di B". E si scrive A-->B ( B dipende da A ) .
  • Una dipendenza si dice non banale se nessun sottoinsieme di B è anche sottoinsieme di A.

  • Il vincolo di dipendenza funzionale generalizza il vincolo di chiave, ovvero "Data una relazione R(X) con chiave K esiste una dipendenza funzionale tra K e un qualsiasi insieme di attributi di R(X)".

Il processo di normalizzazione si basa sulla decomposizione delle relazioni che non sono in forma normale. Ovvero la distribuzione delle informazioni su più relazioni.

"Una decomposizione di una relazione R(X) è un insieme di relazioni R1,...Rn ottenute proiettando R(X) su un insieme di attributi A1,...An tali che A1 U .... U An è uguale a X".
Non sempre effettuando il join tra le relazioni si ottiene la relazione iniziale. Per identificare le relazioni con le quali si ottiene tramite join la relazione originale si introduce la definizione di lossless-join :
"Una decomposizione di R(X) in R1(A) e R2(B) si dice lossless-join se R(X) = R1(A) JOIN R2(B)".
Una decomposizione non lossless-join è detta lossy-join (decomposizione con perdita).

Condizione sufficiente affinchè una decomposizione sia senza perdita è che dati A e B sottoinsiemi di X e A U B = X. Inoltre A intersezione B = C allora C deve essere superchiave per almeno una delle relazioni R1(A) o R2(B) .

Una volta decomposta la relazione, vanno mantenute le dipendenze (conservazione delle dipendenze).
Per mantenere le dipendenze ciauscuna delle relazioni dovrebbe coinvolgere attributi che compaiono tutti in una delle tabelle decomposte.

SECONDA FORMA NORMALE

Una tabella si dice in seconda forma normale (2NF) se e solo se è in 1NF e ciascun attributo non chiave è completamente dipendente dalla chiave primaria.

Se una relazione non è in seconda forma normale può presentare alcuni problemi

  • anomalia di aggiornamento
  • anomalia di inserimento
  • anomalia di cancellazione

TERZA FORMA NORMALE

Una tabella si dice in terza forma normale (3NF) se e solo se è in 2NF e per ogni dipendenza funzionale non banale X---> A tra due insiemi di attributi X ed A è vera una delle seguenti affermazioni:
  • X è una superchiave
  • A è menbro di una chiave

FORMA NORMALE DI BOYCE-CODD

Una tabella si dice in forma normale di Boyce-Codd se e solo se per ogni dipendenza funzionale X-->A , X è una superchiave. La forma normale di Boyce-Codd è da considerare come una restrizione della terza forma normale (infatti non prevede che il termine destro sia menbro di una chiave).
  • è garantita la raggiungibilità della terza forma normale

  • non è garantita la raggiungibilità della forma normale di Boyce-Codd (tale difetto è associato ad una anomalia di cancellazione)
Per ulteriori chiarimenti allego le slides del corso scaricabili da qui
Sei qui: Home Page -> Notes -> Università -> Basi di Dati -> Normalizzazione