06 Normalizzazione

1,737 views
1,620 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,737
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
71
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

06 Normalizzazione

  1. 1. Verifiche di qualita` per schemi relazionali La qualita` di schemi relazionali Il concetto di qualita` per uno schema relazionale si riferisce alla possibilita` di generare comportamenti anomali durante le operazioni di aggiornamento, dovuti alla presenza di dati ridondanti 1
  2. 2. La qualita` di schemi relazionali Schema relazionale Vincoli di integrita` (dipendenze funzionali) SI NO Lo schema soddisfa determinate proprieta’? Applicare teoria No anomalie Normalizzazione Nuovo schema equivalente a quello iniziale, 2 senza anomalie La qualita` di schemi relazionali Se utilizziamo le metodologie di progettazione presentate in precedenza, gli schemi relazionali generati spesso soddisfano una forma normale (terza forma normale) non presentano anomalie In questo caso, la teoria della normalizzazione rappresenta un utile strumento di verifica, che puo` suggerire modifiche nel caso in cui vogliamo ottenere forme normali differenti, magari piu` restrittive forma normale di Boyce-Codd La normalizzazione e` inoltre utile in fasi di revisione successiva degli schemi relazionali vincoli di integrita` sorti da nuovi requisiti applicativi possono generare nuove anomalie nuovi schemi normalizzati 3
  3. 3. Ridondanza Chiave = colloc stesso Film ridondanza 4 Ridondanza Video No ridondanza Film 5
  4. 4. Anomalia di modifica La valutazione del film Pulp Fiction di Quentin Tarantino cambia 4 4 4 Se non modifichiamo tale valore in tutte le tuple in cui appare il film da aggiornare, dopo la modifica, tuple relative allo stesso film potrebbero avere valutazioni diverse anomalia di modifica 6 Anomalia di cancellazione Tutti i video relativi a “Pulp fiction” di Quentin Tarantino hanno dei problemi e devono essere sostituiti Ogni informazione sul film “Pulp fiction” viene persa 7 anomalia di cancellazione
  5. 5. Anomalia di inserimento Vogliamo inserire l’elenco dei film per i quali verranno resi disponibili alcuni video a partire dal prossimo mese ? mediterraneo gabriele salvatores 1991 commedia 3.80 Poiche’ la collocazione del video e` chiave di FilmInVideo, le informazioni relative ad un film non possono essere inserite finche’ non e` nota la collocazione di almeno un video relativo a quel film anomalia di inserimento 8 Ridondanza e anomalie Il problema legato alla presenza di anomalie dipende dall’avere utilizzato un’unica relazione per memorizzare informazioni relative a film e video concettualmente rappresentano due entita` distinte che condividono un’associazione Tali anomalie non si verificano se utilizziamo le relazioni Film e Video 9
  6. 6. Teoria della normalizzazione – obiettivi Identificare situazioni che possono generare anomalie, partendo dall’analisi di alcuni tipi di vincoli di integrita` validi per lo schema di partenza dipendenze funzionali Identificare quali proprieta`, rispetto alle dipendenze funzionali, uno schema deve soddisfare affinche` non sia soggetto ad anomalie definizione di forme normali per gli schemi relazionali Fornire strumenti per trasformare lo schema relazionale di partenza in uno schema equivalente al precedente che soddisfi una forma normale scomposizione prevede la sostituzione di una relazione che presenta anomalie con un insieme di relazioni, che non presentano tale problema il processo di scomposizione e` guidato dalle dipendenze funzionali identificate 10 Teoria della normalizzazione – osservazione La normalizzazione puo` portare ad inefficienze nelle prestazioni, nel caso in cui le interrogazioni richiedano frequentemente di combinare i dati suddivisi in relazioni distinte Determinare la valutazione del film corrispondente ad un certo video FilmInVideo (non normalizzata) interrogazione su singola tabella Film + Video (normalizzate) join Il processo di normalizzazione deve essere applicato con le dovute cautele 11
  7. 7. Dipendenze funzionali La presenza di ridondanza in uno schema dipende da proprieta` del dominio applicativo che possono essere rappresentate tramite vincoli di integrita` dipendenze funzionali Le dipendenze funzionali, come ogni altra tipologia di vincoli, devono essere identificate durante la fase di progettazione concettuale, a partire dal documento di specifica dei requisiti 12 Dipendenze funzionali – concetti di base Una dipendenza funzionale descrive un legame di tipo funzionale esistente tra gli attributi di una singola relazione dati il titolo ed il regista di un film, l’anno di produzione, il genere e la valutazione assegnati al film sono unici titolo e regista determinano funzionalmente i valori degli attributi 13 anno, genere e valutaz
  8. 8. Dipendenze funzionali – definizione R(A1,A2,....An) schema di relazione X e Y sottoinsiemi di UR r istanza di R(A1,A2,....An) r soddisfa X Y se, per ogni coppia di tuple t1 e t2 in r, vale se t1[X] = t2[X] allora t1[Y] = t2[Y] 14 Dipendenze funzionali – definizione X determina funzionalmente Y in R(A1, A2, ...., An), indicato con X →R(A1,...,An) Y (o con X → Y , in assenza di ambiguita`) se qualunque istanza r di R(A1,A2,....,An) soddisfa X → Y X →R(A1,...,An) Y (X → Y ) e` chiamata dipendenza funzionale su UR 15
  9. 9. Dipendenze funzionali – notazione A1A2 . . .An denota l’insieme {A1,A2, . . . ,An} dati X e Y insiemi di attributi, XY denota X U Y 16 Dipendenze funzionali – esempio VALGONO NON VALE a) titolo regista → anno titolo → colloc b) titolo regista → valutaz c) titolo regista → regista d) colloc → titolo regista e) colloc → valutaz f) titolo → regista 17
  10. 10. Dipendenze funzionali – tipi (a), (b), (d) dipendono dalla semantica dei dati sono vincoli di integrita` devono essere determinati durante la fase di progettazione concettuale (f) dipende dalla specifica istanza considerata non e` un vincolo di integrita` (c) sempre valida dipende dalla definizione dipendenza funzionale banale (e) implicata dalle dipendenze (b) e (d) dipendenza funzionale derivata 18 Dipendenze funzionali derivate Formalizzabili tramite la nozione di implicazione logica di un insieme di dipendenze funzionali L’implicazione logica permette di determinare l’insieme massimale di dipendenze funzionali derivabili a partire da un insieme di dipendenze funzionali dato chiusura di un insieme di dipendenze funzionali 19
  11. 11. Dipendenze funzionali derivate R(A1, ...,An) schema di relazione F insieme di dipendenze funzionali su UR X → Y dipendenza funzionale su UR F implica logicamente X → Y , denotato con F |= X → Y , se qualunque istanza r di R(A1, ...,An) che soddisfa tutte le dipendenze in F, soddisfa anche X → Y La chiusura di F, denotata con F+, e` l’insieme delle dipendenze funzionali logicamente implicate da F F+ = {X → Y | F |= X → Y } 20 Dipendenze funzionali derivate – esempio F= titolo regista → anno titolo regista → valutaz titolo regista → regista colloc → titolo regista colloc → valutaz titolo → regista F |= colloc → anno F |= colloc → titolo F |= colloc → regista Escludendo le dipendenze banali e ridondanti: F+ = F U {colloc → anno, colloc → titolo, colloc → regista} 21
  12. 12. Regole di Armstrong Il calcolo di F+ e` fondamentale per applicare la teoria della normalizzazione A questo proposito, e` stato definito un insieme di regole di inferenza che permette di calcolare F+ regole di Armstrong Ogni regola di Armstrong ha la forma: se G allora X → Y dove G e` un insieme (eventualmente vuoto) di dipendenze funzionali (le premesse) e X → Y e` una dipendenza funzionale (la conclusione) 22 Regole di Armstrong D insieme di attributi A1: riflessivita`. Sia Y ⊆ X ⊆ D. Allora X → Y A2: additivita`. Sia Z ⊆ D. Se X → Y, allora XZ → Y Z A3: transitivita`. Se X → Y e Y → Z, allora X → Z 23
  13. 13. Regole di Armstrong derivate Non aumentano il potere espressivo A4: unione. Se X → Y e X → Z, allora X → Y Z A5: pseudotransitivita`. Se X → Y e WY → Z, allora XW → Z A6: scomposizione. Sia Z ⊆ Y. Se X → Y , allora X → Z 24 Regole di Armstrong – derivazione Le regole di Armstrong possono essere concatenate in modo che le conclusioni di un certo insieme di regole diventino le premesse di un’altra regola Derivazione Dato un insieme di dipendenze funzionali F, X → Y e` derivabile da F, indicato con F ⊢ X → Y , se esiste una derivazione le cui premesse sono contenute in F e la cui conclusione coincide con X → Y 25
  14. 14. Regole di Armstrong – proprieta` Le regole di Armstrong sono corrette ogni derivazione con premesse in F puo` derivare solo conclusioni in F+ Le regole di Armstrong sono complete ogni dipendenza funzionale in F+ puo` essere derivata a partire da F, applicando tali regole 26 Regole di Armstrong – proprieta` F insieme di dipendenze funzionali su un insieme di attributi D X ⊆ D, Y ⊆ D F ⊢ X → Y se e solo se F |= X → Y 27
  15. 15. Chiusura di un insieme di attributi La computazione di F+ e` molto costosa esponenziale nel numero di dipendenze Spesso non e` necessario calcolare F+ ma e` sufficiente stabilire se una certa dipendenza funzionale appartiene ad F+ algoritmo semplice ed efficiente basato sulla nozione di chiusura di un insieme di attributi rispetto ad un insieme di dipendenze 28 Chiusura di un insieme di attributi Contiene tutti gli attributi che possono essere derivati da quelli di partenza, utilizzando le dipendenze funzionali date F insieme di dipendenze funzionali su un insieme di attributi D X⊆D La chiusura di X rispetto ad F, denotata con X+, e` l’insieme {A ∈ D | F ⊢ X → A} 29
  16. 16. Chiusura di un insieme di attributi – proprieta` F insieme di dipendenze funzionali F ⊢ X → Y se e solo se Y ⊆ X+, con X+ calcolata rispetto ad F 30 Chiusura di un insieme di attributi – algoritmo Attributi funzionalmente determinati da X(i) 31
  17. 17. Chiusura di un insieme di attributi – esempio a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista e) colloc → tipo X = colloc X(0) = colloc X(1) = colloc tipo titolo regista X(2) = colloc tipo titolo regista anno genere valutaz X(3) = X(2) = X+ = U FilmInVideo 32 Chiavi Il concetto di chiave puo` essere definito in termini di dipendenze funzionali Utile per determinazione delle forme normali verificare se le chiavi identificate durante la progettazione logica sono correttamente definite rispetto alle dipendenze funzionali 33
  18. 18. Chiavi R(A1, ...,An) schema di relazione F insieme di dipendenze funzionali su UR X ⊆ UR X e` chiave di R(A1, ...,An) se verifica le seguenti condizioni: 1. X → A1 A2 . . . An ∈ F+ 2. non esiste Y ⊆ X tale che Y → A1 A2 . . . An ∈ F+ 34 Chiavi X e` chiave per uno schema di relazione R(A1, ...,An) rispetto ad un insieme di dipendenze funzionali F F |= X → A1 A2 . . . An F ⊢ X → A 1 A 2 . . . An A1 A2 . . . An ⊆ X+ 35
  19. 19. Chiavi – osservazione Se un attributo non compare mai a destra di una dipendenza funzionale in F, questo attributo fara` certamente parte della chiave In caso contrario, non sarebbe possibile derivarlo applicando le regole di Armstrong 36 Chiavi – esempio R(C,S,Z) F = {CS → Z, Z → C } CS+ = SZ+ = CSZ CS e SZ sono chiavi per R 37
  20. 20. Chiavi – esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista e) colloc → tipo Sappiamo che colloc e` chiave della relazione Le dipendenze funzionali ci permettono di verificare che questo vincolo e` corretto Infatti: colloc+ = UFilmInVideo condizione di minimalita` soddisfatta 38 Chiavi – esempio Supponiamo di non conoscere la chiave di FilmInVideo e di volerla determinare colloc non compare mai a destra in una dipendenza funzionale colloc appartiene alla chiave colloc+ = UFilmInVideo colloc e` chiave colloc e` l’unica chiave 39
  21. 21. Forme normali Le forme normali sono state introdotte per stabilire condizioni che, se soddisfatte da uno schema relazionale, garantiscono l’assenza delle anomalie discusse in precedenza Esistono vari tipi di forme normali differiscono per il tipo di anomalie che permettono di evitare Forme normali piu` note: forma normale di Boyce-Codd (BCNF) terza forma normale (3NF) 40 Forme normali BCNF 3NF Permette di evitare un Permette di evitare un insieme molto ampio di insieme piu` ristretto di anomalie anomalie Piu` restrittiva di 3NF Meno restrittiva di BCNF Poco usata nella pratica Molto usata nella pratica 41
  22. 22. Forme normali – osservazione FilmInVideo(colloc titolo regista anno genere valutaz tipo) Le dipendenze {titolo regista→anno titolo regista→genere titolo regista → valutaz} generano ridondanza: molti video possono corrispondere allo stesso film, quindi avere lo stesso titolo e stesso regista in base alle dipendenze, molti video avranno anche lo stesso valore per anno, genere e valutaz La dipendenza colloc → titolo regista non genera ridondanza colloc e` chiave per FilmInVideo non e` possibile che due tuple abbiamo lo stesso valore per colloc X → Y , con X chiave o super-chiave per la relazione considerata, non potra` mai generare ridondanze e quindi anomalie 42 Forme normali – BCNF R(A1, ...,An) schema di relazione F insieme di dipendenze funzionali su UR R(A1, ...,An) e` in forma normale di Boyce- Codd (BCNF) rispetto ad F se per ogni dipendenza funzionale X → Y ∈ F, con Y ⊆ X, allora X e` una chiave o super-chiave di R 43
  23. 23. Forme normali – BCNF – esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista e) colloc → tipo Sappiamo che l’unica chiave di tale relazione e` colloc Lo schema non e` in BCNF in quanto le dipendenze titolo regista → anno, titolo regista →genere e titolo regista → valutaz non soddisfano la condizione di BCNF titolo regista non e`chiave o super-chiave della relazione 44 Forme normali – BCNF – esempio Video(colloc,tipo,titoloFilm,registaFilm) Film(titolo,regista,anno,genere,valutaz) Dipendenze funzionali: colloc → tipo titolo regista per Video titolo regista → anno genere valutaz per Film Sono in BCNF le uniche dipendenze funzionali sono quelle che hanno la chiave sul lato sinistro 45
  24. 24. Forme normali – 3NF La BCNF impone una condizione molto forte permette di evitare ogni tipo di anomalia, in quanto evita ogni tipo di ridondanza potrebbe non permettere di modellare alcuni vincoli rilevanti per il dominio applicativo (tutti quelli che a sinistra non contengono una chiave od una superchiave) come vedremo successivamente, se una relazione non soddisfa la BCNF non sempre e` possibile decomporla per ottenere uno schema equivalente in BCNF per il quale valgano tutte le dipendenze funzionali di partenza Alcune delle precedenti restrizioni si possono superare con la 3NF Forma normale piu` debole Gli schemi in 3NF ammettono una certa ridondanza, benche’ limitata 46 Forme normali – 3NF – attributo primo R(A1, ...,An) schema di relazione Ai, 1 ≤ i ≤ n, e` un attributo primo per R(A1, ...,An) se Ai e` elemento di una qualche chiave di R 47
  25. 25. Forme normali – 3NF R(A1, ...,An) schema di relazione F insieme di dipendenze funzionali su UR R(A1, ...,An) e` in terza forma normale (3NF) rispetto ad F se per ogni dipendenza funzionale X → Y ∈ F, con Y ⊆ X, allora: X `e una chiave o super-chiave di R oppure ∀ A ∈ Y , A e` un attributo primo per R(A1, ...,An) 48 Forme normali – 3NF BCNF 3NF BCNF 3NF 49
  26. 26. Forme normali – 3NF – esempio R(C,S,Z) F = {CS → Z, Z → C } CS+ = SZ+ = CSZ Attributi primi = CSZ Lo schema e` in 3NF Poiche` Z non e` ne’ chiave ne’ super-chiave, lo schema non e` in BCNF 50 Forme normali – 3NF – esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista e) colloc → tipo Attributi primi = colloc Lo schema non e` in 3NF 51
  27. 27. Scomposizione Una volta scelta una forma normale, la base di dati ottenuta tramite la progettazione logica non necessariamente soddisfa le proprieta` imposte da tale forma normale E` necessario trasformare lo schema di ogni relazione in uno o piu` schemi di relazioni che soddisfino tale forma normale scomposizione 52 Scomposizione La scomposizione di uno schema di relazione R(A1, ...,An) e` la sua sostituzione con un insieme di schemi relazionali Σ = {R1,R2, . . . ,Rk} non necessariamente disgiunti tali che UR = UR1 ∪ UR2 ∪ . . . ∪ URk 53
  28. 28. Scomposizione – proprieta` Lossless join (join senza perdite) Preservazione delle dipendenze funzionali 54 Scomposizione lossless join Se una relazione viene scomposta, e` importante che sia possibile riottenere esattamente la stessa relazione eseguendo il join naturale delle relazioni in cui e` stata scomposta R(A1, ...,An) schema di relazione F insieme di dipendenze funzionali su UR Σ = {R1,R2, . . . ,Rk} scomposizione di R(A1, ...,An) Σ e` lossless join rispetto ad F se per ogni istanza r di R(A1, ...,An) che soddisfa F, vale: r = ΠR1 (r) ΠR2 (r) ΠRk (r) ... 55
  29. 29. Scomposizione lossless join - esempio R(A,B,C,D,E,G,H,I) F = {A → HI, B → DE} Le istanze di R non sono scomponibili senza perdite rispetto ad ABDEI ed ACGH r ΠABDEI (r) ΠACGH (r) ΠABDEI (r) ΠACGH (r) 56 Scomposizione lossless join Esiste un algoritmo generale per determinare se una data scomposizione verifica la proprieta` di lossless join non lo vediamo Introduciamo invece un semplice test applicabile nel caso in cui la scomposizione contenga solo due schemi 57
  30. 30. Scomposizione lossless join Σ = {R1,R2} scomposizione per R(A1, ...,An) F insieme di dipendenze funzionali su UR Σ ha la proprieta` di lossless join rispetto ad F se e solo se F implica logicamente una delle seguenti dipendenze funzionali: (UR1 ∩ UR2) → (UR1 − UR2 ) 1. (UR1 ∩ UR2) → (UR2 − UR1 ) 2. 58 Scomposizione lossless join – esempio R(A,B,C,D,E,G,H,I) F = {A → HI, B → DE} Le istanze di R sono scomponibili senza perdite rispetto ad ABDEI ed ABCGH Infatti ABDEI ∩ ABCGH = AB ABDEI ABCGH = DEI AB → DEI ∈ F+ 59
  31. 31. Scomposizione lossless join – esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista e) colloc → tipo R1(colloc,tipo,titoloR2,registaR2) R2(titolo,regista,anno,genere,valutaz) soddisfa la proprieta` di lossless join UR1 ∩ UR2 = {titolo, regista} UR2 − UR1 = {anno, genere, valutaz} F |= titolo regista→anno genere valutaz 60 Scomposizione lossless join - esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista Una scomposizione e) colloc → tipo con schemi disgiunti non e` mai lossless join R1(colloc,tipo) R2(titolo,regista,anno,genere,valutaz) non soddisfa la proprieta` di lossless join UR1 ∩ UR2 = { } UR2 − UR1 = UR2 → UR2 ovviamente non vale in F+ 61
  32. 32. Scomposizione che preserva le dipendenze Un’altra importante proprieta` di una scomposizione di uno schema R in Σ = {R1, ...,Rk} e` che l’insieme delle dipendenze funzionali F definito per R sia implicato dalle proiezioni di F sugli schemi R1, . . ., Rk La nozione di proiezione permette di restringere un insieme di dipendenze funzionali ad un sottoinsieme di attributi dello schema per il quale sono state definite 62 Scomposizione che preserva le dipendenze D insieme di attributi F insieme di dipendenze funzionali su D Z⊆D La proiezione di F su Z, denotata con Π Z(F), e` l’insieme {X → Y |X → Y ∈ F+ | XY ⊆ Z} 63
  33. 33. Scomposizione che preserva le dipendenze R(A1, ...,An) schema di relazione Σ = {R1, . . . ,Rk} scomposizione per R(A1, ...,An) F insieme di dipendenze funzionali su UR Σ preserva le dipendenze in F se ∪ i=1,...,k ΠRi (F) |= F Se vengono verificate le dipendenze locali ad ogni schema, allora anche le dipendenze globali (che coinvolgono schemi diversi) sono verificate 64 Scomposizione che preserva le dipendenze - esempio R(C,S,Z) F = {CS → Z, Z → C}. Σ = { R 1, R 2 } R1(S,Z) R2(C,Z) Σ ha la proprieta` di lossless join {S, Z} ∩ {C, Z} → {C, Z} − {S, Z} ∈ F+ ΠR1(F) = { S → S, Z → Z} ΠR2(F) = { C → C, Z → Z, Z → C} CS → Z non e` preservata 65
  34. 34. Scomposizione che preserva le dipendenze – esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) a) titolo regista → anno b) titolo regista → genere c) titolo regista → valutaz d) colloc → titolo regista e) colloc → tipo f) anno → tipo Σ = { R1, R2 } R1 = colloc titolo regista tipo R2 = titolo regista anno genere valutaz ΠR1(F) = { (d), (e) } ΠR2(F) = { (a), (b), (c) } ΠR1(F) U ΠR2(F) |= (f) anno+ = anno 66 Σ non preserva le dipendenze Scomposizione che preserva le dipendenze – algoritmi Dalla definizione discende algoritmo per determinare se una scomposizione Σ = {R1, . . . ,Rk} preserva un insieme di dipendenze funzionali F basato sul calcolo di F esponenziale nella dimensione di F Esistono altri algoritmi polinomiali, che non presentiamo, basati sul concetto di chiusura di un insieme di attributi 67
  35. 35. Scomposizione che preserva le dipendenze – osservazione Dato X ⊆ Ri, la dipendenza funzionale ottenuta da X → X+ (con X+ calcolato rispetto ad F) eliminando gli attributi a destra che non compaiono in Ri appartiene a ΠRi (F) Ogni dipendenza funzionale che appartiene a ΠRi (F) puo` essere calcolata in questo modo 68 Scomposizione che preserva le dipendenze – esempio R(A,B,C,D) F = {A → B, B → C, C → D, D → A} Σ = {AB, BC, CD} A+ = B+ = C+ = D+ = ABCD ΠAB(F) = {A → B, B → A} ΠBC(F) = {B → C, C → B} ΠCD(F) = {C → D, D → C} G = ΠAB(F) U ΠBC(F) U ΠCD(F) Stabiliamo se D → A e` preservata da Σ D+ = ABCD calcolato rispetto a G D → A `e preservata da Σ 69
  36. 36. Scomposizione in BCNF Qualsiasi schema di relazione ammette una scomposizione BCNF che soddisfa la proprieta` di lossless join E` possibile che non esista, per un dato schema di relazione, una scomposizione in BCNF che preservi le dipendenze Il prezzo da pagare per ottenere una forma normale che elimini completamente le anomalie, come la BCNF, e` una potenziale perdita di vincoli di integrita` 70 Scomposizione in BCNF – algoritmo Scomposizione lossless join di S Complessita` dipende dalla complessita`calcolo proiezioni 71
  37. 37. Scomposizione in BCNF – esempio R(C,S,Z) F= {CS → Z, Z → C} Chiavi CS e SZ Non e` in BCNF Z → C viola la BCNF S1(C, Z) ΠS1(F)= {Z → C} S2(S, Z) ΠS2(F) = { } Chiave Z Π Chiave SZ BCNF BCNF Σ = {S1, S2} non preserva CS → Z 72 Scomposizione in BCNF – esempio FilmInVideo(colloc titolo regista anno genere valutaz tipo) F = { (a) titolo regista → anno genere valutaz, (b) colloc → titolo regista tipo} Chiave colloc Non e` in BCNF titolo regista → anno genere valutaz viola la BCNF R2(colloc,titolo,regista, tipo) R1(titolo,regista,anno,genere,valutaz) Π ΠR2(F)= { (b) } ΠR1(F)= { (a) } Chiave colloc Chiave titolo regista BCNF BCNF Σ = {R1, R2} preserva le dipendenze 73
  38. 38. Scomposizione in 3NF L’algoritmo che vedremo puo` essere applicato solo sotto opportune ipotesi Se queste ipotesi sono soddisfatte, l’algoritmo genera una scomposizione in 3NF lossless join che preserva le dipendenze L’insieme di dipendenze funzionali deve essere minimale l’insieme non deve quindi contenere ridondanze 74 Scomposizione in 3NF – minimalita` Unicita` degli attributi a destra 1. Il lato destro di ogni dipendenza in F corrisponde ad un singolo 1. attributo Assenza di dipendenze funzionali ridondanti 2. Per nessuna dipendenza X → A ∈ F, l’insieme di dipendenze G = F − {X → A} e` equivalente ad F, cioe` vale F+ = G+ Per determinare se questa condizione e` soddisfatta, si calcola X+ rispetto a F − {X → A} se A e` in X+, allora F+ = G+ e quindi X → A e` ridondante Assenza di attributi a sinistra ridondanti 3. Per nessuna dipendenza X → A ∈ F e nessun sottoinsieme Z di X, l’insieme di dipendenze G = F − {X → A} U {Z → A} e` equivalente ad F, cioe` vale F+ = G+ Z e` ridondante in X → A se (X − Z)+, calcolata rispetto ad F, contiene A 75
  39. 39. Scomposizione in 3NF – minimalita` Per la regola di scomposizione e` sempre possibile ricondursi alla forma richiesta dalla condizione (1) E` possibile dimostrare che per ogni insieme di dipendenze funzionali F esiste un insieme di dipendenze funzionali minimale G tale che F+ = G+ L’insieme G puo` essere calcolato applicando le regole precedenti in sequenza, considerando una dipendenza funzionale alla volta L’ordine in cui le varie dipendenze sono esaminate puo` generare insiemi minimali diversi 76 Scomposizione in 3NF – esempio R(A,B,C,D) F = {AB → D, A → B, A → C, B → C, C → B} Unicita` attributi a destra soddisfatta Dipendenze ridondanti A→C A→B A+ = ABCD rispetto ad F −{A → C} A+ = ABCD rispetto ad F − {A → B} A → C e` ridondante A → B e` ridondante F1 = F −{A → C} F3 = F − {A → B} Nessun’altra dipendenza puo` essere Nessun’altra dipendenza puo` esse eliminata eliminata Attributi ridondanti a sinistra Attributi ridondanti a sinistra AB → D AB → D A+ = ABCD calcolata rispetto ad F1 A+ = ABCD calcolata rispetto ad B puo` essere eliminata da AB → D B puo` essere eliminata da AB F2 = {A → D, A → B, B → C, C → B} F4 = {A → D, A → C, B → C, C minimale B} minimale 77
  40. 40. Scomposizione in 3NF – algoritmo 78 Scomposizione in 3NF – esempio R(A,B,C,D) F = {A → D, A → B, B → C, C → B} minimale A+ = ABCD A e` l’unica chiave Lo schema non e` in 3NF C → B e B → C non soddisfano condizione Generiamo gli schemi R1(A,D), R2(A,B) ed R3(B,C) Gli schemi R1(A,D) e R2(A,B) possono essere combinati ottenendo il nuovo schema R1,2(A,B,D) R1,2(A,B,D) R3(B,C) R1,2 contiene la chiave R1,2(A,B,D) R3(B,C) 3NF lossless join e preserva le dipendenze 79
  41. 41. Scomposizione in BCNF – esempio R(A,B,C,D) F = {A → D, A → B, B → C, C → B} Chiave A Non e` in BCNF C → B viola la BCNF R2(A,D,C) R1(B,C) ΠR2 (F) = {A → D, A → C } ΠR1(F)= {B → C, C → B} Chiave a Chiavi B e C BCNF BCNF Σ = {R1, R2} preserva anche A → B 80 A+ = ABCD calcolato rispetto a ΠR1(F) U ΠR2(F) Osservazione La progettazione logica, insieme alla normalizzazione, permette di generare schemi relazionali di qualita`, a partire da schemi ER Se utilizziamo le metodologie di progettazione basate sui diagrammi ER gli schemi relazionali ottenuti sono gia` in 3NF 81
  42. 42. Osservazione La normalizzazione rappresenta comunque un utile strumento di verifica di qualita` non sempre le basi di dati esistenti sono state progettate seguendo i criteri proposti lo schema di una base di dati puo` evolvere nel tempo a questa evoluzione non sempre si affianca un raffinamento della documentazione modifiche applicate a schemi normalizzati, se effettuate con scarsa attenzione, possono portare alla generazione di ridondanze utile strumento per verificare la scelta degli identificatori, e di conseguenza delle chiavi, determinate nelle fasi di progettazione concettuale e logica 82

×