Basi di dati - 09Marco Maggini1 Forme normali forme normali Le forme normali verificano la qualità di uno schema di una base di dati relazionale Presenza di ridondanze Complicazioni nella gestione degli aggiornamenti normalizzazione La normalizzazione permette di ottenere schemi che soddisfano la forma normale In genere se la progettazione è fatta accuratamente gli schemi sono già in forma normale La teoria della normalizzazione fornisce comunque uno strumento di verifica
Basi di dati - 09Marco Maggini2 Ridondanze e anomalie: esempio unicofunzione Lo Stipendio di ciascun Impiegato è unico: è funzione del solo Impiegato indipendentemente dai Progetti ai quali partecipa unico Il Bilancio di ciascun progetto è unico: dipende dal solo progetto indipendentemente dai partecipanti
Basi di dati - 09Marco Maggini3 Ridondanze e anomalie Ridondanza: Ridondanza: lo Stipendio di ciascun impiegato è ripetuto per ogni partecipazione a un Progetto Anomalia di aggiornamento: Anomalia di aggiornamento: se lo Stipendio di un Impiegato cambia occorre modificare il valore in tutte le tuple corrispondenti Anomalia di cancellazione: Anomalia di cancellazione: se un Impiegato interrompe la partecipazione ai progetti e tutte le tuple sono eliminate, si perdono anche i suoi dati Anomalia di inserimento: Anomalia di inserimento: se si hanno i dati di un nuovo Impiegato non è possibile inserirli fino a che non si assegna ad un Progetto Si sono rappresentate informazioni eterogenee nella stessa relazione!
Basi di dati - 09Marco Maggini4 Esempi di dipendenze Lo Stipendio di ciascun Impiegato è unico Impiegato Stipendio Il Bilancio di ogni Progetto è unico Progetto Bilancio La Funzione di un Impiegato in un Progetto è unica Impiegato Progetto Funzione
Basi di dati - 09Marco Maggini5 Dipendenze e anomalie Le anomalie corrispondono ad attributi coinvolti in dipendenze funzionali che non coinvolgono la chiave Impiegato Stipendio Progetto Bilancio Le dipendenze che coinvolgono la chiave non generano problemi Impiegato Progetto Funzione
Basi di dati - 09Marco Maggini6 Esempio di normalizzazione Impiegato Stipendio Impiegato Progetto Funzione Progetto Bilancio Impiegato,Stipendio Progetto,Bilancio Impiegato,Progetto,Funzione
Basi di dati - 09Marco Maggini7 Qualità delle decomposizioni Una decomposizione dovrebbe soddisfare le proprietà Decomposizione senza perdita Decomposizione senza perdita le informazioni nella relazione originaria siano ricostruibili con precisione (senza informazioni spurie) Conservazione delle dipendenze Conservazione delle dipendenze le relazioni decomposte hanno la stessa capacità della relazione originaria di rappresentare i vincoli di integrità e quindi di rilevare aggiornamenti illeciti
Basi di dati - 09Marco Maggini8 Progettazione e normalizzazione Si può usare la teoria della normalizzazione per la verifica di qualità di schemi logici schemi concettuali La revisione delle relazioni dello schema logico può far individuare imprecisioni nella formulazione dello schema concettuale ci si concentra su singole entità o relazioni ER la struttura delle dipendenze funzionali è più semplice si può individuare la decomposizione in terza forma normale
Basi di dati - 09Marco Maggini9 Esempio di entità L’entità viola la terza forma normale Il primo membro della dipendenza non contiene l’identificatore Il secondo membro è composto da attributi che non fanno parte della chiave Il motivo è una modellazione concettuale non accurata Il concetto di Fornitore è indipendente da quello di Prodotto Prodotto Codice Nome fornitore Partita IVA Indirizzo Nome prodotto Prezzo Partita IVA Indirizzo Nome fornitore
Basi di dati - 09Marco Maggini10 Esempio.. normalizzato Si introducono una entità per rappresentare il concetto di Fornitore una relazione binaria per collegare il Prodotto al Fornitore (Fornitura) La Partita IVA è l’identificatore del Fornitore Cardinalità della relazione Fornitura Poiché Codice Partita IVA ogni Prodotto ha un solo Fornitore La decomposizione è senza perdita e conserva le dipendenze Prodotto Codice Nome prodotto Prezzo Fornitore Nome fornitore Partita IVA Indirizzo Fornitura (1,1) (0,N)