Corso Database
- Normalizzazione dei database
La normalizzazione dei database

Indice articolo

  1. Introduzione al database
  2. DBMS - Database Management System
  3. Modelli logici
  4. Normalizzazione dei database
  5. Architettura client server e distribuita

Per eliminare definitivamente la ridondanza dalle relazioni e quindi dal database, si ricorre ad un processo di normalizzazione: si tratta di un procedimento di tipo graduale, che realizza un’ottimizzazione progressiva a partire da relazioni non normalizzate fino a raggiungere un certo livello di normalizzazione.

Prima di entrare in merito alla normalizzazione è bene introdurre alcuni particolari concetti:

Definizione di ridondanza:

Si ha ridondanza dei dati ogni volta che vengono memorizzati inutilmente dei dati ripetuti.

Esempio:
Si supponga di disporre di una tabella in cui vengono registrati tutti gli acquisti di merci effettuati da un’impresa mercantile.

Acquisti (Cod_fornitore, Nome_fornitore, Codice_fiscale, Merce, Quantità)

In un caso come questo i dati di Fornitore e Codice_ficale vengono ripetuti inutilmente ogni volta che compare la registrazione di un acquisto. Si può ovviare ad una tale problema separando le informazioni ridondanti della tabella acquisti:

Acquisti (Merce, Cod_fornitore, Quantità)
Fornitori (Cod_fornitore, Nome_fornitore, Codice_fiscale)

In questo modo se gli acquisti effettuati da un certo fornitore compaiono mille volte, non dovremo per mille volte ripetere inutilmente l’informazione Nome_fornitore, Codice_fiscale.

Dipendenza funzionale:

Si ha dipendenza funzionale tra un attributo x e una chiave se i valori di x dipendono dai valori assunti dalla chiave, ovvero se si viene a determinare una relazione biunivoca tra i valori di x e i valori della chiave.

Esempio:
Stabiliamo che nella relazione di esempio abbiamo come chiave primaria Nome e Cognome.

ANAGRAFICA (Nome, Cognome, Indirizzo)

È evidente che Indirizzo è dipendente funzionalmente dalla chiave, ciò significa che per ogni persona corrisponde un indirizzo.

Dipendenza funzionale transitiva:

Si verifica una dipendenza funzionale transitiva quando un attributo J appartenente alla relazione r dipende da un attributo K della relazione che non è chiave candidata e che a sua volta dipende da un attributo A, che è chiave candidata o primaria.

Data la relazione:     r (A, B, K, J)     con A chiave primaria o candidata
e avendo che: (il simbolo -> significa : ” determina il valore di:”): A -> K e K -> J
si verifica una dipendenza transitiva tra A e J , in quanto J dipende da A tramite K.

Esempio:
Nella seguente relazione possiamo renderci conto come il valore di Collocazione dipenda da Genere e come il valore di Genere dipenda da Identificativo_videocassetta:

VIDEOCASSETTE (Identificativo_videocassetta, Genere, Collocazione)

Identificativo_videocassetta è la chiave primaria, essa identificando la videocassetta determina il Genere; le videocassette vengono collocate raggruppandole per genere.

Prima forma normale:

Una relazione si dice in prima forma normale (1NF) se e solo se tutti i suoi attributi sono valori atomici.
Ciò implica che né gli attributi, né i valori da questi assunti possono essere scomposti ulteriormente.

La relazione che segue non è in prima forma normale:

NOME INDIRIZZO
--------------------------------------- -----------------------
Rossi & C. s.p.a Via Verdi, 5 Roma
Martini s.n.c. Via Centrale, 4 Milano
Paoli s.a.s. P.za Libertà, 12 Pisa
................................... ...................................


in quanto l’attributo INDIRIZZO non è atomico: può essere suddiviso in Indirizzo e Città. La relazione si normalizza trasformandola in:

NOME INDIRIZZO CITTA'
---------------------------- -------------------- -----------
Rossi & C. s.p.a Via Verdi, 5 Roma
Martini s.n.c. Via Centrale, 4 Milano
Paoli s.a.s. P.za Libertà, 12 Pisa
................................... ................................... ............


Seconda forma normale:

Una relazione è in seconda forma normale se e solo se soddisfa la 1NF e inoltre ciascun attributo che non fa parte della chiave è indipendente funzionalmente da una qualunque chiave candidata.

Per normalizzare la relazione è necessario estrarre la dipendenza funzionale riscontrata tra un sottoinsieme della chiave e l’attributo in questione, che darà luogo ad un’altra relazione.

Se applichiamo quanto detto alla relazione r (A, B, C, V, Z) con ABC chiave primaria, V dipende funzionale da ABC e Z dipende funzionale da AB, per normalizzare la relazione dobbiamo realizzare due nuove relazioni come segue:

r’ (A, B, C, V) e r’’ (A, B, Z)

Esempio:
Abbiamo una relazione che rappresenta delle scrivanie da ufficio prodotte da una azienda industriale, la chiave primaria è data Tipo_tavolo e Tipo_legno.

Tipo_tavolo Tipo_legno Tipo_finitura
------------------------------ --------------------------- -------------------------------
Manager Mogano Ottone
Manager Ciliegio Acciaio inox
Montecarlo Noce Sughero
Montecarlo Mogano Ottone
Top Noce Sughero


Tipo_finitura è dipendente funzionalmente da un sottoinsieme della chiave primaria, ovvero da Tipo_legno, dunque la tabella non è in 2NF.
È possibile normalizzare la relazione trasformandola in:

Tipo_tavolo Tipo_legno
----------------------------- --------------------------
Manager Mogano
Manager Ciliegio
Montecarlo Noce
Montecarlo Mogano
Top Noce

 

Tipo_legno Tipo_finitura
------------------------------- -----------------------------
Mogano Ottone
Ciliegio Acciaio inox
Noce Sughero


Terza forma normale:

La terza forma normale ha come scopo l’eliminazione dalla relazione delle dipendenze funzionali transitive.

Una relazione è in terza forma normale (3NF) se, oltre ad essere in 2NF, ciascun attributo che non partecipa alla chiave non è transitivamente dipendente da una qualunque chiave candidata.


Art Net - 18.1.2006

Tags:  database normalizzazione
Previous   Pagina 4 / 5   Next
Commenti
12.5.2013 Francesco Lombardo
Molto utile, ben scritto e soddisfacente. Continuate così
Aggiungi un Commento



captcha
Inserisci il codice visualizzato
Il commento sarà visualizzato dopo l'approvazione dello staff