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; è utilizzata come tecnica di verifica dei risultati della progettazione di una base di dati. Non costituisce una metodologia di progettazione Prima di definire le forme normali è necessario esaminare i diversi tipi di anomalia che si possono verificare a causa delle ridondanze.
Una relazione con anomalie
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 linformazione 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 linsieme di concetti nel suo complesso può comportare leliminazione 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 t 1 e t 2 di r aventi gli stessi valori su Y, t 1 e t 2 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
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. Tornando allesempio…..
Impiegato Stipendio Progetto Bilancio Impiegato Progetto Funzione
Dipendenze funzionali e anomalie La parte sinistra della 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 lunicità 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.
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 Sede Progetto Sede Decomponendo in base alle dipendenze:
Ricomposizione della tabella La relazione ottenuta è diversa dalla relazione di partenza
Decomposizione senza perdita Data una relazione r su X, se X 1 e X 2 sono due sottoinsiemi di X la cui unione è X stesso, allora il join delle due relazioni ottenute per proiezione di r su X 1 e X 2 è una relazione che contiene tutte le tuple di r più eventualmente alcune altre che si possono definire spurie. La decomposizione di r su X 1 e X 2 è 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 X 1 e X 2 tali che X 1 U X 2 = X e X 0 = X 1 X 2. Se r soddisfa la dipendenza funzionale X 0 ->X 1 oppure X 0 -> X 2 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.
Impiegato Sede Progetto Sede Supponiamo di voler inserire una nuova tupla che specifica la partecipazione dell'impiegato Neri, che opera a Milano, al progetto Marte Conservazione delle dipendenze
Progetto Sede non è conservata
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, nelle relazioni decomposte, i vincoli di integrità di quelle originarie siano ancora validi. Ogni aggiornamento (non) valido su quella originaria corrisponde a un aggiornamento (non) valido su quelle decomposte. Queste ultime possono accettare anche aggiornamenti leciti impossibili su quella originaria, a causa delle anomalie rimosse con la decomposizione.
Una relazione non-normalizzata 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 Sede Progetto Sede Dirigente
Una possibile riorganizzazione Dirigente Sede Reparto Sede Reparto Dirigente Progetto Sede Reparto
Decomposizione in BCNF
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
Prodotto Nome prodotto Prezzo Nome fornitore Indirizzo Partita IVA Codice PartitaIVA NomeFornitore Indirizzo
Analisi dellentità –Lentità viola la terza forma normale a causa della dipendenza: PartitaIVA NomeFornitore Indirizzo –Possiamo decomporre sulla base di questa dipendenza
Indirizzo Partita IVA Nome fornitore Nome prodotto Prezzo Codice Fornitura ProdottoFornitore (1,1) (0,N)
ProfessoreStudente Corso di laurea Tesi (0,N) (0,1) (0,N) Dipartimento (0,N) 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
ProfessoreStudente Corso di laurea Tesi (0,N) (0,1) (0,N) Dipartimento Afferenza (1,1) (0,N)
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
ProfessoreStudente Tesi (0,N) (0,1) Dipartimento Afferenza (0,N) (1,1) Corso di laurea (0,N) Corso di laurea Iscrizione (0,N) (1,1)