Please enable JavaScript.
Coggle requires JavaScript to display documents.
NORMALIZZAZIONE DELLE TABELLE - Coggle Diagram
NORMALIZZAZIONE DELLE TABELLE
Normalizzazione
Serve a organizzare meglio le tabelle
Elimina la ripetizione dei dati
Riduce la ridondanza
Migliora la coerenza
Problemi di un database non normalizzato
Ridondanza
Dati ripetuti inutilmente
Inefficienza
Maggiore spazio e più operazioni
Complessità
Tabelle difficili da gestire
Perdita di informazioni
Cancellando dati si rischia di perdere anche informazioni utili
Anomalie di aggiornamento
Anomalia di modifica
Bisogna modificare lo stesso dato in più righe
Anomalia di cancellazione
Cancellando una riga si perdono anche altre informazioni
Anomalia di inserimento
Non si può inserire un dato se manca un’altra informazione
Dipendenza funzionale
Si scrive X → Y
Significa che X determina Y
Conoscendo X si conosce un solo valore di Y
Esempio
ID_persona determina nome e cognome
Prima forma normale
Una tabella è in 1FN se tutti gli attributi sono atomici
Atomico significa non scomponibile
Esempio
generalità va diviso in nome e cognome
Esempio
residenza può essere divisa in indirizzo, CAP e città
Seconda forma normale
Una tabella è in 2FN se
È già in 1FN
Tutte le colonne non chiave dipendono dall’intera chiave primaria
Serve quando la chiave primaria è composta
Non devono esserci dipendenze parziali
Esempio
In forniture, città dipende solo da ID_fornitore
Quindi va spostata in tabella fornitori
Terza forma normale
Una tabella è in 3FN se
È già in 2FN
Tutte le colonne dipendono solo dalla chiave primaria
Non devono esserci dipendenze transitive
Dipendenza transitiva
Una colonna dipende da un’altra colonna non chiave
Esempio
ID_fornitore determina città
città determina id_stato
Quindi id_stato dipende transitivamente da ID_fornitore
Esempio fatture
Tabella iniziale
Contiene dati fattura, cliente, agente e righe prodotto
1FN
Separare i gruppi ripetuti
Creare righe_fatt
2FN
Eliminare dipendenze parziali
Separare item da righe_fatt
3FN
Eliminare dipendenze transitive
Separare clienti e agenti
Archivio normalizzato finale
clienti
codice_cli
ragione_sociale
indirizzo
agenti
ID_agente
nome_agente
fatture
nr_fattura
data
codice_cli
id_agente
righe_fatt
nr_item
nr_fattura
data
quantità
prezzo_unitario
item
nr_item
descrizione