SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
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
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
Ridondanza
                  Chiave = colloc




    stesso Film
                       ridondanza         4




Ridondanza
Video




                               No ridondanza



  Film




                                          5
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

Contenu connexe

En vedette

Soluzione generalizzazioni in diagrammi ER
Soluzione generalizzazioni in diagrammi ERSoluzione generalizzazioni in diagrammi ER
Soluzione generalizzazioni in diagrammi ERSergio Porcu
 
Corso di "Sicurezza delle Reti Applicata"
Corso di "Sicurezza delle Reti Applicata"Corso di "Sicurezza delle Reti Applicata"
Corso di "Sicurezza delle Reti Applicata"Gian Luca Petrillo
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RGiuseppe Cramarossa
 
Introduzione al SQL e ai database
Introduzione al SQL e ai databaseIntroduzione al SQL e ai database
Introduzione al SQL e ai databaseMaurizio Napolitano
 
La Comunicazione Digitale
La Comunicazione DigitaleLa Comunicazione Digitale
La Comunicazione DigitalePietro e Silvia
 
Introduzione JQuery
Introduzione JQueryIntroduzione JQuery
Introduzione JQueryorestJump
 
Reti Informatiche
Reti InformaticheReti Informatiche
Reti Informatichebity1988
 
Html e CSS ipertesti e siti web 4.5
Html e CSS   ipertesti e siti web 4.5Html e CSS   ipertesti e siti web 4.5
Html e CSS ipertesti e siti web 4.5orestJump
 
Reti e internet
Reti e internetReti e internet
Reti e internetyrcorr
 

En vedette (14)

DATABASE (Basi di dati)
DATABASE (Basi di dati)DATABASE (Basi di dati)
DATABASE (Basi di dati)
 
Soluzione generalizzazioni in diagrammi ER
Soluzione generalizzazioni in diagrammi ERSoluzione generalizzazioni in diagrammi ER
Soluzione generalizzazioni in diagrammi ER
 
esempio modello concettuale
esempio modello concettualeesempio modello concettuale
esempio modello concettuale
 
Corso di "Sicurezza delle Reti Applicata"
Corso di "Sicurezza delle Reti Applicata"Corso di "Sicurezza delle Reti Applicata"
Corso di "Sicurezza delle Reti Applicata"
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-R
 
Introduzione al SQL e ai database
Introduzione al SQL e ai databaseIntroduzione al SQL e ai database
Introduzione al SQL e ai database
 
Storia di internet
Storia di internetStoria di internet
Storia di internet
 
Le reti
Le retiLe reti
Le reti
 
La Comunicazione Digitale
La Comunicazione DigitaleLa Comunicazione Digitale
La Comunicazione Digitale
 
Power point internet
Power point internetPower point internet
Power point internet
 
Introduzione JQuery
Introduzione JQueryIntroduzione JQuery
Introduzione JQuery
 
Reti Informatiche
Reti InformaticheReti Informatiche
Reti Informatiche
 
Html e CSS ipertesti e siti web 4.5
Html e CSS   ipertesti e siti web 4.5Html e CSS   ipertesti e siti web 4.5
Html e CSS ipertesti e siti web 4.5
 
Reti e internet
Reti e internetReti e internet
Reti e internet
 

Plus de guestbe916c

Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H Pguestbe916c
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apacheguestbe916c
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M Lguestbe916c
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M Sguestbe916c
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzioneguestbe916c
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioniguestbe916c
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controlloguestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Serverguestbe916c
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Clientguestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionaleguestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioniguestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q Lguestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M Lguestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Queryguestbe916c
 

Plus de guestbe916c (20)

Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzione
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 
Algebra
AlgebraAlgebra
Algebra
 

06 Normalizzazione

  • 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. 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. Ridondanza Chiave = colloc stesso Film ridondanza 4 Ridondanza Video No ridondanza Film 5
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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