Normalizzazione Le forme normali “certificano” che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti collaterali. La normalizzazione è una procedura che permette di trasformare schemi non normalizzati in schemi che soddisfano una forma normale; a utilizzata come tecnica di verifica dei risultati della progettazione di una base di dati Non costituisce una metodologia di progettazione La definizione delle forme normali può essere fatta esaminando prima i diversi tipi di anomalia che si possono verificare a causa delle ridondanze. Una relazione con anomalie Impiegato Stipendio Progetto Rossi 20 Marte Verdi 35 Giove Verdi 35 Venere Neri 55 Venere Neri 55 Giove Neri 55 Marte Mori 48 Marte Mori 48 Venere Bianchi 48 Venere Bianchi 48 Giove Bilancio 2 15 15 15 15 2 2 15 15 15 Funzione tecnico progettista progettista direttore consulente consulente direttore progettista progettista direttore Anomalie Se si utilizza una sola relazione per rappresentare concetti disomogenei o indipendenti si possono verificare tre tipi di anomalie, oltre ad avere ridondanza nello schema (un dato è ripetuto in tutte le tuple relative al concetto cui si riferisce): • anomalia di aggiornamento: se il dato ridondante varia va modificato in tutte le tuple • anomalia di cancellazione: se non ci sono informazioni relative ad un elemento della chiave si perdono anche tutte le altre informazioni, anche se disponibili, riguardo ad altri concetti non inclusi nella chiave (a meno di ammettere valori nulli nella chiave). • anomalia di inserimento: non è possibile inserire informazioni su un concetto non incluso nella chiave se manca l’informazione su un elemento della chiave. Anomalie Quindi in presenza di ridondanze: • alcuni dati possono essere ripetuti, senza aggiunta di informazioni significative • gli aggiornamenti (concettualmente atomici) devono essere ripetuti per ogni occorrenza dei dati relativi. • La cancellazione di una tupla perché non è più valido l’insieme di concetti nel suo complesso può comportare l’eliminazione di tutti i concetti, anche quelli che restano validi • Non è possibile inserire un solo concetto per una relazione se non esiste un intero insieme di concetti Perché questi fenomeni indesiderabili? • abbiamo usato un'unica relazione per rappresentare informazioni eterogenee – gli impiegati con i relativi stipendi – i progetti con i relativi bilanci – le partecipazioni degli impiegati ai progetti con le relative funzioni Dipendenze funzionali Sono vincoli di integrità di tipo funzionale fra gli attributi di una relazione. Formalmente: data una relazione r su uno schema R(X) e due sottoinsiemi non vuoti Z e Y di X, esiste per r una dipendenza funzionale tra Y e Z se per ogni coppia di tuple t1 e t2 di r aventi gli stessi valori su Y, t1 e t2 hanno anche gli stessi valori su Z. Si indica con Y Z (es. Impiegato Stipendio) Y Z è non banale se nessun attributo in Z appartiene a Y Es. Impiegato Progetto Progetto è banale Se K è una chiave esiste una dipendenza funzionale da K di tutti gli altri attributi. Il vincolo di dipendenza funzionale generalizza il vincolo di chiave. Y -> Z su R(x) degenera nel vincolo di chiave se Y U Z = X Tornando all’esempio….. • gli impiegati hanno un unico stipendio Impiegato Stipendio • i progetti hanno un unico bilancio Progetto Bilancio • In ciascun progetto, un impiegato svolge una sola funzione Impiegato Progetto Funzione Le prime due dipendenze funzionali causano anomalie, la terza no. Impiegato Stipendio Progetto Rossi 20 Marte Verdi 35 Giove Verdi 35 Venere Neri 55 Venere Neri 55 Giove Neri 55 Marte Mori 48 Marte Mori 48 Venere Bianchi 48 Venere Bianchi 48 Giove Bilancio 2 15 15 15 15 2 2 15 15 15 Funzione tecnico progettista progettista direttore consulente consulente direttore progettista progettista direttore Impiegato Stipendio Progetto Bilancio Impiegato Progetto Funzione Dipendenze funzionali e anomalie • La terza dipendenza funzionale corrisponde ad una chiave e non causa anomalie • Le prime due non corrispondono a chiavi e causano anomalie • La relazione contiene alcune informazioni legate alla chiave e altre ad attributi che non formano una chiave • • • • Impiegato Progetto è chiave Impiegato solo no Progetto solo no Le anomalie sono causate dalla presenza di concetti eterogenei: – proprietà degli impiegati (lo stipendio) – proprietà di progetti (il bilancio) – proprietà della chiave Impiegato Progetto Forma normale di Boyce e Codd Le dipendenze funzionali X -> Y in cui X sia una superchiave NON possono creare anomalie o ridondanze, in quanto X di per sé implica l’unicità di ogni tupla definita su tale insieme. Se X non è superchiave ciò può non accadere. Una relazione r si definisce in forma normale di Boyce e Codd se per ogni dipendenza funzionale X->Y definita su di essa, X contiene una chiave K di r, cioè X è superchiave di r. La forma normale di Boyce e Codd richiede che i concetti in una relazione siano omogenei (solo proprietà direttamente associate alla chiave) Decomposizione in forma normale In generale, se una relazione non è in forma normale, è possibile portarla in forma normale producendo tante relazioni quante sono le dipendenze funzionali. Questo è possibile in molti casi in modo diretto e naturale se le dipendenze sono indipendenti (es. su insiemi disgiunti di attributi). In altri casi la cosa può essere più complicata. Impiegato Stipendio Progetto Bilancio Funzione Rossi 20 Marte 2 tecnico Verdi 35Impiegato Giove 15 progettista Progetto Funzione Marte tecnico Verdi Stipendio 35 Rossi Venere 15 progettista Impiegato Giove progettista Rossi 20 Bilancio Neri 55 Verdi Venere 15 Progetto direttore Verdi Venere progettista Verdi 35 Marte 2 Neri 55 Giove 15 consulente Neri Venere direttore Neri 55 Giove 15 Neri Giove consulente Neri 55 Marte 2 consulente Mori 48 Venere 15 Neri Marte consulente Bianchi 48 Mori 48 Mori Marte 2 direttore Marte direttore Venere progettista Mori 48 Mori Venere 15 progettista Bianchi Venere progettista Bianchi 48 Bianchi Venere 15 progettista Giove direttore Bianchi 48 Giove 15 direttore Decomposizione in forma normale In generale, la progettazione concettuale fatta mediante il modello E-R tende a garantire che lo schema rappresenti in modo separato le entità fondamentali e le rispettive associazioni. Quindi se la progettazione concettuale è stata fatta in modo corretto, la base di dati risultante dalla sua traduzione dovrebbe essere in forma normale. Una buona decomposizione deve soddisfare le proprietà di essere senza perdita e di conservare le dipendenze. Non sempre così facile Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Sede Roma Milano Milano Milano Milano Impiegato Sede Progetto Sede Decomponendo in base alle dipendenze: Impiegato Rossi Verdi Neri Sede Roma Milano Milano Progetto Marte Giove Saturno Venere Sede Roma Milano Milano Milano Ricomposizione della tabella Impiegato Rossi Verdi Neri Sede Roma Milano Milano Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Verdi Saturno Neri Giove Progetto Marte Giove Saturno Venere Sede Roma Milano Milano Milano Sede Roma Milano Milano Milano Milano Milano Milano La relazione ottenuta è diversa dalla relazione di partenza Decomposizione senza perdita Data una relazione r su X, se X1 e X2 sono due sottoinsiemi di X la cui unione è X stesso, allora il join delle due relazioni ottenute per proiezione di r su X1 e X2 è una relazione che contiene tutte le tuple di r più eventualmente alcune altre che si possono definire “spurie”. La decomposizione di r su X1 e X2 è senza perdita se il join delle due proiezioni è uguale ad r stessa, cioè non contiene tuple spurie. Se si deve fare una decomposizione ai fini della normalizzazione,è essenziale che sia senza perdita. Sia r una relazione su X e X1 e X2 tali che X1 U X2 = X e X0 = X1 X2 . Se r soddisfa la dipendenza funzionale X0->X1 oppure X0 -> X2 allora la decomposizione è senza perdita. Cioè la decomposizione è senza perdita se gli attributi comuni sono superchiave per una delle relazioni decomposte. Conservazione delle dipendenze La decomposizione in più relazioni può creare casi in cui un inserimento di dati illecito per la relazione originaria (per la violazione di una dipendenza funzionale) possa non essere rilevato nel caso della relazione decomposta. Una proprietà fondamentale delle decomposizioni deve essere quella di conservare le dipendenze. Questo può essere garantito se ciascuna delle dipendenze funzionali dello schema originario coinvolge attributi che compaiono tutti insieme in uno degli schemi decomposti. Conservazione delle dipendenze Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Impiegato Rossi Verdi Neri Sede Roma Milano Milano Sede Roma Milano Milano Milano Milano Impiegato Sede Progetto Sede Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Supponiamo di voler inserire una nuova tupla che specifica la partecipazione dell'impiegato Neri, che opera a Milano, al progetto Marte Conservazione delle dipendenze Impiegato Rossi Verdi Neri Neri Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Sede Roma Milano Milano Milano Neri Impiegato Progetto Rossi Marte Verdi Giove Verdi Venere Neri Saturno Neri Venere Neri Marte Progetto Sede non è conservata Marte Sede Roma Milano Milano Milano Milano Milano Qualità di una decomposizione Quindi, una decomposizione deve soddisfare le proprietà di decomposizione senza perdita e di conservazione delle dipendenze. • La decomposizione senza perdita garantisce che le informazioni nella relazione originaria siano ricostruibili con precisione a partire da quelle decomposte. In questo caso la stessa interrogazione dà gli stessi risultati sulla relazione originaria e su quelle decomposte. • La conservazione delle dipendenze garantisce che le relazioni decomposte rappresentano i vincoli di integrità quelle originarie. Ogni aggiornamento (non) valido su quella originaria corrisponde a un aggiornamento (non) valido su quelle decomposte. Queste possono accettare anche aggiornamenti leciti impossibili su quella originaria, a causa delle anomalie rimosse con la decomposizione. Una relazione non-normalizzata Dirigente Progetto Rossi Marte Verdi Giove Verdi Marte Neri Saturno Neri Venere Sede Roma Milano Milano Milano Milano Progetto Sede Dirigente Dirigente Sede La decomposizione è problematica Progetto Sede Dirigente coinvolge tutti gli attributi e quindi nessuna decomposizione può preservare tale dipendenza Quindi in alcuni casi la forma normale di Boyce & Codd “non è raggiungibile” Terza forma normale Esistono schemi che violano la forma normale di Boyce e Codd che non sono decomponibili ai fini della normalizzazione. Es. se è presente una dipendenza funzionale in cui un membro sinistro non è superchiave o se una dipendenza funzionale coinvolge già tutti gli attributi e quindi non è decomponibile conservando le dipendenze. In questi casi si ammette una condizione meno restrittiva, che a sua volta non ammette ridondanze o anomalie pur ammettendo situazioni come quelle viste sopra. Tale condizione si chiama terza forma normale. Terza forma normale Si dice che una relazione r è in terza forma normale se, per ogni dipendenza funzionale X -> Y definita su di essa è verificata almeno una delle seguenti condizioni: • X contiene una chiave K di r • ogni attributo in Y è contenuto in almeno una chiave di r La terza forma normale è meno forte della forma normale di Boyce e Codd ma è sempre ottenibile. Uno schema non decomponibile in BCNF Dirigente Progetto Rossi Marte Verdi Giove Verdi Marte Neri Saturno Neri Venere Sede Roma Milano Milano Milano Milano Dirigente Sede Progetto Sede Dirigente Una possibile riorganizzazione Dirigente Progetto Rossi Marte Verdi Giove Verdi Marte Neri Saturno Neri Venere Sede Roma Milano Milano Milano Milano Reparto 1 1 1 2 2 Dirigente Sede Reparto Sede Reparto Dirigente Progetto Sede Reparto Decomposizione in BCNF Dirigente Rossi Verdi Neri Sede Reparto Roma 1 Milano 1 Milano 2 Progetto Marte Giove Marte Saturno Venere Sede Reparto Roma 1 Milano 1 Milano 1 Milano 2 Milano 2 Progettazione e normalizzazione • la teoria della normalizzazione può essere usata nella progettazione logica per verificare lo schema relazionale finale • si può usare anche durante la progettazione concettuale per verificare la qualità dello schema concettuale Nome fornitore Codice Nome prodotto Indirizzo Prodotto Partita IVA Prezzo PartitaIVA NomeFornitore Indirizzo Analisi dell’entità – L’entità viola la terza forma normale a causa della dipendenza: PartitaIVA NomeFornitore Indirizzo – Possiamo decomporre sulla base di questa dipendenza Nome prodotto Partita Nome IVA fornitore Codice (1,1) Prodotto Prezzo (0,N) Fornitura Fornitore Indirizzo Dipartimento (0,N) (0,N) Professore (0,1) Studente Tesi (0,N) Corso di laurea Studente Corso di laurea Studente Professore Professore Dipartimento Analisi della relationship • La relationship viola la terza forma normale a causa della dipendenza: Professore Dipartimento • Possiamo decomporre sulla base di questa dipendenza (0,N) Afferenza (1,1) Professore Dipartimento (0,N) (0,1) Tesi (0,N) Corso di laurea Studente Ulteriore analisi sulla base delle dipendenze • La relationship Tesi è in BCNF sulla base delle dipendenze Studente CorsoDiLaurea Studente Professore • le due proprietà sono indipendenti • questo suggerisce una ulteriore decomposizione (0,N) Professore (0,1) Tesi Studente (1,1) (1,1) (0,N) Afferenza (0,N) Dipartimento Corso di laurea Iscrizione (0,N) Corso di laurea