800 likes | 926 Views
Normalizzazione di Schemi. S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni). Forme normali. Una forma normale è una proprietà di una base di dati relazionale che ne garantisce la “qualità”, cioè l'assenza di determinati difetti
E N D
Normalizzazione di Schemi S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni)
Forme normali • Una forma normale è una proprietà di una base di dati relazionale che ne garantisce la “qualità”, cioè l'assenza di determinati difetti • Quando una relazione non è normalizzata: • presenta ridondanze, • si presta a comportamenti poco desiderabili durante gli aggiornamenti • Le forme normali sono di solito definite sul modello relazionale, ma hanno senso in altri contesti, ad esempio il modello E-R Normalizzazione di Schemi Relazionali
Forme Normali • Forma normale: proprietà delle relazioni di un DB • Altrimenti: comportamenti indesiderati • Verifica forma normale = verifica di qualità • Metodologie di progettazione Schemi già in forma normale • Normalizzazione: Schema Schema normalizzato Normalizzazione di Schemi Relazionali
Normalizzazione • Procedura che permette di trasformare schemi non normalizzati in schemi che soddisfano una forma normale • La normalizzazione va utilizzata come tecnica di verifica dei risultati della progettazione di una base di dati • Non costituisce una metodologia di progettazione Normalizzazione di Schemi Relazionali
Una relazione con anomalie Normalizzazione di Schemi Relazionali
Proprietà di questa Tabella • lo stipendio di ciascun impiegato è unico (indipendentemente dai progetti cui partecipa) • il bilancio di ciascun progetto è unico (indipendentemente dagli impiegati che vi partecipano) • La funzione di un impiegato in un progetto è unica • Ridondanze: • stipendio di ciascun impiegato ripetuto in tutte le tuple relative ad esso • bilancio di ciascun progetto ripetuto per ogni impiegato che partecipa Normalizzazione di Schemi Relazionali
Anomalie • anomalia di aggiornamento: lo stipendio di un impiegato varia modifica di tutte le tuple corrispondenti • anomalia di cancellazione: un impiegato interrompe la partecipazione a tutti i progetti spariscono nome e stipendio (a meno di valori nulli sull'unica chiave) • anomalia di inserimento: impossibile inserire nuovo impiegato senza progetto motivo di questi inconvenienti: unica relazione per gestire dati e associazioni tra dati di tipo diverso. Normalizzazione di Schemi Relazionali
Difetti fra Relazioni su Concetti Disomogenei • Dati ripetuti in diverse tuple, senza aggiungere informazioni significative. • Informazioni ripetute aggiornamento ripetuto per ciascuna occorrenza • Informazioni ripetute la cancellazione di una tupla può comportare l’ eliminazione di concetti ancora necessari • Inserimento di informazioni relative ad uno solo dei concetti non possibile se esse non costituiscono una tupla completa (o almeno la sua chiave primaria) Normalizzazione di Schemi Relazionali
Come eliminare le anomalie? • Mediante un procedimento di normalizzazione • Ossia, trasformando una tabella non in forma normale in un’insieme di tabelle in forma normale • Forme Normali: • Boyce-Codd Normal Form (BCNF) • Terza Forma Normale (in subordine) Normalizzazione di Schemi Relazionali
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 Normalizzazione di Schemi Relazionali
Normalizzazione: Definizione Intuitiva • Occorre separare le informazioni eterogenee in sottoinsiemi omogenei. • Ciascun sottoinsieme individuato deve rappresentare un ben preciso concetto. • I concetti individuati corrispondono ad un insieme di attributi che nel suo interno ha una potenziale chiave. • Dopo aver individuato i concetti rilevanti, la tabella data può essere decomposta in altrettante tabelle separate. Normalizzazione di Schemi Relazionali
Per studiare in maniera sistematica come individuare e separare i concetti, è necessario introdurre come strumento un vincolo di integrità:la dipendenza funzionale Normalizzazione di Schemi Relazionali
Proprietà dell’esempio considerato • Ogni impiegato ha un solo stipendio (anche se partecipa a più progetti) • Ogni progetto ha un bilancio • Ogni impiegato in ciascun progetto ha una sola funzione (anche se può avere funzioni diverse in progetti diversi) Normalizzazione di Schemi Relazionali
Dipendenza Funzionale • dipendenza funzionale: vincolo di integrità per il modello relazionale descrive legami di tipo funzionale tra gli attributi di una relazione • Esempio: il valore dell'attributo Impiegato determina il valore dell'attributo Stipendio: • esiste una funzione che associa ad ogni elemento del dominio dell'attributo Impiegato un solo elemento del dominio dell'attributo Stipendio Normalizzazione di Schemi Relazionali
Formalizzazione • Relazione r su uno schema R(X) • sottoinsiemi di attributi non vuoti Y e Z di X • insieme I di coppie di tuple t1 e t2 di r con uguali valori sugli attributi Y • esiste su r una dipendenza funzionale tra Y e Z, se, per ogni coppia (t1,t2) I, t1 e t2 hanno gli stessi valori anche sugli attributi Z • Sintassi: Y Z Normalizzazione di Schemi Relazionali
Formalizzazione • Sintassi: Y Z • il vincolo cosi’ definito si associa a schema R(X) • Semantica: relazione r su schema R(X) corretta se soddisfa le dipendenze funzionali che la coinvolgono Normalizzazione di Schemi Relazionali
In sintesi • relazione r su R(X) • due sottoinsiemi non vuoti Y e Z di X • esiste in r una dipendenza funzionale (FD) da Y a Z se, per ogni coppia di ennuple t1 e t2 di r con gli stessi valori su Y, risulta che t1 e t2 hanno gli stessi valori anche su Z • FD = Functional Dependency Normalizzazione di Schemi Relazionali
Notazione XY • Esempi: Impiegato Stipendio Progetto Bilancio Impiegato Progetto Funzione Normalizzazione di Schemi Relazionali
Osservazione • Dato schema R(K,V) e dato insieme di attributi A V si ha sempre K V • ossia, il vincolo di dipendenza funzionale generalizza il vincolo di chiave • Una dipendenza funzionale Y Zsu uno schema R(X) dove Y è la chiave degenera nel vincolo di chiave se Y Z = X • Nell’ esempio Impiegato Progetto Stipendio Bilancio Funzione Normalizzazione di Schemi Relazionali
Dipendenze Funzionali banali • Impiegato Progetto Progetto • Si tratta però di una FD “banale” (sempre soddisfatta) • Y A è non banale se A non appartiene a Y • Y Z è non banale se nessun attributo in Z appartiene a Y Normalizzazione di Schemi Relazionali
Le anomalie sono legate ad alcune FD • gli impiegati hanno un unico stipendio Impiegato Stipendio • i progetti hanno un unico bilancio Progetto Bilancio Normalizzazione di Schemi Relazionali
Non tutte le FD causano anomalie • In ciascun progetto, un impiegato svolge una sola funzione Impiegato Progetto Funzione • Il soddisfacimento è più "semplice" Normalizzazione di Schemi Relazionali
Una differenza fra FD Impiegato Stipendio Progetto Bilancio • causano anomalie Impiegato Progetto Funzione • non causa anomalie • Perché? Normalizzazione di Schemi Relazionali
Impiegato Stipendio Progetto Bilancio Impiegato Progetto Funzione Normalizzazione di Schemi Relazionali
FD e anomalie • La terza FD corrisponde ad una chiave e non causa anomalie • Le prime due FD non corrispondono a chiavi e causano anomalie • La relazione contiene alcune informazioni legate alla chiave e altre ad attributi che non formano una chiave Normalizzazione di Schemi Relazionali
Motivo delle Anomalie • 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 Normalizzazione di Schemi Relazionali
Impiegato Stipendio Progetto Bilancio Impiegato Progetto Funzione • ImpiegatoProgetto è chiave • Impiegato solono • 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 Normalizzazione di Schemi Relazionali
In particolare • La proprietà "Lo stipendio di ciascun impiegato è funzione del solo impiegato, indipendentemente dai progetti cui partecipa" vuol dire che Impiegato Stipendio • La proprietà "Il bilancio di ciascun progetto dipende dal solo progetto, indipendentemente dagli impiegati che vi partecipano" vuol dire che Progetto Bilancio • Queste due proprietà (e quindi le corrispondenti dipendenza funzionali) generano ridondanze e anomalie indesiderate Normalizzazione di Schemi Relazionali
In particolare • Poichè gli attributi Impiegato Progetto formano una chiave, allora Impiegato Progetto Funzione che significa: "In ciascun progetto, ciascuno degli impiegati coinvolti può svolgere una sola funzione“ non genera ridondanze e anomalie • Questo proprio perché Impiegato Progetto è una superchiave Normalizzazione di Schemi Relazionali
Forma normale di Boyce e Codd (BCNF) • Una relazione r è in forma normale di Boyce e Codd se: • per ogni dipendenza funzionale (non banale) X Y definita su di essa, X contiene una chiave K di r Normalizzazione di Schemi Relazionali
Forma normale di Boyce e Codd (BCNF) • BCNF = Boyce-Codd Normal Form • La forma normale di Boyce-Codd richiede che i concetti in una relazione siano omogenei (solo proprietà direttamente associate alla chiave) Normalizzazione di Schemi Relazionali
Cosa fare se una relazione non soddisfa la BCNF? • La rimpiazziamo con altre relazioni che soddisfano la BCNF Come? • Decomponendo sulla base delle dipendenze funzionali, al fine di separare i concetti Normalizzazione di Schemi Relazionali
Normalizzazione • Procedimento che consiste nel decomporre r non in forma normale rispetto alle dipendenze funzionali D1, ..., Dk in n relazioni r1, ..., rn in forma normale • si vuole che: • r = r1 join r2 join rn (P1: decomposizione senza perdita) • ogni dipendenza funzionale Dj su r sia soddisfatta in almeno una delle r1, ..., rn date (P2: conservazione delle dipendenze) Normalizzazione di Schemi Relazionali
Caso favorevole della normalizzazione • si decompone r in tante relazioni quante sono le dipendenze funzionali significative (non banali) con diverso primo membro • Le relazioni risultanti sono in BCNF • Le proprietà P1 (decomposizione senza perdita) e P2 (conservazione delle dipendenze) sono mantenute. Normalizzazione di Schemi Relazionali
Rispetto all’esempio • D1: Impiegato Stipendio • D2: Progetto Bilancio • D3: Impiegato Progetto Funzione Decomposizione • R1(Impiegato , Stipendio ) • R2(Progetto, Bilancio) • R3(Impiegato, Progetto, Funzione) ciascuna dipendenza corrisponde ad una diversa relazione la cui chiave è proprio il primo membro della dipendenza stessa Normalizzazione di Schemi Relazionali
Dipendenze con struttura complessa • può non essere necessario (o possibile) basare la decomposizione su tutte le dipendenze • può essere difficile individuare quelle su cui si deve basare la decomposizione. ImpiegatoCategoria Stipendio Neri 3 30 Verdi 3 30 Rossi 4 50 Mori 4 50 Bianchi 5 72 Normalizzazione di Schemi Relazionali
Proprietà Esempio • Relazione nell’esempio: soddisfa le dipendenze (non banali) D1: Impiegato Categoria D2: Categoria Stipendio Normalizzazione di Schemi Relazionali
Decomposizione in BCNF R1 ImpiegatoCategoria Neri 3 Verdi 3 Rossi 4 Mori 4 Bianchi 5 Normalizzazione di Schemi Relazionali
Decomposizione in BCNF R2 Categoria Stipendio 3 30 4 50 5 72 Normalizzazione di Schemi Relazionali
Osservazione Attenzione: Scegliendo invece le dipendenze D1’: Impiegato Categoria Stipendio D2: Categoria Stipendio forma normale non possibile, perchè D1’ copre tutti gli attributi, quindi impossibile decomporre • Quindi: no dipendenze che coprono tutti gli attributi Normalizzazione di Schemi Relazionali
Non sempre così facile Impiegato Sede Progetto Sede Normalizzazione di Schemi Relazionali
Relazione nell’esempio soddisfa le dipendenze (non banali) D1: Impiegato Sede D2: Progetto Sede • Osservazione: ciascun impiegato può partecipare a più progetti , ma tutti nella stessa sede Normalizzazione di Schemi Relazionali
Decomponiamo sulla base delle dipendenze Normalizzazione di Schemi Relazionali
Diversa dalla relazione di partenza! Proviamo a ricostruire Normalizzazione di Schemi Relazionali
Cosa è accaduto? • Ci sono tuple “spurie” perchè, per ogni impiegato, la sua sede si è “combinata” nel join con tutti i progetti di quella sede. • C’è quindi perdita di informazione: a quali progetti partecipa realmente ciascun impiegato? Nel risultato del join se ne è persa traccia. Normalizzazione di Schemi Relazionali
Proprietà delle relazioni decomposte • Non si vuole perdita di informazione • Una decomposizione in BCNF è valida se è senza perdita (di informazione), ossia se il join delle relazioni decomposte restituisce la relazione di partenza (senza aggiungere tuple spurie) Normalizzazione di Schemi Relazionali
Formalizzazione • Relazione r su un insieme di attributi X dove X = X1 X2 • r1 ed r2 ottenute per proiezione da r su X1 e X2 • r1 join r2 contiene in generale tutte le tuple di r, più eventualmente tuple "spurie". • r si decompone senza perdita su X1 e X2 se r1 join r2 = r Normalizzazione di Schemi Relazionali
Decomposizione senza perdita • Una relazione r si decompone senza perdita su X1 e X2 se il join delle proiezioni di r su X1 e X2 è uguale a r stessa (cioè non contiene ennuple spurie) • La decomposizione senza perdita è garantita se gli attributi comuni alle relazioni decomposte contengono una chiave per almeno una di esse Normalizzazione di Schemi Relazionali
Condizione sufficiente per la Decomposizione senza Perdita • relazione r sugli attributi ABC • proiezioni r1 su AB e r2 su AC. • sia A C • Allora, A è chiave per la proiezione r2 su AC non ci sono in r2 due tuple diverse con gli stessi valori su A decomposizione senza perdita Normalizzazione di Schemi Relazionali