Brook Preloader

La normalizzazione dei dati nel DataBase

Verso le relazioni – Il problema della “normalizzazione dei dati”

Nella gestione di dati strutturati è fortemente sconsigliato inserire tutte le informazioni all’interno di una sola tabella.

Illustriamo quindi una definizione che be descrive questo suggerimento:

Una riga, corrispondente ad una entità da descrivere nel mondo reale, è caratterizzata da un insieme di dati suddiviso in colonne che descrivono l’ambito di pertinenza del dato.

La definizione è abbastanza semplice da verificare poiché, come nell’esempio seguente, la tabella prodotti contiene un tre righe le cui celle (incroci tra riga e tabella), ne descrivono propriamente i dettagli.

------------------------------------------------------
| prodottoID |      titolo |    quantita |    prezzo |
------------------------------------------------------
|          1 |        Pane |       12 |          1.2 |
|          2 |    Biscotti |  		2 |          2.3 |
|          3 |       Latte |       65 |         0.45 |
------------------------------------------------------

Ampliando l’esempio, immaginiamo di voler tener traccia delle categorie di appartenenza di ogni prodotto, in una gestione tabellare singola (in stile foglio di calcolo) l’approccio più semplice corrisponde alla modifica della tabella in questo modo:

-------------------------------------------------------------------------------------
| prodottoID |      titolo |    quantita |    prezzo |                    categorie |
-------------------------------------------------------------------------------------
|          1 |        Pane |       12 |          1.2 |  alimento, colazione, pranzo |
|          2 |    Biscotti |  		2 |          2.3 |          alimento, colazione |
|          3 |       Latte |       65 |         0.45 |           bevanda, colazione |
-------------------------------------------------------------------------------------

Il che viola uno dei concetti fondamentali della progettazione dei database relazionali, la normalizzazione.

In un Database relazionale non è permesso l’inserimento di dati multipli all’interno della cella (valore della colonna relativo ad una riga).

Questo significa che l’approccio della precedente struttura tabellare è sbagliato, la soluzione a questa problematica implica l’introduzione delle relazioni.

Le relazioni sono delle connessioni logiche tra le tabelle, l’obiettivo delle relazioni è evitare che le tabelle diventino troppo grandi da gestire (a livello di dominio dei dati e quindi delle colonne) e che rispettino il principio di normalizzazione.

Come è facile immaginare le relazioni vengono create prima di immettere dei dati nel database, queste vengono esplicitate nel DDL. Individuare e realizzare una relazione tra tabelle è una procedura molto delicata poiché impatta tutta la vita del DataBase, per questo motivo prima di scrivere codice SQL si passa tramite la progettazione ER.