SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
Progettazione logica




                                                                  0




Progettazione logica
 Progettazione concettuale
   produce uno schema concettuale indipendente dal
   particolare sistema di gestione dati che utilizzeremo per la
   sua implementazione
   obiettivo primario: rappresentazione formale e non
   ambigua dei dati di interesse
 Progettazione logica
   scelto uno specifico DBMS, traduce lo schema concettuale
   in uno schema logico per il DBMS prescelto
   obiettivo primario: punto di partenza per la realizzazione
   della base di dati e delle relative applicazioni

                                                                  1
Progettazione logica -
obiettivo principale

Tradurre uno schema ER, ottenuto come risultato della
    fase di progettazione concettuale, in uno schema
   relazionale equivalente e che tenga anche conto di
    aspetti legati alle prestazioni delle operazioni che
           verranno eseguite sulla base di dati




                                                       2




Progettazione logica - schema




                                                       3
Progettazione logica - input

 Schema concettuale
                                       Carico di lavoro
        +


                           +
  documentazione
                                        Dimensioni dei dati
                                        Operazioni da eseguire
                                        sulla base di dati,
                                        Frequenza operazioni




                                                                    4




Progettazione logica - fase di
ristrutturazione
 Genera uno schema ER semplificato (schema ER
 ristrutturato), ma equivalente a quello di partenza,
 al fine di semplificarne la traduzione successiva
   eliminazione dallo schema ER di tutti quei costrutti non
   direttamente rappresentabili nel modello relazionale
   ulteriori ristrutturazioni dello schema che tengano conto di
   aspetti prestazionali, identificati dall'analisi del carico di
   lavoro
 Traduzione non sempre univoca
   dipende dal carico di lavoro e da considerazioni relative
   alla conseguente realizzazione della base di dati che
   stiamo progettando

                                                                    5
Progettazione logica - fase di
traduzione
 Lo schema ER ristrutturato viene tradotto in
 un equivalente schema relazionale
 applicazione di un insieme di regole di
 trasformazione a entita`, attributi e
 associazioni del modello ER
 traduzione non sempre univoca
   la scelta di una delle soluzioni possibili dipende
   da considerazioni di carattere prestazionale

                                                                          6




Progettazione logica - output

 Schema logico
                                            Documentazione


                              +             Dizionari
  Vincoli di integrita`                     Dettagli scelte progettuali
  Vincoli di autorizzazione




                   Vincoli di dominio
              Vincoli CHECK od asserzioni
                        Trigger
                  Comandi di GRANT
                                                                          7
Fase di ristrutturazione
 Eliminazione dallo schema ER di tutti i costrutti non
 direttamente rappresentabili nel modello relazionale
 Ulteriori ristrutturazioni dello schema che tengano
 conto di aspetti prestazionali, identificati dall'analisi
 del carico di lavoro
   analisi della ridondanza
   partizionamento/accorpamento di entita`
   eliminazione degli attributi composti e multi-valore
   eliminazione delle gerarchie di generalizzazione


                                                                 8




Analisi della ridondanza
 Ridondanza
   un'informazione viene rappresentata sia esplicitamente
   nello schema sia puo` essere derivata da altre informazioni
   (ad esempio attributi od associazioni) presenti nello
   schema
 Esempi
   presenza di cicli tra le associazioni
   presenza di attributi il cui valore puo` essere derivato da
   altri attributi ed/od associazioni



permette di semplificare lo schema ER e di generare
      successivamente uno schema relazionale
                                                                 9

                    non ridondante
Analisi della ridondanza
  Svantaggi:
    maggiore occupazione di spazio
    appesantimento delle procedure di aggiornamento
  Vantaggi
    puo` rendere piu` efficienti alcune interrogazioni descritte
    nel carico di lavoro


Ridondanza limitata solo a quei casi in cui sia possibile
  ottenere un significativo beneficio in termini di tempo
        di esecuzione di interrogazioni eseguite
                     frequentemente
                                                                   10




Analisi della ridondanza
  Le valutazioni da effettuare per l'eventuale
  eliminazione di entita` od associazioni
  ridondanti sono basate su stime piuttosto che
  su valori effettivi
    stima occupazione memoria del dato ridondante e
    costo delle operazioni in presenza oppure in
    assenza di ridondanza basate su informazioni sul
    volume dei dati
      da carico di lavoro

                                                                   11
Analisi della ridondanza -
esempio
                NumNoleggi


                                            Noleggio di un nuovo video
                                            da parte di un cliente:
                                            • aggiornamento istanze
                                              entita` Noleggio
                                            • aggiornamento del valore
                                               dell'attributo numNoleggi
                                               per il cliente considerato




                                        Operazione di stampa di un report
                                        contenente per ogni cliente
                                        il numero totale di noleggi frequente:
                                        • numNoleggi renderebbe piu` veloce
                                           l'esecuzione di questa operazione
                                                                         12
                                        • spazio richiesto limitato




Partizionamento/accorpamento
di entita`
Partizionamento
  un’entita` E puo` essere partizionata in due entita` E1 ed E2, una delle
  quali identificata esternamente dall'altra, collegate mediante
  un'associazione uno a uno
  conveniente quando alcune operazioni frequenti coinvolgono solo un
  sottoinsieme degli attributi di E
Accorpamento
  due entita` E1 ed E2 collegate da un'associazione uno a uno possono
  essere accorpate in un'unica entita` contenente gli attributi di E1 ed
  E2 nel caso in cui operazioni frequenti abbiano la necessita` di
  accedere ad entrambi gli insiemi di attributi
  evita la navigazione dell'associazione durante l'esecuzione di tali
  operazioni
  puo` generare attributi opzionali in caso di partecipazione opzionale
  all'associazione di almeno un'entita`
                                                                            13
Partizionamento/accorpamento
di entita` - esempio

                                               partizionamento
                                                accorpamento




                                                          14




Partizionamento/accorpamento
di entita`
 Le operazioni di partizionamento e di
 accorpamento possono gia` essere eseguite
 nella fase di ristrutturazione
 Spesso pero` vengono rimandate alla fase di
 progettazione fisica
  disponibilita` di ulteriori informazioni relative
  all'esecuzione delle interrogazioni



                                                          15
Eliminazione degli attributi
composti
Eliminazione di un attributo composto A da un'entita` E
   Soluzione 1: eliminazione dei sotto-attributi di A
       attributo composto diventa attributo semplice
       e` compito dell'applicazione garantire che il nuovo attributo
       contenga valori coerenti con la semantica dell'attributo composto
       ristrutturato
   Soluzione 2: considerare tutti i sotto-attributi di A come attributi di E
       ridefinizione del dominio dell'attributo
       si perde la relazione tra i sotto-attributi
Eventuali vincoli di cardinalita` esistenti per l'attributo composto
vengono associati a ciascuno dei nuovi attributi generati tramite
la ristrutturazione
Se le componenti dell'attributo composto sono a loro volta
attributi composti, si ri-applica la procedura
                                                                               16




Eliminazione degli attributi
composti - esempio
                                           Dom(citta`) = string
   Soluzione 1                                                    Soluzione 2
                                           Dom(via) = string
                                           Dom(no) = string
                                           Dom(cap) = integer




                                                                  Dom(citta`) = string
                 Dom(residenza) = string                          Dom(via) = string
                                                                  Dom(no) = string
                                                                  Dom(cap) = integer



                                                                               17
Eliminazione degli attributi
multi-valore
 Definizione di una nuova entita`, collegata all'entita`
 di partenza tramite un'opportuna associazione
 L'attributo multi-valore e` rappresentato mediante un
 attributo mono-valore che identifica l'entita`
 Vincoli di cardinalita` rispetto alla nuova
 associazione:
   per l'entita` che conteneva prima della ristrutturazione
   l'attributo multi-valore, coincide con il vincolo di cardinalita`
   dell'attributo multi-valore
   per la nuova entita` puo` essere in generale posto uguale a
   (1,n)

                                                                  18




Eliminazione degli attributi
multi-valore - esempio




                                                                  19
Eliminazione delle gerarchie di
generalizzazione
 Entita` E generalizzazione di un insieme di entita`
 E1,…,En
 Approccio
    si estraggono informazioni sul tipo di gerarchia (totale o
    parziale, esclusiva o condivisa) dalla documentazione di
    supporto generata dalla fase di progettazione concettuale
    si sceglie una soluzione di ristrutturazione, sulla base del
    carico di lavoro
       eliminazione entita` figlie
       eliminazione entita` padre
       sostituzione della generalizzazione con
       associazioni                                                        20




Eliminazione entita` figlie
 Entita`
    E1,…,En vengono eliminate
 Attributi
    gli attributi di E1,…,En loro attributi vengono inseriti nell'entita`
    padre come attributi opzionali
    all'entita` padre viene aggiunto un attributo che specifica da quale
    entita` figlia nello schema originario proviene ciascuna istanza
    dell'entita` padre nello schema ristrutturato
        nel caso di generalizzazioni totali, tale attributo non puo` mai
        assumere valore nullo
        nel caso di generalizzazioni parziali, un valore nullo indica
        un'istanza dell'entita` padre che, nello schema originario, non era
        istanza di alcuna delle entita` figlie
        nel caso di generalizzazioni condivise, l'attributo sara` multi-valore
                                                                           21
Eliminazione entita` figlie
  Associazioni
      la partecipazione (obbligatoria od opzionale) di un'entita` figlia ad
      un'associazione viene sostituita con la partecipazione opzionale
      dell'entita` padre alla stessa associazione
  Vincoli di integrita`
      per ogni attributo inserito nell'entita` padre, e` necessario
      aggiungere un vincolo di integrita` che indichi quando tale
      attributo puo` assumere un valore nullo, sulla base del tipo
      dell'istanza considerata e sulla base del tipo di generalizzazione
      (totale o parziale, condivisa od esclusiva)
         se la generalizzazione e` totale, gli attributi di almeno un'entita`
         figlia Ei dovranno essere obbligatori
         se e` esclusiva, gli attributi di al piu` un'entita` figlia Ei dovranno
         essere obbligatori
      per ogni associazione, e` necessario aggiungere un vincolo di
      integrita` che indichi quali tipi di istanze dell'entita` padre            22
      possono essere coinvolti nell'associazione




Eliminazione entita` figlie
Generalizzazione
totale ed esclusiva




                                                                                 23
Eliminazione entita` padre
 Applicabile solo nel caso di generalizzazione totale
 Entita`
    eliminazione dell'entita padre E
 Attributi
    inserimento degli attributi di E in ciascuna delle entita` figlie
 Associazioni
    ogni associazione a cui partecipava l'entita` padre viene inoltre
    sostituita con n nuove associazioni, una per ogni entita` figlia
 Vincoli di integrita`
    se la generalizzazione esclusiva, vincolo per indicare che, nello schema
    ristrutturato, non possono esistere istanze di due entita` figlie distinte
    aventi lo stesso valore per gli identificatori
    il vincolo di cardinalita` di ciascuna entita` figlia rispetto alla nuova
    associazione coincidera` con il vincolo di cardinalita` dell'entita` padre
    rispetto all'associazione eliminata
    i vincoli di cardinalita` delle altre entita` diventeranno invece opzionali
                                                                              24




Eliminazione entita` padre -
esempio




                                                                              25
Sostituzione della
generalizzazione con associazioni
 Entita`
      non modificate
 Associazioni
   la gerarchia viene sostituita da n associazioni uno a uno, ognuna
   delle quali lega l'entita` padre con una diversa entita` figlia
   le entita` figlie sono identificate esternamente dall'entita` padre e
   partecipano obbligatoriamente alle associazioni create mentre la
   partecipazione dell'entita` padre e` opzionale
 Vincoli di integrita`
   se la generalizzazione e` esclusiva, un'istanza dell'entita` padre
   non puo` partecipare contemporaneamente a due o piu`
   associazioni
   se la generalizzazione e` totale, ogni istanza dell'entita` padre
   deve partecipare obbligatoriamente ad almeno un’associazione 26




Sostituzione della generalizzazione
con associazioni - esempio




                                                                       27
Osservazioni
 Eliminazione entita` figlie
    spreco di memoria per la presenza dei valori nulli
    conveniente solo nel caso in cui le operazioni non fanno distinzione tra
    le varie sotto-entita`
 Eliminazione entita` padre
    risparmio di memoria rispetto alla soluzione di eliminare le entita` figlie
    in quanto evita il problema dei valori nulli
    conveniente soprattutto nel caso in cui esistano operazioni che si
    riferiscono alle istanze di una specifica entita` figlia
    solo per generalizzazione totale
 Sostituzione con associazioni
    preferibile alla soluzione di eliminare le entita` figlie per quanto riguarda
    la quantita` di memoria utilizzata
    conveniente quando esistono delle operazioni che discriminano tra
    entita` padre ed entita` figlie

                                                                                  28




Osservazioni
 In alcune situazioni, puo` essere conveniente
 adottare soluzioni ibride
    eliminazione di un sottoinsieme delle entita` figlie,
    mantenendo le altre nello schema
 Generalizzazione a piu` livelli
    si applicano le strategie proposte partendo dalle foglie
    della gerarchia complessiva
    lo schema risultante dipendera` dal tipo della
    ristrutturazione applicata ad ogni livello



                                                                                  29
Fase di traduzione
 Genera, a partire dallo schema ER restituito dalla
 fase di ristrutturazione, un equivalente schema
 relazionale
 Si basa su un insieme di regole di traduzione
   traduzione delle entita`
   traduzione delle associazioni
   traduzione dei vincoli di integrita`
   ottimizzazioni finali




                                                           30




Regole di traduzione
                                          Associazione
         Entita`




                                            Relazione
      Relazione
                                                o
                                          Chiave esterna




                                                           31
Traduzione entita`
 Due casi
     l’entita` E possiede non identificatori esterni o
     misti
     l’entita` E possiede identificatori esterni o misti




                                                              32




Traduzione entita` - no
identificatori esterni/misti

A1   A2 (0,1) A3 A4
                                 E(A1/D1, A2O/D2, A3/D3, A4/D4)

                                    Di estratti dalla
         E
                                    documentazione generata dalla
                                    progettazione concettuale
                                    Vincolo di obbligatorieta` per
                                    A1, A3, A4
                                    Chiavi candidate: A1, (A3,A4)




                                                              33
Traduzione entita` -
     identificatori esterni/misti
      A1   A2 (0,1) A3 A4
                                 E1(A1/D1, A2O/D2, A3/D3, A4/D4, B1E2/F1)

                                                  E2(B1/F1)
              E1


                                   Di, Fi estratti dalla documentazione
                                   generata dalla progettazione concettuale
                                   Vincolo di obbligatorieta` per A1, A3, A4,
               A
                                   B1
                                   Chiavi candidate per E2: B1
                                   Chiavi candidate per E1: (A1,B1),
                                   (A3,A4)
B1            E2                   A viene automaticamente rappresentata


                                                                            34




     Traduzione entita` -
     identificatori esterni/misti
      A1   A2 (0,1) A3 A4
                                  E1(A1/D1, A2O/D2, A3/D3, A4/D4, ,B1E2/F1,C1)

                                                     E2(B1/F1)
              E1

                                    Di, Fi estratti dalla documentazione generata
                                    dalla progettazione concettuale
                            C1
                                    Vincolo di obbligatorieta` per A1, A3, A4, B1
                                    Chiavi candidate per E2: B1
               A
                                    Chiavi candidate per E1: B1, (A3,A4)
                                    A viene automaticamente rappresentata


B1            E2



                                                                            35
Traduzione entita` -
identificatori esterni/misti
 Se E2 ha almeno un identificatore esterno o
 misto
   si eliminano prima gli identificatori esterni o misti
   di E2
   si elimina quindi l’identificatore esterno o misto di
   E1




                                                             36




Traduzione entita` - esempio



        Videoteca(nome, citta`)
        Video(colloc, nomeVideoteca, citta`Videoteca,tipo)




         Nazione(nome,capitale,numAbitanti)
         Nazionale(nomeNazione)
                                                             37
Traduzione entita` - scelta
chiave primaria
 Ciascuna relazione potrebbe essere caratterizzata
 da piu` di una chiave
    e` necessario selezionare una di queste chiavi come
    chiave primaria
    dipende da criteri di efficienza
 Questi criteri possono anche essere utilizzati per
 determinare quale chiave di una relazione R2
 inserire come chiave esterna in una relazione R1
    e` preferibile definire una chiave esterna sulla base di una
    chiave primaria

                                                                        38




Traduzione entita` - scelta
chiave primaria
 Criteri
    gli identificatori che contengono attributi opzionali non possono
    essere selezionati come chiave primaria
    identificatori composti da pochi attributi sono preferibili ad
    identificatori composti da molti attributi
    identificatori che assumiamo vengano utilizzati da molte
    operazioni per accedere alle entita` sono da preferire
 Se nessuna chiave candidata soddisfa i requisiti precedenti
    e` consigliabile aggiungere alla relazione un ulteriore attributo
    come chiave primaria ed assegnare a tale attributo valori
    speciali (codici) generati appositamente ai fini dell'identificazione


                                                                        39
Traduzione associazioni -
 assunzione
     Negli schemi che presenteremo nel seguito
     supponiamo che le entita` abbiano una sola
     chiave candidata, scelta come chiave
     primaria
     Viene omessa la rappresentazione del
     dominio degli attributi




                                                                 40




 Traduzione associazione
 binaria uno a uno
                                   Partecipazione obbligatoria
      A1   A2        A3      A4
                                   di una sola entita`

                E1


                     (1,1)
                                   E1(A1, A2, A3, A4, B1E2,C1)
                              C1

                                   E2(B1, B2, B3)
                A


                     (0,1)

B1
B2              E2
B3
                                                                 41
Traduzione associazione
 binaria uno a uno - esempio




     Film(titolo,regista,anno,genere,valutaz)

     Cliente(codCli,nome,cognome,telefono,dataN,residenza,
             titoloFilm,registaFilm,giudizio)           42




 Traduzione associazione
 binaria uno a uno
      A1   A2        A3      A4    Partecipazione obbligatoria
                                   di entrambe le entita`

                                   E1(A1, A2, A3, A4, B1E2 ,C1)
                E1

                                   E2(B1, B2, B3)
                     (1,1)
                              C1
                                   Oppure
                A


                                   E1(A1, A2, A3, A4)
                     (1,1)
                                   E2(B1, B2, B3, A1E1 ,C1)
B1
B2              E2
B3


                                                                 43
Traduzione associazione
   binaria uno a uno
                                             Partecipazione opzionale
         A1   A2        A3      A4           di entrambe le entita`
                                             E1(A1, A2, A3, A4, B1oE2,C1o)
                                             E2(B1, B2, B3)
                   E1

                                             oppure
                        (0,1)
                                 C1
                                             E1(A1, A2, A3, A4)
                   A
                                             E2(B1, B2, B3, A1oE1,C1o)
                        (0,1)
                                             oppure (per eliminare i valori nulli)
 B1
 B2                E2
                                             E1(A1, A2, A3, A4)
 B3
                                             E2(B1, B2, B3)
                                             A(A1E1,B1E2,C1) oppure
                                             A(A1E1,B1E2,C1)                       44




   Traduzione associazione
   binaria uno a uno - esempio




Film(titolo,regista,anno,genere,valutaz)
Cliente(codCli,nome,cognome,telefono,dataN,residenza,titolooFilm,registaoFilm,giudizioo)

Film(titolo,regista,anno,genere,valutaz,codClioCliente,giudizioo)
Cliente(codCli,nome,cognome,telefono,dataN,residenza,,giudizio)

Film(titolo,regista,anno,genere,valutaz)
Cliente(codCli,nome,cognome,telefono,dataN,residenza,,giudizio)
Consiglia(codCliCliente,titoloFilm,registaFilm) oppure
                                                                                   45
Consiglia(codCliCliente,titoloFilm,registaFilm)
Traduzione associazione
 binaria uno a molti

     A1   A2        A3      A4
                                         Partecipazione obbligatoria
                                         entita` dal lato uno
               E1


                    (1,1)
                                         E1(A1, A2, A3, A4, B1E2,C1)
                             C1

                                         E2(B1, B2, B3)
               A


                    (0,n) oppure (1,n)

B1
B2             E2
B3
                                                                         46




 Traduzione associazione
 binaria uno a molti

     A1   A2        A3      A4
                                         Partecipazione opzionale
                                         entita` dal lato uno
               E1

                                         E1(A1, A2, A3, A4, B1oE2,C1o)
                    (0,1)                E2(B1, B2, B3)
                             C1

               A                         oppure (per eliminare i valori nulli)

                    (0,n) oppure (1,n)   E1(A1, A2, A3, A4)
                                         E2(B1, B2, B3)
B1
                                         A(A1E1, B1E2, C1)
B2             E2
B3
                                                                         47
Traduzione associazione
binaria uno a molti - esempio




          Film(titolo,regista,anno,genere,valutaz)

          Video(colloc,tipo,titoloFilm,registaFilm,data)


                                                           48




Traduzione associazione
binaria uno a molti - esempio




Video(colloc,tipo,codClioCliente,dataNolo)
Cliente(codCli,nome,cognome,telefono,dataN,residenza)

Video(colloc,tipo)
Cliente(codCli,nome,cognome,telefono,dataN,residenza)
Noleggia(collocVideo,codCliCliente,dataNol)                49
Traduzione associazione
 binaria molti a molti
     A1   A2        A3   A4



               E1


                    (0,n) oppure (1,n)
                                         E1(A1, A2, A3, A4)
                            C1
                                         E2(B1, B2, B3)
               A
                                         A(A1E1, B1E2,C1)
                    (0,n) oppure (1,n)

B1
B2             E2
B3

                                                                 50




 Traduzione associazione
 binaria molti a molti - esempio




      Cliente(codCli,nome,cognome,telefono,dataN,residenza)
      Film(titolo,regista,anno,genere,valutaz)
      Consiglia(codCliCliente,titoloFilm,registaFilm,giudizio)

                                                                 51
Associazione unaria uno a uno
    o uno a molti
        In modo analogo ad associazioni binarie,
        considerando i ruoli
                                               Partecipazione obbligatoria
           A1   A2        A3      A4
                                               entita` dal lato uno


                                            E1(A1, A2, A3, A4, R2E1 ,C1)
                     E1


                 R1       (1,1)
                                       C1
           R2
                      A

(0,1) oppure (1,1) oppure
(0,n) oppure (1,n)
                                                                             52




    Associazione unaria uno a uno
    o uno a molti
                                            Partecipazione opzionale
                                            entita` dal lato uno
           A1   A2        A3      A4



                                            E1(A1, A2, A3, A4, R2oE1 ,C1o)
                     E1


                                            oppure
                 R1       (0,1)
                                       C1
           R2
                      A
                                            E1(A1, A2, A3, A4)
                                            A(R1E1, R2E1, C1)
(0,1) oppure (0,n) oppure (1,n)




                                                                             53
Associazione unaria molti a
  molti

            A1   A2        A3   A4



                                                    E1(A1, A2, A3, A4)
                      E1
                                                    A(R1E1, R2E1, C1)
                  R1       (0,n) oppure (1,n)
                                    C1
            R2
                       A


 (0,n) oppure (1,n)




                                                                       54




  Associazione unaria uno a
  molti - esempio




Cliente(codCli,nome,cognome,telefono,dataN,residenza,vecchioClioCliente)

                                           oppure

Cliente(codCli,nome,cognome,telefono,dataN,residenza)                  55
Presenta(nuovoCliCliente,vecchioCliCliente)
Associazione unaria molti a
     molti - esempio




         Cliente(codCli,nome,cognome,telefono,dataN,residenza)
         Presenta(nuovoCliCliente,vecchioCliCliente)

                                                                                56




     Associazione n-aria molti a
     molti
      In modo analogo ad associazioni binarie
      Spesso sono molti a molti
                          A1   A2         A3   A4



                                    E1


                                          (1,n) oppure (0,n)
                       (1,n) oppure                            E1(A1, A2, A3, A4)
                                                 C1
                       (0,n)
D1
                                                               E2(B1, B2, B3)
D2                                    A
             E3
                                                               E3(D1, D2)
                                                               A(A1E1, B1E2, D1E3, C1)
                                          (1,n) oppure (0,n)

                  B1
                  B2                E2
                  B3                                                            57
Associazione n-aria molti a
     molti
      In alcuni casi (A1, B1, D1) e` una super-
      chiave per A
      La determinazione della chiave puo` avvenire
      dall’analisi di particolari vincoli di integrita`
        dipendenze funzionali
        le vedremo nel seguito




                                                                              58




     Altre associazione n-arie
      In modo analogo ad associazioni binarie
                         A1   A2         A3   A4



                                   E1


                                         (1,1) oppure (0,1)
                      (1,n) oppure
                                                              E1(A1, A2, A3, A4,
                                                C1
                      (0,n)
D1
                                                                 B1E2, D1E3, C1)
D2                                   A
            E3
                                                              E2(B1, B2, B3)
                                                              E3(D1, D2)
                                     (1,n) oppure (0,n)
                 B1
                 B2                E2
                 B3
                                                                              59
Associazione n-aria - esempio




   Cliente(codCli,nome,cognome,telefono,dataN,residenza)
   Film(titolo,regista,anno,genere,valutaz)
   Attore(codA,nome,cognome)
   Consiglia(codCliCliente,titoloFilm,registaFilm,codAAttore,giudizio)   60




 Associazione n-aria - esempio




Se un cliente puo` consigliare attori in un numero arbitrario di
film, ma al piu` un film per ogni attore (vincolo di integrita`):

Cliente(codCli,nome,cognome,telefono,dataN,residenza)
Film(titolo,regista,anno,genere,valutaz)
Attore(codA,nome,cognome)
Consiglia(codCliCliente,titoloFilm,registaFilm,codAAttore,giudizio)      61
Associazione n-aria - esempio




Cliente(codCli,nome,cognome,telefono,dataN,residenza,
         titolooFilm,registaoFilm,codAoAttore,giudizioo)
Film(titolo,regista,anno,genere,valutaz)
Attore(codA,nome,cognome)

                        Come si puo` ridurre la presenza di valori nulli?   62




   Un esempio completo di
      progettazione logica
Carico di lavoro
   Operazione 1
     Inserisce un nuovo video ed il corrispondente film, se non ancora
     presente (frequenza: 30 video/mese, 10 film/mese)
   Operazione 2
     Inserisce un nuovo cliente, classificandolo come cliente standard,
     indicando tutti i suoi dati anagrafici (frequenza: 5 clienti/settimana)
   Operazione 3
     Inserisce le informazioni relative ad un nuovo noleggio ed aggiorna i
     punti mancanti per accedere alla categoria VIP; quando i punti
     mancanti ad un cliente standard per accedere alla categoria VIP
     sono zero, il cliente cambia categoria e diventa un cliente VIP a cui
     viene assegnato un determinato bonus (frequenza: 200
     noleggi/giorno)
   Operazione 4
     Aggiorna i dati del noleggio al momento della restituzione del video
     da parte di un generico cliente (frequenza: 200 noleggi/giorno)      64




Carico di lavoro
   Operazione 5
     Stampa l’elenco dei nomi e delle residenze di tutti i clienti che hanno
     noleggiato almeno un video da pi`u di 1 settimana e non l’hanno
     ancora restituito (frequenza: 1 stampa/giorno)
   Operazione 6
     Stampa l’elenco dei nomi e delle residenze di tutti i clienti VIP, per
     inviare materiale informativo relativo alla situazione bonus
     (frequenza: 2 stampe/mese)




                                                                               65
città via no cap


             telefono    codCli residenza                                dataRest (0,1)         dataNol
             (1,n)


 dataN
                                       (0,n)                             (1,1)
  nome                                             Effettua
                         Cliente                                                       Noleggio
cognome

                                   (0,n)                                            (1,1)

                                                                                      Relati voA


          Standard                         VIP
                                                              giudizio
                                                                                                    colloc

                                                                                    (0,n)                           DVD
                                                 Consi glia
  ptiMancanti
                                    bonus
                                                                                            Video


                                                                                    (1,1)                           VHS



Schema                                                                                Contiene


concettuale                                                                                         genere


                                                                                    (0,n)
                                                                                                             valutaz (0,1)
                                                                         (0,n)
                                                                                            Fi lm
                                                                                                             anno

                                                                                                                             66

                                                                                 ti tol o     regi sta




    Documentazione concettuale
     Vincoli:
                        V1: Un cliente non può noleggiare più di tre video contemporaneamente

                     V2: Un video non può essere noleggiato prima dell’uscita del relativo film

                     V3: La data di noleggio di un video non può essere successiva a quella di
                     restituzione
                     V4: Uno stesso video non può essere noleggiato da due o più clienti
                     diversi contemporaneamente




                                                                                                                             67
Documentazione concettuale
Gerarchie di generalizzazione:


      Entità padre   Entità figlie   Tipologia

      Cliente        Standard, VIP   Totale/esclusiva

      Video          DVD, VHS        Totale/esclusiva




                                                        68




                                Schema
                                ristrutturato




                                                        69
Documentazione su schema
ristrutturato
Vincoli:
       V1: Un cliente non può noleggiare più di tre video contemporaneamente

       V2: Un video non può essere noleggiato prima dell’uscita del relativo film

       V3: La data di noleggio di un video non può essere successiva a quella di
       restituzione
       V4: Uno stesso video non può essere noleggiato da due o più clienti
       diversi contemporaneamente

       V5: Ogni cliente e` alternativamente un cliente standard od un cliente VIP




                                                                                    70




Schema relazionale
Cliente(codCli,nome,cognome,dataN,residenza)
Standard(codCliCliente,ptiMancanti)
VIP(codCliCliente,bonus)
Telefono(numero)
Video(colloc,tipo,titoloFilm,registaFilm)
Film(titolo,regista,anno,genere,valutazo)
Noleggio(collocVideo,dataNol,codCliCliente,dataResto)
RispondeA(codCliCliente,numeroTelefono)
Consiglia(titoloFilm,registaFilm,codCliCliente,giudizio)
                                                                                    71
Documentazione




                                                       72




Ottimizzazioni
 La relazione Telefono puo` essere eliminata
   ogni numero di telefono che compare nella
   relazione Telefono compare anche nella relazione
   RispondeA in quanto la partecipazione dell’entita`
   Telefono all’associazione RispondeA e`
   obbligatoria
 Possiamo inserire un nuovo attributo codF in
 Film, come chiave primaria
   La chiave attuale (di due attributi) diventerebbe
   chiave alternativa

                                                       73

Contenu connexe

Similaire à 04 Progettazione Logica

Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Fabio Armani
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateManuel Scapolan
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistraleKlenje
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven DesignAndrea Saltarello
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNetMauro Servienti
 
Software Re Engineering
Software Re EngineeringSoftware Re Engineering
Software Re Engineeringpantifabr
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Gian Maria Ricci
 
Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Fabio Armani
 
Zend Framework Workshop Parte1
Zend Framework Workshop Parte1Zend Framework Workshop Parte1
Zend Framework Workshop Parte1massimiliano.wosz
 
Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...confluent
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimentiMajong DevJfu
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSAndrea Saltarello
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 

Similaire à 04 Progettazione Logica (20)

Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Presentazione tesi magistrale
Presentazione tesi magistralePresentazione tesi magistrale
Presentazione tesi magistrale
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet.Net 4.0 Preview @ UGIdotNet
.Net 4.0 Preview @ UGIdotNet
 
Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
Software Re Engineering
Software Re EngineeringSoftware Re Engineering
Software Re Engineering
 
Angular Components e Pipe
Angular Components e PipeAngular Components e Pipe
Angular Components e Pipe
 
Database Project in Visual Studio 2010
Database Project in Visual Studio 2010Database Project in Visual Studio 2010
Database Project in Visual Studio 2010
 
Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)Design Patterns - Enterprise Patterns (part 2)
Design Patterns - Enterprise Patterns (part 2)
 
Zend Framework Workshop Parte1
Zend Framework Workshop Parte1Zend Framework Workshop Parte1
Zend Framework Workshop Parte1
 
Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...Digital Integration Hub per il monitoraggio in near-real time della logistica...
Digital Integration Hub per il monitoraggio in near-real time della logistica...
 
D3 Normali
D3 NormaliD3 Normali
D3 Normali
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
Kotlin hexagonal-architecture
Kotlin hexagonal-architectureKotlin hexagonal-architecture
Kotlin hexagonal-architecture
 
Components
ComponentsComponents
Components
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 

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
 
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 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazioneguestbe916c
 
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
 
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 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
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
 

04 Progettazione Logica

  • 1. Progettazione logica 0 Progettazione logica Progettazione concettuale produce uno schema concettuale indipendente dal particolare sistema di gestione dati che utilizzeremo per la sua implementazione obiettivo primario: rappresentazione formale e non ambigua dei dati di interesse Progettazione logica scelto uno specifico DBMS, traduce lo schema concettuale in uno schema logico per il DBMS prescelto obiettivo primario: punto di partenza per la realizzazione della base di dati e delle relative applicazioni 1
  • 2. Progettazione logica - obiettivo principale Tradurre uno schema ER, ottenuto come risultato della fase di progettazione concettuale, in uno schema relazionale equivalente e che tenga anche conto di aspetti legati alle prestazioni delle operazioni che verranno eseguite sulla base di dati 2 Progettazione logica - schema 3
  • 3. Progettazione logica - input Schema concettuale Carico di lavoro + + documentazione Dimensioni dei dati Operazioni da eseguire sulla base di dati, Frequenza operazioni 4 Progettazione logica - fase di ristrutturazione Genera uno schema ER semplificato (schema ER ristrutturato), ma equivalente a quello di partenza, al fine di semplificarne la traduzione successiva eliminazione dallo schema ER di tutti quei costrutti non direttamente rappresentabili nel modello relazionale ulteriori ristrutturazioni dello schema che tengano conto di aspetti prestazionali, identificati dall'analisi del carico di lavoro Traduzione non sempre univoca dipende dal carico di lavoro e da considerazioni relative alla conseguente realizzazione della base di dati che stiamo progettando 5
  • 4. Progettazione logica - fase di traduzione Lo schema ER ristrutturato viene tradotto in un equivalente schema relazionale applicazione di un insieme di regole di trasformazione a entita`, attributi e associazioni del modello ER traduzione non sempre univoca la scelta di una delle soluzioni possibili dipende da considerazioni di carattere prestazionale 6 Progettazione logica - output Schema logico Documentazione + Dizionari Vincoli di integrita` Dettagli scelte progettuali Vincoli di autorizzazione Vincoli di dominio Vincoli CHECK od asserzioni Trigger Comandi di GRANT 7
  • 5. Fase di ristrutturazione Eliminazione dallo schema ER di tutti i costrutti non direttamente rappresentabili nel modello relazionale Ulteriori ristrutturazioni dello schema che tengano conto di aspetti prestazionali, identificati dall'analisi del carico di lavoro analisi della ridondanza partizionamento/accorpamento di entita` eliminazione degli attributi composti e multi-valore eliminazione delle gerarchie di generalizzazione 8 Analisi della ridondanza Ridondanza un'informazione viene rappresentata sia esplicitamente nello schema sia puo` essere derivata da altre informazioni (ad esempio attributi od associazioni) presenti nello schema Esempi presenza di cicli tra le associazioni presenza di attributi il cui valore puo` essere derivato da altri attributi ed/od associazioni permette di semplificare lo schema ER e di generare successivamente uno schema relazionale 9 non ridondante
  • 6. Analisi della ridondanza Svantaggi: maggiore occupazione di spazio appesantimento delle procedure di aggiornamento Vantaggi puo` rendere piu` efficienti alcune interrogazioni descritte nel carico di lavoro Ridondanza limitata solo a quei casi in cui sia possibile ottenere un significativo beneficio in termini di tempo di esecuzione di interrogazioni eseguite frequentemente 10 Analisi della ridondanza Le valutazioni da effettuare per l'eventuale eliminazione di entita` od associazioni ridondanti sono basate su stime piuttosto che su valori effettivi stima occupazione memoria del dato ridondante e costo delle operazioni in presenza oppure in assenza di ridondanza basate su informazioni sul volume dei dati da carico di lavoro 11
  • 7. Analisi della ridondanza - esempio NumNoleggi Noleggio di un nuovo video da parte di un cliente: • aggiornamento istanze entita` Noleggio • aggiornamento del valore dell'attributo numNoleggi per il cliente considerato Operazione di stampa di un report contenente per ogni cliente il numero totale di noleggi frequente: • numNoleggi renderebbe piu` veloce l'esecuzione di questa operazione 12 • spazio richiesto limitato Partizionamento/accorpamento di entita` Partizionamento un’entita` E puo` essere partizionata in due entita` E1 ed E2, una delle quali identificata esternamente dall'altra, collegate mediante un'associazione uno a uno conveniente quando alcune operazioni frequenti coinvolgono solo un sottoinsieme degli attributi di E Accorpamento due entita` E1 ed E2 collegate da un'associazione uno a uno possono essere accorpate in un'unica entita` contenente gli attributi di E1 ed E2 nel caso in cui operazioni frequenti abbiano la necessita` di accedere ad entrambi gli insiemi di attributi evita la navigazione dell'associazione durante l'esecuzione di tali operazioni puo` generare attributi opzionali in caso di partecipazione opzionale all'associazione di almeno un'entita` 13
  • 8. Partizionamento/accorpamento di entita` - esempio partizionamento accorpamento 14 Partizionamento/accorpamento di entita` Le operazioni di partizionamento e di accorpamento possono gia` essere eseguite nella fase di ristrutturazione Spesso pero` vengono rimandate alla fase di progettazione fisica disponibilita` di ulteriori informazioni relative all'esecuzione delle interrogazioni 15
  • 9. Eliminazione degli attributi composti Eliminazione di un attributo composto A da un'entita` E Soluzione 1: eliminazione dei sotto-attributi di A attributo composto diventa attributo semplice e` compito dell'applicazione garantire che il nuovo attributo contenga valori coerenti con la semantica dell'attributo composto ristrutturato Soluzione 2: considerare tutti i sotto-attributi di A come attributi di E ridefinizione del dominio dell'attributo si perde la relazione tra i sotto-attributi Eventuali vincoli di cardinalita` esistenti per l'attributo composto vengono associati a ciascuno dei nuovi attributi generati tramite la ristrutturazione Se le componenti dell'attributo composto sono a loro volta attributi composti, si ri-applica la procedura 16 Eliminazione degli attributi composti - esempio Dom(citta`) = string Soluzione 1 Soluzione 2 Dom(via) = string Dom(no) = string Dom(cap) = integer Dom(citta`) = string Dom(residenza) = string Dom(via) = string Dom(no) = string Dom(cap) = integer 17
  • 10. Eliminazione degli attributi multi-valore Definizione di una nuova entita`, collegata all'entita` di partenza tramite un'opportuna associazione L'attributo multi-valore e` rappresentato mediante un attributo mono-valore che identifica l'entita` Vincoli di cardinalita` rispetto alla nuova associazione: per l'entita` che conteneva prima della ristrutturazione l'attributo multi-valore, coincide con il vincolo di cardinalita` dell'attributo multi-valore per la nuova entita` puo` essere in generale posto uguale a (1,n) 18 Eliminazione degli attributi multi-valore - esempio 19
  • 11. Eliminazione delle gerarchie di generalizzazione Entita` E generalizzazione di un insieme di entita` E1,…,En Approccio si estraggono informazioni sul tipo di gerarchia (totale o parziale, esclusiva o condivisa) dalla documentazione di supporto generata dalla fase di progettazione concettuale si sceglie una soluzione di ristrutturazione, sulla base del carico di lavoro eliminazione entita` figlie eliminazione entita` padre sostituzione della generalizzazione con associazioni 20 Eliminazione entita` figlie Entita` E1,…,En vengono eliminate Attributi gli attributi di E1,…,En loro attributi vengono inseriti nell'entita` padre come attributi opzionali all'entita` padre viene aggiunto un attributo che specifica da quale entita` figlia nello schema originario proviene ciascuna istanza dell'entita` padre nello schema ristrutturato nel caso di generalizzazioni totali, tale attributo non puo` mai assumere valore nullo nel caso di generalizzazioni parziali, un valore nullo indica un'istanza dell'entita` padre che, nello schema originario, non era istanza di alcuna delle entita` figlie nel caso di generalizzazioni condivise, l'attributo sara` multi-valore 21
  • 12. Eliminazione entita` figlie Associazioni la partecipazione (obbligatoria od opzionale) di un'entita` figlia ad un'associazione viene sostituita con la partecipazione opzionale dell'entita` padre alla stessa associazione Vincoli di integrita` per ogni attributo inserito nell'entita` padre, e` necessario aggiungere un vincolo di integrita` che indichi quando tale attributo puo` assumere un valore nullo, sulla base del tipo dell'istanza considerata e sulla base del tipo di generalizzazione (totale o parziale, condivisa od esclusiva) se la generalizzazione e` totale, gli attributi di almeno un'entita` figlia Ei dovranno essere obbligatori se e` esclusiva, gli attributi di al piu` un'entita` figlia Ei dovranno essere obbligatori per ogni associazione, e` necessario aggiungere un vincolo di integrita` che indichi quali tipi di istanze dell'entita` padre 22 possono essere coinvolti nell'associazione Eliminazione entita` figlie Generalizzazione totale ed esclusiva 23
  • 13. Eliminazione entita` padre Applicabile solo nel caso di generalizzazione totale Entita` eliminazione dell'entita padre E Attributi inserimento degli attributi di E in ciascuna delle entita` figlie Associazioni ogni associazione a cui partecipava l'entita` padre viene inoltre sostituita con n nuove associazioni, una per ogni entita` figlia Vincoli di integrita` se la generalizzazione esclusiva, vincolo per indicare che, nello schema ristrutturato, non possono esistere istanze di due entita` figlie distinte aventi lo stesso valore per gli identificatori il vincolo di cardinalita` di ciascuna entita` figlia rispetto alla nuova associazione coincidera` con il vincolo di cardinalita` dell'entita` padre rispetto all'associazione eliminata i vincoli di cardinalita` delle altre entita` diventeranno invece opzionali 24 Eliminazione entita` padre - esempio 25
  • 14. Sostituzione della generalizzazione con associazioni Entita` non modificate Associazioni la gerarchia viene sostituita da n associazioni uno a uno, ognuna delle quali lega l'entita` padre con una diversa entita` figlia le entita` figlie sono identificate esternamente dall'entita` padre e partecipano obbligatoriamente alle associazioni create mentre la partecipazione dell'entita` padre e` opzionale Vincoli di integrita` se la generalizzazione e` esclusiva, un'istanza dell'entita` padre non puo` partecipare contemporaneamente a due o piu` associazioni se la generalizzazione e` totale, ogni istanza dell'entita` padre deve partecipare obbligatoriamente ad almeno un’associazione 26 Sostituzione della generalizzazione con associazioni - esempio 27
  • 15. Osservazioni Eliminazione entita` figlie spreco di memoria per la presenza dei valori nulli conveniente solo nel caso in cui le operazioni non fanno distinzione tra le varie sotto-entita` Eliminazione entita` padre risparmio di memoria rispetto alla soluzione di eliminare le entita` figlie in quanto evita il problema dei valori nulli conveniente soprattutto nel caso in cui esistano operazioni che si riferiscono alle istanze di una specifica entita` figlia solo per generalizzazione totale Sostituzione con associazioni preferibile alla soluzione di eliminare le entita` figlie per quanto riguarda la quantita` di memoria utilizzata conveniente quando esistono delle operazioni che discriminano tra entita` padre ed entita` figlie 28 Osservazioni In alcune situazioni, puo` essere conveniente adottare soluzioni ibride eliminazione di un sottoinsieme delle entita` figlie, mantenendo le altre nello schema Generalizzazione a piu` livelli si applicano le strategie proposte partendo dalle foglie della gerarchia complessiva lo schema risultante dipendera` dal tipo della ristrutturazione applicata ad ogni livello 29
  • 16. Fase di traduzione Genera, a partire dallo schema ER restituito dalla fase di ristrutturazione, un equivalente schema relazionale Si basa su un insieme di regole di traduzione traduzione delle entita` traduzione delle associazioni traduzione dei vincoli di integrita` ottimizzazioni finali 30 Regole di traduzione Associazione Entita` Relazione Relazione o Chiave esterna 31
  • 17. Traduzione entita` Due casi l’entita` E possiede non identificatori esterni o misti l’entita` E possiede identificatori esterni o misti 32 Traduzione entita` - no identificatori esterni/misti A1 A2 (0,1) A3 A4 E(A1/D1, A2O/D2, A3/D3, A4/D4) Di estratti dalla E documentazione generata dalla progettazione concettuale Vincolo di obbligatorieta` per A1, A3, A4 Chiavi candidate: A1, (A3,A4) 33
  • 18. Traduzione entita` - identificatori esterni/misti A1 A2 (0,1) A3 A4 E1(A1/D1, A2O/D2, A3/D3, A4/D4, B1E2/F1) E2(B1/F1) E1 Di, Fi estratti dalla documentazione generata dalla progettazione concettuale Vincolo di obbligatorieta` per A1, A3, A4, A B1 Chiavi candidate per E2: B1 Chiavi candidate per E1: (A1,B1), (A3,A4) B1 E2 A viene automaticamente rappresentata 34 Traduzione entita` - identificatori esterni/misti A1 A2 (0,1) A3 A4 E1(A1/D1, A2O/D2, A3/D3, A4/D4, ,B1E2/F1,C1) E2(B1/F1) E1 Di, Fi estratti dalla documentazione generata dalla progettazione concettuale C1 Vincolo di obbligatorieta` per A1, A3, A4, B1 Chiavi candidate per E2: B1 A Chiavi candidate per E1: B1, (A3,A4) A viene automaticamente rappresentata B1 E2 35
  • 19. Traduzione entita` - identificatori esterni/misti Se E2 ha almeno un identificatore esterno o misto si eliminano prima gli identificatori esterni o misti di E2 si elimina quindi l’identificatore esterno o misto di E1 36 Traduzione entita` - esempio Videoteca(nome, citta`) Video(colloc, nomeVideoteca, citta`Videoteca,tipo) Nazione(nome,capitale,numAbitanti) Nazionale(nomeNazione) 37
  • 20. Traduzione entita` - scelta chiave primaria Ciascuna relazione potrebbe essere caratterizzata da piu` di una chiave e` necessario selezionare una di queste chiavi come chiave primaria dipende da criteri di efficienza Questi criteri possono anche essere utilizzati per determinare quale chiave di una relazione R2 inserire come chiave esterna in una relazione R1 e` preferibile definire una chiave esterna sulla base di una chiave primaria 38 Traduzione entita` - scelta chiave primaria Criteri gli identificatori che contengono attributi opzionali non possono essere selezionati come chiave primaria identificatori composti da pochi attributi sono preferibili ad identificatori composti da molti attributi identificatori che assumiamo vengano utilizzati da molte operazioni per accedere alle entita` sono da preferire Se nessuna chiave candidata soddisfa i requisiti precedenti e` consigliabile aggiungere alla relazione un ulteriore attributo come chiave primaria ed assegnare a tale attributo valori speciali (codici) generati appositamente ai fini dell'identificazione 39
  • 21. Traduzione associazioni - assunzione Negli schemi che presenteremo nel seguito supponiamo che le entita` abbiano una sola chiave candidata, scelta come chiave primaria Viene omessa la rappresentazione del dominio degli attributi 40 Traduzione associazione binaria uno a uno Partecipazione obbligatoria A1 A2 A3 A4 di una sola entita` E1 (1,1) E1(A1, A2, A3, A4, B1E2,C1) C1 E2(B1, B2, B3) A (0,1) B1 B2 E2 B3 41
  • 22. Traduzione associazione binaria uno a uno - esempio Film(titolo,regista,anno,genere,valutaz) Cliente(codCli,nome,cognome,telefono,dataN,residenza, titoloFilm,registaFilm,giudizio) 42 Traduzione associazione binaria uno a uno A1 A2 A3 A4 Partecipazione obbligatoria di entrambe le entita` E1(A1, A2, A3, A4, B1E2 ,C1) E1 E2(B1, B2, B3) (1,1) C1 Oppure A E1(A1, A2, A3, A4) (1,1) E2(B1, B2, B3, A1E1 ,C1) B1 B2 E2 B3 43
  • 23. Traduzione associazione binaria uno a uno Partecipazione opzionale A1 A2 A3 A4 di entrambe le entita` E1(A1, A2, A3, A4, B1oE2,C1o) E2(B1, B2, B3) E1 oppure (0,1) C1 E1(A1, A2, A3, A4) A E2(B1, B2, B3, A1oE1,C1o) (0,1) oppure (per eliminare i valori nulli) B1 B2 E2 E1(A1, A2, A3, A4) B3 E2(B1, B2, B3) A(A1E1,B1E2,C1) oppure A(A1E1,B1E2,C1) 44 Traduzione associazione binaria uno a uno - esempio Film(titolo,regista,anno,genere,valutaz) Cliente(codCli,nome,cognome,telefono,dataN,residenza,titolooFilm,registaoFilm,giudizioo) Film(titolo,regista,anno,genere,valutaz,codClioCliente,giudizioo) Cliente(codCli,nome,cognome,telefono,dataN,residenza,,giudizio) Film(titolo,regista,anno,genere,valutaz) Cliente(codCli,nome,cognome,telefono,dataN,residenza,,giudizio) Consiglia(codCliCliente,titoloFilm,registaFilm) oppure 45 Consiglia(codCliCliente,titoloFilm,registaFilm)
  • 24. Traduzione associazione binaria uno a molti A1 A2 A3 A4 Partecipazione obbligatoria entita` dal lato uno E1 (1,1) E1(A1, A2, A3, A4, B1E2,C1) C1 E2(B1, B2, B3) A (0,n) oppure (1,n) B1 B2 E2 B3 46 Traduzione associazione binaria uno a molti A1 A2 A3 A4 Partecipazione opzionale entita` dal lato uno E1 E1(A1, A2, A3, A4, B1oE2,C1o) (0,1) E2(B1, B2, B3) C1 A oppure (per eliminare i valori nulli) (0,n) oppure (1,n) E1(A1, A2, A3, A4) E2(B1, B2, B3) B1 A(A1E1, B1E2, C1) B2 E2 B3 47
  • 25. Traduzione associazione binaria uno a molti - esempio Film(titolo,regista,anno,genere,valutaz) Video(colloc,tipo,titoloFilm,registaFilm,data) 48 Traduzione associazione binaria uno a molti - esempio Video(colloc,tipo,codClioCliente,dataNolo) Cliente(codCli,nome,cognome,telefono,dataN,residenza) Video(colloc,tipo) Cliente(codCli,nome,cognome,telefono,dataN,residenza) Noleggia(collocVideo,codCliCliente,dataNol) 49
  • 26. Traduzione associazione binaria molti a molti A1 A2 A3 A4 E1 (0,n) oppure (1,n) E1(A1, A2, A3, A4) C1 E2(B1, B2, B3) A A(A1E1, B1E2,C1) (0,n) oppure (1,n) B1 B2 E2 B3 50 Traduzione associazione binaria molti a molti - esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) Film(titolo,regista,anno,genere,valutaz) Consiglia(codCliCliente,titoloFilm,registaFilm,giudizio) 51
  • 27. Associazione unaria uno a uno o uno a molti In modo analogo ad associazioni binarie, considerando i ruoli Partecipazione obbligatoria A1 A2 A3 A4 entita` dal lato uno E1(A1, A2, A3, A4, R2E1 ,C1) E1 R1 (1,1) C1 R2 A (0,1) oppure (1,1) oppure (0,n) oppure (1,n) 52 Associazione unaria uno a uno o uno a molti Partecipazione opzionale entita` dal lato uno A1 A2 A3 A4 E1(A1, A2, A3, A4, R2oE1 ,C1o) E1 oppure R1 (0,1) C1 R2 A E1(A1, A2, A3, A4) A(R1E1, R2E1, C1) (0,1) oppure (0,n) oppure (1,n) 53
  • 28. Associazione unaria molti a molti A1 A2 A3 A4 E1(A1, A2, A3, A4) E1 A(R1E1, R2E1, C1) R1 (0,n) oppure (1,n) C1 R2 A (0,n) oppure (1,n) 54 Associazione unaria uno a molti - esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza,vecchioClioCliente) oppure Cliente(codCli,nome,cognome,telefono,dataN,residenza) 55 Presenta(nuovoCliCliente,vecchioCliCliente)
  • 29. Associazione unaria molti a molti - esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) Presenta(nuovoCliCliente,vecchioCliCliente) 56 Associazione n-aria molti a molti In modo analogo ad associazioni binarie Spesso sono molti a molti A1 A2 A3 A4 E1 (1,n) oppure (0,n) (1,n) oppure E1(A1, A2, A3, A4) C1 (0,n) D1 E2(B1, B2, B3) D2 A E3 E3(D1, D2) A(A1E1, B1E2, D1E3, C1) (1,n) oppure (0,n) B1 B2 E2 B3 57
  • 30. Associazione n-aria molti a molti In alcuni casi (A1, B1, D1) e` una super- chiave per A La determinazione della chiave puo` avvenire dall’analisi di particolari vincoli di integrita` dipendenze funzionali le vedremo nel seguito 58 Altre associazione n-arie In modo analogo ad associazioni binarie A1 A2 A3 A4 E1 (1,1) oppure (0,1) (1,n) oppure E1(A1, A2, A3, A4, C1 (0,n) D1 B1E2, D1E3, C1) D2 A E3 E2(B1, B2, B3) E3(D1, D2) (1,n) oppure (0,n) B1 B2 E2 B3 59
  • 31. Associazione n-aria - esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) Film(titolo,regista,anno,genere,valutaz) Attore(codA,nome,cognome) Consiglia(codCliCliente,titoloFilm,registaFilm,codAAttore,giudizio) 60 Associazione n-aria - esempio Se un cliente puo` consigliare attori in un numero arbitrario di film, ma al piu` un film per ogni attore (vincolo di integrita`): Cliente(codCli,nome,cognome,telefono,dataN,residenza) Film(titolo,regista,anno,genere,valutaz) Attore(codA,nome,cognome) Consiglia(codCliCliente,titoloFilm,registaFilm,codAAttore,giudizio) 61
  • 32. Associazione n-aria - esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza, titolooFilm,registaoFilm,codAoAttore,giudizioo) Film(titolo,regista,anno,genere,valutaz) Attore(codA,nome,cognome) Come si puo` ridurre la presenza di valori nulli? 62 Un esempio completo di progettazione logica
  • 33. Carico di lavoro Operazione 1 Inserisce un nuovo video ed il corrispondente film, se non ancora presente (frequenza: 30 video/mese, 10 film/mese) Operazione 2 Inserisce un nuovo cliente, classificandolo come cliente standard, indicando tutti i suoi dati anagrafici (frequenza: 5 clienti/settimana) Operazione 3 Inserisce le informazioni relative ad un nuovo noleggio ed aggiorna i punti mancanti per accedere alla categoria VIP; quando i punti mancanti ad un cliente standard per accedere alla categoria VIP sono zero, il cliente cambia categoria e diventa un cliente VIP a cui viene assegnato un determinato bonus (frequenza: 200 noleggi/giorno) Operazione 4 Aggiorna i dati del noleggio al momento della restituzione del video da parte di un generico cliente (frequenza: 200 noleggi/giorno) 64 Carico di lavoro Operazione 5 Stampa l’elenco dei nomi e delle residenze di tutti i clienti che hanno noleggiato almeno un video da pi`u di 1 settimana e non l’hanno ancora restituito (frequenza: 1 stampa/giorno) Operazione 6 Stampa l’elenco dei nomi e delle residenze di tutti i clienti VIP, per inviare materiale informativo relativo alla situazione bonus (frequenza: 2 stampe/mese) 65
  • 34. città via no cap telefono codCli residenza dataRest (0,1) dataNol (1,n) dataN (0,n) (1,1) nome Effettua Cliente Noleggio cognome (0,n) (1,1) Relati voA Standard VIP giudizio colloc (0,n) DVD Consi glia ptiMancanti bonus Video (1,1) VHS Schema Contiene concettuale genere (0,n) valutaz (0,1) (0,n) Fi lm anno 66 ti tol o regi sta Documentazione concettuale Vincoli: V1: Un cliente non può noleggiare più di tre video contemporaneamente V2: Un video non può essere noleggiato prima dell’uscita del relativo film V3: La data di noleggio di un video non può essere successiva a quella di restituzione V4: Uno stesso video non può essere noleggiato da due o più clienti diversi contemporaneamente 67
  • 35. Documentazione concettuale Gerarchie di generalizzazione: Entità padre Entità figlie Tipologia Cliente Standard, VIP Totale/esclusiva Video DVD, VHS Totale/esclusiva 68 Schema ristrutturato 69
  • 36. Documentazione su schema ristrutturato Vincoli: V1: Un cliente non può noleggiare più di tre video contemporaneamente V2: Un video non può essere noleggiato prima dell’uscita del relativo film V3: La data di noleggio di un video non può essere successiva a quella di restituzione V4: Uno stesso video non può essere noleggiato da due o più clienti diversi contemporaneamente V5: Ogni cliente e` alternativamente un cliente standard od un cliente VIP 70 Schema relazionale Cliente(codCli,nome,cognome,dataN,residenza) Standard(codCliCliente,ptiMancanti) VIP(codCliCliente,bonus) Telefono(numero) Video(colloc,tipo,titoloFilm,registaFilm) Film(titolo,regista,anno,genere,valutazo) Noleggio(collocVideo,dataNol,codCliCliente,dataResto) RispondeA(codCliCliente,numeroTelefono) Consiglia(titoloFilm,registaFilm,codCliCliente,giudizio) 71
  • 37. Documentazione 72 Ottimizzazioni La relazione Telefono puo` essere eliminata ogni numero di telefono che compare nella relazione Telefono compare anche nella relazione RispondeA in quanto la partecipazione dell’entita` Telefono all’associazione RispondeA e` obbligatoria Possiamo inserire un nuovo attributo codF in Film, come chiave primaria La chiave attuale (di due attributi) diventerebbe chiave alternativa 73