Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Corso di Basi di Dati
!
Normalizzazione !
Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/
Studio/analisi dei requisiti
Progettazione concettuale
Progettazione logica
Progettazione fisica
SCHEMA CONCETTUALE
SCHEMA LOGICO
SCHEMA FISICO
Fasi della progettazioneRisultati
Analisi dei requisiti e progettazione in dettaglio …
Progettazione logica
Lo schema logico prodotto dalla progettazione dovrebbe rispettare dei requisiti di qualità: !➢ Completezza à lo schema logico deve
contenere tutti i concetti del diagramma E-R !
➢ Correttezza à lo schema logico deve preservare la semantica del diagramma E-R !
➢ Efficienza à lo schema logico non deve contenere ridondanze sui dati …
Normalizzazione dei dati
Le ridondanze sui dati possono essere di due tipi: !➢ Ridondanza concettuale à non ci sono
duplicazioni dello stesso dato, ma sono memorizzate informazioni che possono essere ricavate da altre già contenute nel DB. !
➢ Ridondanza logica à esistono duplicazioni sui dati, che possono generare anomalie nelle operazioni sui dati …
Normalizzazione dei dati
Esempi di ridondanze concettuali che possono presentarsi già nel diagramma E-R…
STIPENDIO
Lordo Netto TasseATTRIBUTI DERIVABILI
Lo stipendio netto si puo’ ricavare dal lordo e dalle tasse.
PERSONA CITTARESIDENTI
Codice FiscaleCodice
(1,1)
Nome
(1,N)
Descrizione Numero Abitanti
Il Numero Abitanti si puo’ ricavare contando le Persone
Normalizzazione dei dati
ANALISI DEI COSTI!
Le ridondanze sui dati possono essere di due tipi: !➢ Ridondanza concettuale à non ci sono
duplicazioni dello stesso dato, ma sono memorizzate informazioni che possono essere ricavate da altre gia’ contenute nel DB. !
➢ Ridondanza logica à esistono duplicazioni sui dati, che possono generare anomalie nelle operazioni sui dati …
Normalizzazione dei dati
Q. Cosa c’e’ di strano in questa tabella?
Normalizzazione dei dati
Docente Livello Salario Dipartimento Direttore Corso
Rossi 4 15000 Fisica Neri Mat. Discreta
Rossi 4 15000 Chimica Rossini Analisi I
Bianchi 3 10000 Informatica Viola Basi di Dati
Neri 4 15000 Informatica Viola Programmazione
Neri 4 15000 Matematica Bruni Inf. di base
Rossi 3 10000 Matematica Bruni Geometria
Q. Cosa c’e’ di strano in questa tabella?
Normalizzazione dei dati
A. Lo stipendio di ciascun docente è ripetuto in tutte le tuple relative à Ridondanze sui dati!
Docente Livello Salario Dipartimento Direttore Corso
Rossi 4 15000 Fisica Neri Mat. Discreta
Rossi 4 15000 Chimica Rossini Analisi I
Bianchi 3 10000 Informatica Viola Basi di Dati
Neri 4 15000 Informatica Viola Programmazione
Neri 4 15000 Matematica Bruni Inf. di base
Rossi 3 10000 Matematica Bruni Geometria
Q. Cosa c’e’ di strano in questa tabella?
Normalizzazione dei dati
A. Il direttore di un dipartimento è ripetuto in tutte le tuple relative à Ridondanze sui dati!
Docente Livello Salario Dipartimento Direttore Corso
Rossi 4 15000 Fisica Neri Mat. Discreta
Rossi 4 15000 Chimica Rossini Analisi I
Bianchi 3 10000 Informatica Viola Basi di Dati
Neri 4 15000 Informatica Viola Programmazione
Neri 4 15000 Matematica Bruni Inf. di base
Rossi 3 10000 Matematica Bruni Geometria
Q. Cosa c’e’ di strano in questa tabella?
Normalizzazione dei dati
Docente Livello Salario Dipartimento Direttore Corso
Rossi 4 15000 Fisica Neri Mat. Discreta
Rossi 4 15000 Chimica Rossini Analisi I
Bianchi 3 10000 Informatica Viola Basi di Dati
Neri 4 15000 Informatica Viola Programmazione
Neri 4 15000 Matematica Bruni Inf. di base
Rossi 3 10000 Matematica Bruni Geometria
◇ Anomalia di aggiornamento à se varia lo
stipendio, devo modificare tutte le tuple del docente!
Normalizzazione dei dati
◇ Anomalia di cancellazione à Se un docente
non ha corsi, dobbiamo eliminare tutti i suoi dati …
Docente Livello Salario Dipartimento Direttore Corso
Rossi 4 15000 Fisica Neri Mat. Discreta
Rossi 4 15000 Chimica Rossini Analisi I
Bianchi 3 10000 Informatica Viola Basi di Dati
Neri 4 15000 Informatica Viola Programmazione
Neri 4 15000 Matematica Bruni Inf. di base
Rossi 3 10000 Matematica Bruni Geometria
Q. Cosa c’e’ di strano in questa tabella?
Normalizzazione dei dati
➢ V1. Ogni dipartimento ha un solo direttore. ➢ V2. Ogni docente ha un solo stipendio (anche se
ha più corsi). ➢ V3. Lo stipendio dipende dal livello e non dal
dipartimento o dal corso tenuto! !PROBLEMA: Abbiamo usato un’unica relazione per rappresentare informazioni eterogenee!
Docente Livello Salario Dipartimento Direttore Corso
Da dove deriva una ridondanza? !➢ Traduzioni non corrette nel modello logico…
PERSONA PROGETTO(1,N)(0,N)
Codice CognomePARTECIPAZIONE
Salario Nome Sede
Normalizzazione dei dati
Codice NomeProgetto Cognome Salario SedeProgetto
PERSONA
Da dove deriva una ridondanza? !➢ Errori durante la progettazione concettuale ..
PRODOTTO
Nome NomeComponente
PrezzoProdotto
CollocazioneProdotto
TipoComponente
Normalizzazione dei dati
Meglio ristrutturare lo schema E-R, partizionando l’entità ed introducendo delle relazioni uno-a-molti o molti-a-molti!
L’entita’ PRODOTTO contiene sia le informazioni sul prodotto sia quelle sulle sue componenti.
Normalizzazione dei dati
◇ Per risolvere le anomalie viste fin qui, si introduce un nuovo vincolo sul modello relazionale: la Dipendenza Funzionale (DF).
Data una relazione r su uno schema R(X) e due attributi Y e Z di X. Esiste la dipendenza funzionale Yà Z se per ogni coppia di tuple t1 e t2 di r con t1[Y]=t2[Y], si ha anche che t1[Z]=t2[Z].
Normalizzazione dei dati
Impiegato Stipendio Progetto Sede Ruolo
Rossi 20000 Marte Roma Tecnico
Verdi 35000 Giove Bologna Tecnico
Verdi 35000 Venere Milano Progettista
Neri 55000 Venere Milano Direttore
Neri 55000 Giove Bologna Direttore
Neri 55000 Marte Roma Tecnico
Bianchi 48000 Venere Milano Consulente
DF1: Impiegato à Stipendio Spiegazione: [Ogni impiegato ha un unico stipendio]
Normalizzazione dei dati
Impiegato Stipendio Progetto Sede Ruolo
Rossi 20000 Marte Roma Tecnico
Verdi 35000 Giove Bologna Tecnico
Verdi 35000 Venere Milano Progettista
Neri 55000 Venere Milano Direttore
Neri 55000 Giove Bologna Direttore
Neri 55000 Marte Roma Tecnico
Bianchi 48000 Venere Milano Consulente
DF2: Progetto à Sede Spiegazione: [Ogni progetto ha un’unica sede]
Normalizzazione dei dati
Impiegato Stipendio Progetto Sede Ruolo
Rossi 20000 Marte Roma Tecnico
Verdi 35000 Giove Bologna Tecnico
Verdi 35000 Venere Milano Progettista
Neri 55000 Venere Milano Direttore
Neri 55000 Giove Bologna Direttore
Neri 55000 Marte Roma Tecnico
Bianchi 48000 Venere Milano Consulente
DF3: Impiegato Progetto à Impiegato Spiegazione: ovvia! (ed inutile)
Normalizzazione dei dati
Impiegato Stipendio Progetto Sede Ruolo
Rossi 20000 Marte Roma Tecnico
Verdi 35000 Giove Bologna Tecnico
Verdi 35000 Venere Milano Progettista
Neri 55000 Venere Milano Direttore
Neri 55000 Giove Bologna Direttore
Neri 55000 Marte Roma Tecnico
Bianchi 48000 Venere Milano Consulente
DF4: Impiegato Progetto à Ruolo Spiegazione: Un impiegato puo’ coprire un solo ruolo per progetto!
Normalizzazione dei dati
Matricola Cognome Corso Voto
1244 Rossi Basi di Dati 18
1567 Bianchi Programmazione 22
1898 Bianchi Analisi I 20
2040 Verdi Programmazione 22
2121 Verdi Basi di Dati 18
2678 Bruni Analisi I 20
Le dipendenze funzionali sono definite a livello di schema e non a livello di istanza!
➢ Dipendenza funzionale Corso à Voto? NO!
Normalizzazione dei dati
Le dipendenze funzionali sono definite a livello di schema e non a livello di istanza!
➢ Dipendenza funzionale Corso à Docente ? Puo’ essere, occorre considerare le specifiche del sistema …
Matricola Cognome Corso Docente Voto
1244 Rossi Basi di Dati Di Felice 18
1567 Bianchi Programmazione Messina 22
1898 Bianchi Analisi I Sordoni 20
2040 Verdi Programmazione Messina 22
2121 Verdi Basi di Dati Di Felice 18
2678 Bruni Analisi I Sordoni 20
Normalizzazione dei dati
Le dipendenze funzionali hanno sempre un verso!
➢ Corso à Docente? OK Docente à Corso? NO!
Matricola Cognome Corso Docente Voto
1244 Rossi Basi di Dati Di Felice 18
1567 Bianchi Programmazione Messina 22
1898 Bianchi Analisi I Sordoni 20
2040 Verdi Programmazione Messina 22
2121 Verdi Basi di Dati Di Felice 18
2678 Bruni Analisi I Sordoni 20
4354 Bruni LAM Di Felice 28
Normalizzazione dei dati
Le dipendenze funzionali hanno sempre un verso!
➢ Corso à Docente? OK Docente à Corso? NO!
Matricola Cognome Corso Docente Voto
1244 Rossi Basi di Dati Di Felice 18
1567 Bianchi Programmazione Messina 22
1898 Bianchi Analisi I Sordoni 20
2040 Verdi Programmazione Messina 22
2121 Verdi Basi di Dati Di Felice 18
2678 Bruni Analisi I Sordoni 20
4354 Bruni LAM Di Felice 28
Normalizzazione dei dati
➢ Le dipendenze funzionali sono una generalizzazione del vincolo di chiave.
!➢ Data una relazione r con schema R(X), con
chiave K. Esiste un vincolo di dipendenza funzionale tra K e qualsiasi attributo dello schema r.
K→ X1, X1 ⊆ X
Normalizzazione dei dati
Impiegato Stipendio Progetto Sede Ruolo
DF1: Impiegato Progetto à Stipendio
DF2: Impiegato Progetto à Sede
DF3: Impiegato Progetto à Ruolo
DF4: Impiegato Progetto à Sede Ruolo
DFn: Impiegato Progetto à Impiegato Stipendio Progetto
Sede Ruolo
ESEMPIO. Impiegato,Progetto e’ una chiave della relazione à non possono esistere due tuple con lo stesso valore della coppia <Impiegato, Progetto>!
Normalizzazione dei dati
Impiegato Stipendio Progetto Sede Ruolo
Rossi 20000 Marte Roma Tecnico
Verdi 35000 Giove Bologna Tecnico
Verdi 35000 Venere Milano Progettista
Neri 55000 Venere Milano Direttore
Neri 55000 Giove Bologna Direttore
Neri 55000 Marte Roma Tecnico
Bianchi 48000 Venere Milano Consulente
DF1: Impiegato à Stipendio DF2: Progetto à Sede DF3: Impiegato Progetto à Ruolo
Normalizzazione dei dati
Dipendenze funzionali “ buone” e “cattive”. !➢ DF1: Impiegato à Stipendio ➢ DF2: Progetto à Sede !Ridondanza sui dati, possibili anomalie (aggiornamento,
cancellazione, etc) nelle operazioni sui dati … !➢ DF3: Impiegato Progetto à Ruolo !Non determina ridondanze sui dati …
Normalizzazione dei dati
Perchè DF3 non causa anomalie a differenza di DF1 e di DF2? !➢ DF1: Impiegato à Stipendio ➢ DF2: Progetto à Sede
➢ DF3: Impiegato Progetto à Ruolo !Motivo: !◇ DF3 ha sulla sinistra una (super)chiave. !
◇ DF1 e DF2 non contengono una (super)chiave.
Normalizzazione dei dati
Uno schema R(X) si dice in forma normale di Boyce e Codd se per ogni dipendenza funzionale (non ovvia) Yà Z definita su di esso, Y e’ una superchiave di R(X).
FORMA NORMALE di BOYCE-CODD (FNBC)
➢ Se una relazione è in FNBC, non presenta le anomalie e ridondanze viste fin qui. !
➢ Se una relazione NON è in FNBC, bisogna trasformarla (normalizzarla) -se possibile- in FNBC.
Normalizzazione dei dati
Localita Stato Abitanti
Roma Italia 60000000
Cambridge UK 50000
Cambridge US 200000
Bologna Italia 400000
NY US 15000000
Esempi di relazioni…
DF: Localita Stato à Abitanti Rispetta la FNBC!
Localita Stato Prefisso
Roma Italia 0039
Cambridge US 001
Cambridge UK 0044
Bologna Italia 0039
NY US 001
DF: Stato à Prefisso NON rispetta la FNBC!
Normalizzazione dei dati
Localita Stato Abitanti
Roma Italia 60000000
Cambridge UK 50000
Cambridge US 200000
Bologna Italia 400000
NY US 15000000
Esempi di relazioni…
DF: Localita Stato à Abitanti Rispetta la FNBC!
Localita Stato Prefisso
Roma Italia 0039
Madrid Spagna 0034
Cambridge UK 0044
Parigi Francia 0033
NY US 001
DF: Stato à Prefisso NON rispetta la FNBC!
Normalizzazione dei dati
Q. Come normalizzare una relazione? A. Creare tabelle separate per ogni dipendenza funzionale, ognuna in FNBC!
Impiegato Stipendio
Rossi 20000
Verdi 35000
Neri 55000
Bianchi 48000
IMPIEGATOà STIPENDIOImpiegato Progetto Ruolo
Rossi Marte Tecnico
Verdi Giove Tecnico
Verdi Venere Progettista
Neri Venere Direttore
Neri Giove Direttore
Neri Marte Tecnico
Bianchi Venere Consulente
IMPIEGATO, PROGETTO à RUOLO
PROGETTO à SEDE
Progetto Sede
Marte Roma
Giove Bologna
Venere Milano
Normalizzazione dei dati
Q. Tutte le decomposizioni vanno bene?
➢ DF1. Impiegato à Sede (Ogni impiegato lavora in una sola sede) !
➢ DF2. Progetto à Sede (Ogni progetto ha la stessa sede)
Impiegato Progetto Sede
Rossi Marte Roma
Verdi Giove Milano
Verdi Venere Milano
Neri Saturno Milano
Neri Venere Milano
Impiegato Sede
Rossi Roma
Verdi Milano
Neri Milano
Progetto Sede
Marte Roma
Giove Milano
Venere Milano
Saturno Milano
IMPIEGATOà SEDE
PROGETTOà SEDE
Normalizzazione dei dati
Q. Tutte le decomposizioni vanno bene?
Impiegato Sede
Rossi Roma
Verdi Milano
Neri Milano
Progetto Sede
Marte Roma
Giove Milano
Venere Milano
Saturno Milano
Impiegato Progetto Sede
Rossi Marte Roma
Verdi Giove Milano
Verdi Venere Milano
Verdi Saturno Milano
Neri Venere Milano
Neri Giove Milano
Neri Saturno Milano
▹◃ =
Se combino le due relazioni della decomposizione tramite operatore di join, non ottengo la relazione di partenza! (decomposizione con perdita)
TUPLE SPURIE
Normalizzazione dei dati
Uno schema R(X) si decompone senza perdita negli schemi R1(X1) ed R2(X2) se, per ogni possibile istanza r di R(X), il join naturale delle proiezioni di r su X1 ed X2 produce la relazione r di partenza.
DECOMPOSIZIONE SENZA PERDITA
π X1(r )▹◃ π X2 (r ) = r
➢In caso di decomposizione con perdite, possono generarsi delle tuple spurie dopo il join.
Normalizzazione dei dati
Anche se una decomposizione è senza perdite, può comunque presentare dei problemi di conservazione delle dipendenze …
Impiegato Sede
Rossi Roma
Verdi Milano
Neri Milano
➢Con questa decomposizione, non ho tuple spurie …
IMPIEGATOà SEDE
Impiegato Progetto
Rossi Marte
Verdi Giove
Verdi Venere
Neri Venere
Neri Saturno
Impiegato Progetto Sede
Rossi Marte Roma
Verdi Giove Milano
Verdi Venere Milano
Neri Venere Milano
Neri Saturno Milano
Normalizzazione dei dati
◇ Anche se una decomposizione e’ senza perdite, puo’ comunque presentare dei problemi di conservazione delle dipendenze …
Impiegato Sede
Rossi Roma
Verdi Milano
Neri Milano
Q. Che accade se aggiungo l’impiegato Neri al progetto Marte?
IMPIEGATOà SEDE
Impiegato Progetto
Rossi Marte
Verdi Giove
Verdi Venere
Neri Venere
Neri Saturno
Neri Marte
Normalizzazione dei dati
Q. Tutte le decomposizioni vanno bene?
▹◃
IMPIEGATOà SEDE
Impiegato Sede
Rossi Roma
Verdi Milano
Neri Milano
Impiegato Progetto
Rossi Marte
Verdi Giove
Verdi Venere
Neri Venere
Neri Saturno
Neri Marte
Impiegato Progetto Sede
Rossi Marte Roma
Verdi Giove Milano
Verdi Venere Milano
Neri Venere Milano
Neri Saturno Milano
Neri Marte Milano
=
Violazione del vincolo di dipendenza Progetto à Sede
Normalizzazione dei dati
REGOLA PRATICA: Per conservare le dipendenze in una decomposizione, ogni dipendenza funzionale dello schema dovrebbe coinvolgere attributi che compaiono tutti insieme in uno degli schemi decomposti …
Impiegato Sede Impiegato Progetto
➢ DF1: IMPIEGATO à SEDE, OK, Compare nella prima relazione !
➢ DF2: PROGETTO à SEDE, Non compare in nessuna relazione
r1 r2
Normalizzazione dei dati
Q. Tutte le decomposizioni vanno bene? !A. NO! Le decomposizione dovrebbero sempre
soddisfare tre proprietà: !
◇ Soddisfacimento della FNBC: ogni relazione prodotta deve essere in FNBC. !
◇ Decomposizione senza perdita: il join delle relazioni decomposte deve produrre la relazione originaria. !
◇ Conservazione delle dipendenze: il join delle relazioni decomposte deve rispettare tutte le DF originarie.
Normalizzazione dei dati
Q. Data una relazione non in FNBC, è sempre possibile ottenere una decomposizione in FNBC?
A. NO! consideriamo un controesempio …
Dirigente Progetto Sede
Rossi Marte Roma
Verdi Giove Milano
Verdi Marte Milano
Neri Saturno Milano
Neri Venere Milano
➢ DF1. Progetto Sede à Dirigente !
➢ DF2. Dirigente à Sede !PROBLEMA: DF1 coinvolge tutti gli attributi, nessuna decomposizione puo’ preservare la dipendenza!
Normalizzazione dei dati
Per risolvere casi come quello precedente, si introduce una nuova definizione di forma normale meno restrittiva della forma di Boyce e Codd…
Una relazione r e’ in terza forma normale se per ogni dipendenza funzionale XàA dello schema, almeno una delle seguenti condizioni e’ verificata: !➢ X contiene una chiave K di r !➢ A appartiene ad almeno una chiave K di r
TERZA FORMA NORMALE (TFN)
Normalizzazione dei dati
La relazione considerata fin qui rispetta la TFN!
Dirigente Progetto Sede
Rossi Marte Roma
Verdi Giove Milano
Verdi Marte Milano
Neri Saturno Milano
Neri Venere Milano
➢ DF1. Progetto Sede à Dirigente !
➢ DF2. Dirigente à Sede !DF1: Progetto Sede e’ una chiave à Condizione 1 soddisfatta! !DF2: Sede e’ parte di una chiave à Condizione 2 soddisfatta!
Se è già in TFN, non e’ necessaria alcuna nomalizzazione! !Putroppo le ridondanze sui dati restano …
Normalizzazione dei dati
(SVANTAGGI) La TFN è meno restrittiva della FNBC !◇ Tollera alcune ridondanze ed anomalie sui dati.
◇ Certifica meno lo qualità dello schema ottenuto.
!(VANTAGGI) La TFN è sempre ottenibile, qualsiasi sia lo schema di partenza. !◇ COME? Algoritmo di normalizzazione in TFN!
CONFRONTO TRA TFN e FNBC
Normalizzazione dei dati
ALGORITMO DI NORMALIZZAZIONE IN
TERZA FORMA NORMALE (TFN)
Normalizzazione dei dati
Una relazione r è in terza forma normale se per ogni dipendenza funzionale XàA (non banale) dello schema, almeno una delle seguenti condizioni è verificata: !➢X contiene una chiave K di r (X è una
superchiave di r) !➢A appartiene ad almeno una chiave K di r
TERZA FORMA NORMALE (TFN)
Normalizzazione dei dati
Una dipendenza funzionale XàY è banale se Y è contenuto in X.
DIPENDENZA FUNZIONALE BANALE
ESEMPI: !➢ Impiegato Progetto à Impiegato ➢ Impiegato Progetto Sede à Impiegato Progetto
Questo genere di dipendenze funzionali non ci interessano, e non le conseriamo come tali nel resto della trattazione …
Normalizzazione dei dati
Data una relazione r con schema R(X) non in TFN, normalizzare in TFN vuol dire: decomporre r nelle relazioni r1,r2, … rn, garantendo che: !!➢ Ogni ri (1<=i<=n) è in TFN. !
➢ La decomposizione è senza perdite. !
➢ La decomposizione conserva tutte le dipendenze F definite sullo schema R(X) di partenza.
r1 ▹◃ r2 ▹◃ rn = r
Normalizzazione dei dati
Ad esempio, data la relazione: R(MGCRDSPA), con dipendenze funzionali: !F= {MàRSDG, MS à CD, G àR, DàS, SàD, MPDàAM} !Qual è la sua decomposizione in 3FN?
In molti casi, la decomposizione non è intuitiva …
Normalizzazione dei dati
IDEE alla base dell’algoritmo di normalizzazione: !➢ Semplificare l’insieme di dipendenze F, rimuovendo quelle non necessarie, e trasformando ogni dipendenza in modo che nella parte destra compaia un singolo attributo. !➢ Raggruppare gli attributi coinvolti nelle stesse dipendenze, e costruire le relazioni corrispondenti. !➢ Assicurarsi che almeno una delle relazioni prodotte contenga la chiave della relazione originaria. !
Normalizzazione dei dati
IDEE alla base dell’algoritmo di normalizzazione: !➢ Semplificare l’insieme di dipendenze F, rimuovendo quelle non necessarie, e trasformando ogni dipendenza in modo che nella parte destra compaia un singolo attributo. !➢ Raggruppare gli attributi coinvolti nelle stesse dipendenze, e costruire le relazioni corrispondenti. !➢ Assicurarsi che almeno una delle relazioni prodotte contenga la chiave della relazione originaria.
NECESSARIO INTRODURRE DEFINIZIONI FORMALI PER CHIARIRE LE FRASI IN ROSSO …
Normalizzazione dei dati
Dato un insieme di dipendenze funzionali F, ed una dipendenza funzionale f, diremo che F implica f se ogni relazione r che soddisfa F soddisfa anche f.
IMPLICAZIONE FUNZIONALE
F: {Impiegato à Livello, Livello à Stipendio} f: Impiegato à Stipendio !In questo caso, F implica f ? SI! !Dim. Devo dimostrare che se in una relazione r sono vere entrambe le
dipendenze funzionali di F, allora vale anche la dipendenza funzionale f…
Normalizzazione dei dati
Dato un insieme di dipendenze funzionali F, ed una dipendenza funzionale f, diremo che F implica f se ogni relazione r che soddisfa F soddisfa anche f.
IMPLICAZIONE FUNZIONALE
F: {Impiegato à Livello, Impiegato à Stipendio} f: Livello à Stipendio !!!In questo caso, F implica f ? NO!
Impiegato Livello Stipendio
Neri 4 13400
Rossi 4 15000
Normalizzazione dei dati
Dato uno schema R(U), con un insieme di dipendenze F. Sia X un insieme di attributi contenuti in U. Si definisce la chiusura di X rispetto ad F (X+
F) come l’insieme degli attributi che dipendono funzionalmente da X: !
CHIUSURA DI UNA DIPENDENZA FUNZIONALE
XF+ = {A | A∈U e F implica X→ A }
Normalizzazione dei dati
Esempio (facile). Siano: !R=(ABCDE) !F={Aà B, A à C} !Vogliamo conoscere la chiusura di A: A+
F
!A+
F={B,C}
Normalizzazione dei dati
Esempio (facile). Siano: !R=(ABCDE) !F={Aà B, A à C, Cà D} !Vogliamo conoscere la chiusura di A: A+
F
!A+
F={B,C,D}
Normalizzazione dei dati
INPUT: X (attributi) e F (dipendenze) OUTPUT: La chiusura di X rispetto ad F: X+
F
1) X+F=X.
2) Per ogni dipendenza f: YàA in F !!3) Ripeti il passo 2 finche’ non e’ possibile aggiungere nuovi elementi in X+
F.
Se (Y ⊆ XF+ )∧(A∉ XF
+ ) ⇒ XF+ = XF
+∪{A}
Normalizzazione dei dati
Esempio. Siano: !R=(ABCDE) F={Aà B, BCàD, BàE, EàC} !!A+
F={A}
A+F={A,B} // con f: AàB
A+F={A,B,E} // con f: BàE
A+F={A,B,E,C} // con f: EàC
A+F={A,B,E,C,D} // con f: BCàD
!
Normalizzazione dei dati
Q. Come verificare se F implica f: XàY? !1. Calcolare la chiusura X+
F
1. Se Y appartiene ad X+F, allora F implica f.
!ESEMPIO
F={Aà B, BCàD, BàE, EàC} f: Aà E !A+
F={A,B,E,C,D}
…. Quindi F implica Aà E
Normalizzazione dei dati
Data una relazione r con schema R(U), l’algoritmo per determinare la chiusura X+
F puo’ essere usato anche per verificare se X e’ una chiave di r. !…COME? !Dato uno schema R(U), con un insieme F di dipendenze funzionali, allora: !
un insieme di attributi K e’ una (super)chiave di R(U) se F implica KàU.
Normalizzazione dei dati
Dato uno schema R(U), con un insieme F di dipendenze funzionali, allora: !
un insieme di attributi K e’ una (super)chiave di R(U) se F implica KàU.
!ESEMPIO !R=(ABCDE) F={Aà B, BCàD, BàE, EàC} !Se A e’ una chiave allora F implica A à ABCDE. !A+
F={A,B,E,C,D} quindi A e’ una chiave!
Normalizzazione dei dati
Dati due insiemi di dipendenze funzionali F1 ed F2, essi si dicono equivalenti se F1 implica ciascuna
dipendenza di F2 e viceversa.
INSIEMI DI DIPENDENZE EQUIVALENTI
ESEMPIO !F={Aà B, AB à C} F1={AàB, AàC} !F e F1 sono equivalenti! Occorre fare 4 verifiche …
Normalizzazione dei dati
Dato un insieme di dipendenze funzionali F definito su uno schema R(U), esso si dice non ridondante se non esiste una dipendenza f di F tale che F-{f} implica f.
INSIEMI DI DIPENDENZE NON RIDONDANTI
ESEMPIO !F={Aà B, AB à C, AàC} !F e’ ridondante perche’: F-{AàC} implica AàC!
Normalizzazione dei dati
Dato un insieme di dipendenze funzionali F definito su uno schema R(U), esso si dice ridotto se(1) non e’ ridondante, e (2) non e’ possibile ottenere un insieme F’ equivalente eliminando attributi dai primi membri di una o piu’ dipendenze di F.
INSIEMI DI DIPENDENZE RIDOTTE
ESEMPIO !F={Aà B, AB à C} !F NON è ridotto perchè B può essere eliminato da ABàC e si ottiene ancora un insieme F2 equivalente ad F!
Normalizzazione dei dati
Dato uno schema R(U) con insieme di dipendenze F, per trovare una copertura ridotta di F si procede in tre passi: !1. Sostituire F con F1, che ha tutti i secondi membri
composti da un singolo attributo. !
MàRSDG, MS à CD, G àR, DàS, SàD, MPDàAM !F1={ MàR, MàS, MàD, MàG, MS à C, MS àD,
GàR, DàS, SàD, MPD àA, MPD à M }
Normalizzazione dei dati!STEP 2. Eliminare gli attributi estranei. !Supponiamo di avere F={ABà C, AàB}, e calcoliamo A+
F
!A+
F=A A+
F=AB // da A àB A+
F=ABC // da AB à C
!C dipende solo da A, quindi l’attributo B in ABàC puo’ essere eliminato preservando l’uguaglianza! !F1={AàC, A à B}
Normalizzazione dei dati!STEP 2. Eliminare gli attributi estranei. !!!Q. In generale, se ho una dipendenza funzionale del tipo: AX à B, come faccio a stabilire se l’attributo A può essere eliminato preservando l’uguaglianza? !A. Si calcola X+ e si verifica se esso include B, nel qual caso A puo’ essere eliminato dalla dipendenza! !
Normalizzazione dei dati!STEP 3. Eliminare le ridondanze non necessarie. !Supponiamo di avere F={Bà C, BàA, CàA}: !BàA e’ ridondante, in quanto bastano le relazioni BàC, e Cà A per capire che A dipende da B! !Formalmente, dovrei dimostrare che: !F-{BàA} implica {BàA} quindi, verificare che:
B+F-{BàA}
contiene A … !
Normalizzazione dei dati
!STEP 3. Eliminare le ridondanze non necessarie.
!Q. In generale, come posso stabilire se la dipendenza del tipo XàA e’ ridondante? !!A. Si elimina da F, si calcola X+
F-{XàA}, e si verifica
se tale insieme include ancora A. Nel caso lo includa, si elimina la dipendenza funzionale XàA.
Normalizzazione dei dati
Dati R(U), ed un insieme di dipendenze F, l’algoritmo di normalizzazione in terza forma normale procede come segue: !!STEP 1. Costruire una copertura ridotta F1 di F.
!F={MàRSDG, MS à CD, G àR, DàS, SàD, MPDàAM} !!F1={MàD, MàG, M àC, GàR, DàS, SàD, MPàA}
≡
Normalizzazione dei dati
STEP 2. Decomporre F1 nei sottoinsiemi F1(1), F1
(2),
… F1(n), tali che ad ogni sottoinsieme appartengano
dipendenze con gli stessi lati sinistri. !!F1
(1)={MàD, M àG, MàC} !F1
(2)={GàR} !F1
(3)={DàS} !F1
(4)={SàD} !F1
(5)={MPàA} !!!
Normalizzazione dei dati
STEP 3. Se due o piu’ lati sinistri delle dipendenze si implicano a vincenda, si fondono i relativi insiemi. !!!!F1
(1)={MàD, M àG, MàC} !F1
(2)={GàR} !F1
(3)={DàS} F1(3)={DàS, SàD}
!F1
(4)={SàD} !F1
(5)={MPàA} !!!
Normalizzazione dei dati
STEP 4. Trasformare ciascun F1(i) in una relazione R(i)
con gli attributi contenuti in ciascuna dipendenza. Il lato sinistro diventa la chiave della relazione. !F1
(1)={MàD, M àG, MàC}: R(1)(MDGC) !F1
(2)={GàR}: R(2)(GR) !F1
(3)={DàS, SàD}: R(3)(SD) !F1
(4)={MPàA}: R(4)(MPA) !!
Normalizzazione dei dati
STEP 5. Se nessuna relazione R(i) cosi’ ottenuta contiene una chiave K di R(U), inserire una nuova relazione R(n+1) contenente gli attributi della chiave. !!Nel nostro caso, la chiave e’ costituita da: (MP). !R(1)(MDGC) R(2)(GR) R(3)(SD) R(4)(MPA) !R(4)(MPA) contiene la chiave à non c’e’ necessita’ di aggiungere altre relazioni! !!
Normalizzazione dei dati
In conclusione, data la relazione: R(MGCRDSPA), con dipendenze funzionali: !F= {MàRSDG, MS à CD, G àR, DàS, SàD, MPDàAM} !La sua decomposizione in 3FN e’ la seguente: !
R(1)(MDGC) R(2)(GR) R(3)(SD) R(4)(MPA)
Normalizzazione dei dati
Esempio: R(ABCDE) F={CàAB, BC àDE, DàB}
STEP (1.a) Ridurre F. (semplificare parte destra delle dipendenze)
!F1={CàA, CàB, BCàD, BCàE, DàB}
STEP (1.b) Ridurre F. (semplificare parte sinistra delle dipendenze) !
Calcolo C+F1 ={C,A,B, D, E}, e noto che include D ed E!
F2={CàA, CàB, CàD, CàE, DàB}
Normalizzazione dei dati
STEP (1.c) Ridurre F. (rimuovere dipendenze)
!Che succede se elimino C àB?
F3={CàA, CàD, CàE, DàB}
F2={CàA, CàB, CàD, CàE, DàB}
STEP (2) Decomporre F (in insiemi di dipendenze con lo stesso lato sx)
F31={CàA, CàD, CàE} F32={DàB}
Normalizzazione dei dati
STEP (3) Fondere gli insiemi. (le cui parti sinistre si implicano)
STEP (4) Costruire le relazioni associate.
F31={CàA, CàD, CàE} F32={DàB}
R1(CADE) R2(DB}
STEP (5) Verificare esistenza della chiave.
C+={A,B,C,D,E} à quindi C e’ una chiave dello schema r
Normalizzazione dei dati
Perche’ si chiama Terza Forma Normale (TFN)? !➢ Prima Forma Normale (PFN) à ovvia,si suppone sempre rispettata !➢ Seconda Forma Normale (SFN) à variante debole della TFN. !Procenendo per gradi, si dovrebbe normalizzare in PFN, poi in SFN, e quindi in TFN.
Normalizzazione dei dati
Una relazione r con schema R(U) e’ in Prima Forma Normale (PFN) quando rispetta i requisiti del modello relazionale, ossia ogni attributo e’ elementare, e non ci sono righe/colonne ripetute. !Esempi di relazioni non in PFN: !PAZIENTE (Nome, Cognome, Recapito(Via, Citta, CAP)) !PAZIENTE(Nome, Nome, Cognome)
Normalizzazione dei dati
Perche’ si chiama Terza Forma Normale (TFN)? !➢ Prima Forma Normale (PFN) à ovvia,si suppone sempre rispettata !➢ Seconda Forma Normale (SFN) à variante debole della TFN. !Procenendo per gradi, si dovrebbe normalizzare in PFN, poi in SFN, e quindi in TFN.
Normalizzazione dei dati
Una relazione r con schema R(U) e’ in Seconda Forma Normale (SFN) quando non presenta dipendenze parziali, della forma: Yà A, dove: !➢ Y e’ un sottoinsieme proprio della chiave ➢ A e’ un qualsiasi sottoinsieme di R(U)
!IMPIEGATO(Impiegato, Categoria, Stipendio) !Impiegato à Categoria Categoria à Stipendio
IN SFN MA NON IN TFN!
Normalizzazione dei dati
Una relazione r con schema R(U) e’ in Seconda Forma Normale (SFN) quando non presenta dipendenze parziali, della forma: Yà A, dove: !➢ Y e’ un sottoinsieme proprio della chiave ➢ A e’ un qualsiasi sottoinsieme di R(U)
!IMPIEGATO(Impiegato, Stipendio, Progetto, Budget) !Impiegato à Stipendio Progetto à Budget DIPENDENZA PARZIALE!
Non in SFN Non in TFN