SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Progettazione
                 Concettuale




Preliminari
 La progettazione di una base di dati è uno dei
 compiti maggiormente strategici e delicati del
 progetto di un sistema informativo
 Progettare una base di dati: definirne il contenuto e
 la struttura
 Le basi di dati sono sempre più complesse e di
 dimensioni elevate ⇒ è necessario un approccio
 sistematico alla progettazione
 Metodologia di progettazione basata sulla
 suddivisione dell’attività in una serie di sotto-fasi
                                                         1
Fasi della progettazione
                       Raccolta ed analisi
                       dei requisiti

        Specifica
       dei requisiti

                                                Schema concettuale
                         Progettazione
                         concettuale
                                                 Documentazione




                                                 Schema logico
                         Progettazione
                         logica
                                                 Documentazione




                                                Schema logico normalizzato
                         Normalizzazione
                                                 Documentazione




                          Progettazione
                          fisica

                                                                             2
                                             Schema fisico




Fasi della progettazione
 Ogni fase si basa su un modello, che
 permette di generare una rappresentazione
 formale della base di dati ad un dato livello di
 astrazione
 L’utilizzo del modello appropriato permette di:
   Verificare le caratteristiche della base di dati
   Comunicare con i futuri utenti della base di dati
 Ogni fase prevede opportune verifiche di
 qualità

                                                                             3
Raccolta ed analisi dei requisiti
 Vengono definite informalmente le
 caratteristiche della base di dati
 Tale fase è principalmente condotta in
 maniera informale (interviste con gli utenti,
 analisi basi di dati esistenti, normativa,
 ambiente operativo)
 L’output è un documento in linguaggio
 naturale di specifica dei requisiti

                                                        4




Raccolta ed analisi dei requisiti
 Tipologie di requisiti:
   Requisiti informativi: caratteristiche e tipologie dei
   dati
   Requisiti sulle operazioni: esplicitati nel carico di
   lavoro
   Requisiti sui vincoli di integrità ed autorizzazione:
   proprietà da assicurare ai dati, in termini di
   correttezza e protezione
   Requisiti sulla popolosità della base di dati:
   volume dei dati

                                                        5
Progettazione concettuale
 A partire dal documento di specifica viene creato
 uno schema concettuale della base di dati, cioè una
 descrizione formale ed ad alto livello del suo
 contenuto
 Lo schema concettuale è del tutto indipendente
 dall'implementazione della base di dati (indipendente
 anche dal tipo di DBMS che sarà utilizzato - relazionale,
 object-relational, ecc.)
 Lo schema concettuale è definito tramite un
 opportuno modello concettuale
 Durante la progettazione concettuale vengono
 effettuate verifiche di qualità che possono portare ad
 un ridisegno dello schema generato
                                                             6




Progettazione concettuale
 L’output di questa fase è:
    Lo schema concettuale della base di dati
    sviluppato utilizzando il modello concettuale
    prescelto
    Una documentazione a corredo dello schema,
    contenente:
      Vincoli d’integrità non rappresentabili nello schema
      Scelte progettuali
      Altre informazioni che vedremo in seguito

                                                             7
Progettazione logica
 Traduzione dello schema concettuale nel
 modello dei dati del DBMS target
 L’output è lo schema logico nel DDL del
 DBMS target
 Aspetti considerati durante la progettazione
 logica:
   Integrità e consistenza
   Sicurezza
   Efficienza

                                                 8




Normalizzazione
 Verifica di qualità dello schema logico
 prodotto, effettuata tramite opportuni
 strumenti formali
 Prende il nome di normalizzazione nel caso
 di basi di dati relazionali
 Tale attività può portare ad una
 ristrutturazione dello schema logico prodotto


                                                 9
Progettazione fisica
 In questa fase vengono effettuate alcune scelte
 circa la memorizzazione fisica dei dati (ad esempio,
 indici)
 L’output è lo schema fisico che descrive le strutture
 di memorizzazione ed accesso ai dati




                                                         10




   …. Nel seguito, ci concentreremo
   sulla progettazione concettuale….




                                                         11
Modello Entità-Relazione
 Uno dei modelli più utilizzati nell'ambito della
 progettazione concettuale
 Dotato di rappresentazione grafica: diagramma (o
 schema) ER
 Costrutti di base:
   Entità
   Associazioni
   Attributi


                                                            12




Costrutti di base
 Entità: collezione di oggetti della realtà che
 vogliamo modellare, che possiedono caratteristiche
 comuni (es. clienti, film, …)
 Istanze di entità: specifici oggetti appartenenti ad
 una certa entità (es. il cliente Marco Verdi, il film La
 fabbrica di cioccolato, …)
 Graficamente:

                                         Film
                      Cliente


                                                            13
Costrutti di base
 Associazione (o relazione): legame logico tra
 entità
 Istanze di associazione: combinazioni di
 istanze delle entità che prendono parte ad una
 associazione
 Graficamente:
                                           Film
       Cliente          Consiglia




 c istanza di Cliente, f istanza di Film
 (c,f) istanza di Consiglia
                                                  14




Associazioni
 L'insieme delle istanze di un'associazione è
 un sottoinsieme del prodotto Cartesiano degli
 insiemi delle istanze delle entità che
 partecipano all'associazione
 Quindi, l’insieme delle istanze di
 un’associazione non può contenere duplicati
 Ciò ha conseguenza sulle scelte progettuali
 (si veda il seguito)

                                                  15
Grado di un’associazione
 Numero di entità che partecipano ad
 un'associazione
 Associazione unaria: grado 1
                                    SeguitoDi




                                       Film


 Associazione binaria: grado 2

                                                Film
         Cliente        Consiglia


                                                         16




Grado di un’associazione
 Associazione n-aria: grado n > 2


      Film                                    CasaProd
                       Prodotto




                       Studio



                                                         17
Associazioni
 Ruolo: funzione che un'istanza di entità esercita
 nell'ambito di un'associazione
                            SeguitoDi




                              Film
                  prequel               sequel


 Nel caso di associazione unaria il ruolo è sempre
 necessario

                                                             18




Attributi
 Proprietà posseduta da un'entità o da un'associazio-
 ne
 Graficamente:

                                                 residenza
         nome
                                Cliente
       cognome                                   telefono
                                                 dataN
        codCli



 nome, cognome, codCli, residenza, telefono, dataN
 sono attributi di Cliente

                                                             19
Attributi
 Anche le associazioni possono avere attributi
 Esempio:
                                   giudizio

                                              Film
       Cliente         Consiglia




 Il giudizio non è specifico né di un cliente né di un
 film, ma del legame Cliente-Film che si crea quando
 un cliente consiglia un certo film

                                                             20




Attributi
 Mono-valore: possono assumere un solo valore
 Multi-valore: possono assumere più di un valore
 Esempio:
                                                 residenza
      nome
                       Cliente
    cognome                                      telefono
                                                 dataN
     codCli
 dataN: mono-valore in quanto un cliente ha una sola
 data di nascita
 telefono: multi-valore in quanto un cliente può avere
 più recapiti telefonici

                                                             21
Attributo composto
 Possiede dei sotto-attributi
 Es. residenza con sotto-attributi città, via, no
 e cap
 Graficamente:
                                       città
                                       via
                       residenza       no
                                       cap




                                                               22




Dominio di un attributo
 Insieme dei valori che un attributo può assumere
 Domini semplici:
   Domini standard: interi, reali, booleani, date,
   caratteri,stringhe di caratteri, ecc.
   Intervalli di valori: ad esempio di interi o di caratteri
   Insiemi di valori (per attributi multi-valore)
   Domini definiti per enumerazione dall'utente
 Notazione:
   [vi,vj]: intervallo compreso fra vi e vj
   set_of(d): insiemi di valori nel dominio d
    {vi, ... vj}: rappresenta uno tra i valori: vi, ..., vj
                                                               23
Domini composti
 L’insieme dei valori è dato dal prodotto
 cartesiano degli insiemi di valori associati ai
 domini componenti.
   se D = D1 × D2 × … × Dn allora < d1, ..., dn > t.c. di
   ∈ Di, i = 1, ..., n, è un possibile valore
 Servono per associare un dominio agli
 attributi composti


                                                        24




Dominio di un attributo
 Esempio: possibile dichiarazione per gli attributi
 dell’entità Cliente:
 codCli: int
 nome: string
 cognome: string
 dataN: date
 residenza: string × string × string × int
 dichiarazione per l’attributo giudizio
 dell’associazione Consiglia:
  giudizio: dom_giudizio
  dom_giudizio: [0,5]
                                                        25
Dominio di un attributo
 Le informazioni sui domini di un attributo non
 sono direttamente rappresentabili in un
 diagramma ER
 Sono però fondamentali per una corretta
 progettazione logica
 Devono quindi essere inserite nella
 documentazione a corredo del diagramma
 ER

                                                  26




Vincoli di integrità
   Il modello ER fornisce costrutti per definire:
 1. Vincoli di cardinalità, sia per associazioni
      che per attributi
 2. Vincoli di identificazione, per entità

   Anche i domini degli attributi sono dei vincoli
   di integrità



                                                  27
Vincoli di cardinalità per associazioni
 Cardinalità minima:
    Numero minimo di istanze di un’associazione a cui le
    istanze delle entità coinvolte nell’associazione possono
    partecipare
 Cardinalità massima:
    Numero massimo di istanze di un’associazione a cui le
    istanze delle entità coinvolte nell’associazione possono
    partecipare
 Graficamente, data un’entita E ed un’associazione A
 la cardinalità minima e massima di E rispetto ad A si
 indica tramite la coppia (c_min,c_max) sulla linea
 che congiunge E ad A
                                                               28




Esempio
             (0,3)                  (0,1)   Video
   Cliente            Noleggia



 Un cliente può:
   Non avere in noleggio video (c_min = 0)
   Averne contemporaneamente in noleggio non più di 3
   (c_max = 3)
 Un video può:
   Non essere correntemente in noleggio (c_min = 0)
   Essere noleggiato da non più di un cliente
   contemporaneamente (c_max = 1)

                                                               29
Vincoli di cardinalità per associazioni

 Valori più comuni:
    c_min: 0, 1
    c_max: n, ovvero qualunque intero > 1
 Data un’entità E ed un'associazione A:
    c_min=0 ⇒ esistono istanze di E che non
    partecipano ad alcuna istanza di A, la
    partecipazione di E ad A è opzionale
    c_min=1 ⇒ ogni istanza di E partecipa almeno ad
    una istanza di A, la partecipazione di E ad A è
    obbligatoria
                                                           30




Vincoli di cardinalità per associazioni
 Data un’entità E ed un'associazione A:
    c_max=1 ⇒ ogni istanza di E può partecipare a non più di
    una istanza di A
    c_max=c_min=1 ⇒ ogni istanza di E partecipa ad una ed
    una sola istanza di A
    c_max=n ⇒ non esiste limite al numero massimo di
    istanze di A a cui ogni istanza di E può partecipare
    c_min=0, c_max=n ⇒ ogni istanza di E può partecipare ad
    un numero qualsiasi di istanze di A, anche nessuna
 Se in un diagramma ER si omettono i vincoli di
 cardinalità per le associazioni, si assume (0,n) come
 valore di default
                                                           31
Vincoli di cardinalità per associazioni
 Esempio:
                                        (0,n)
                   (1,1)
       Video               Contiene                Film

    c_min di Video rispetto a Contiene è 1: ogni video contiene
    almeno un film
    c_min di Film rispetto a Contiene è 0: possono esistere
    film in catalogo per cui al momento non sono presenti
    video
    c_max di Video rispetto a Contiene è 1: ogni video
    contiene al più un film
    c_max di Film rispetto a Contiene è n: ogni film può essere
    contenuto in un numero arbitrario di video
                                                             32




Vincoli di cardinalità per associazioni

 Un'associazione binaria A tra due entità E1
 ed E2 (o unaria con E1 = E2) si dice:
    uno a uno: se c_max di E1 ed E2 rispetto ad A è
    1
    uno a molti: se c_max di E1 rispetto ad A è n e
    c_max di E2 rispetto ad A è 1, oppure c_max di E1
    rispetto ad A è 1 e c_max di E2 rispetto ad A è n
    molti a molti: se c_max di E1 ed E2 rispetto ad A
    èn

                                                             33
Vincoli di cardinalità per attributi
   Numero minimo (c_min) e massimo (c_max) di
   valori dell'attributo che possono essere associati ad
   un'istanza della corrispondente associazione od
   entità
   Nei diagrammi ER si indicano mediante la coppia
   (c_min,c_max) sulla linea che congiunge l'attributo
   all'associazione/entità
   Se vengono omessi, il valore di default è (1,1)



                                                                 34




Vincoli di cardinalità per attributi
   Si parla di attributi:
      opzionali: se la cardinalità minima è 0
      obbligatori: se la cardinalità minima è 1
      mono-valore: se la cardinalità massima è 1
      multi-valore: se la cardinalità massima è n
   Esempio:

                                                residenza
   nome (1,2)
cognome (1,2)               Cliente             telefono (1,n)
     codCli                                     dataN (0,1)



                                                                 35
Vincoli di identificazione
 Identificatori per un’entità: insieme di attributi e/o
 entità che identificano univocamente le istanze
 dell'entità
 Un identificatore è minimale se qualsiasi
 sottoinsieme proprio non è un identificatore
 Durante la progettazione concettuale per ogni entità
 è bene identificare tutti gli identificatori minimali
 Si noti che gli identificatori hanno senso solo per le
 entità e non per le associazioni
 Nell'insieme di istanze di un'associazione si hanno
 tutte tuple distinte ⇒ non c'è bisogno di identificatori
                                                         36




Vincoli di identificazione
 A volte non è possibile identificare un'istanza di
 entità solo sulla base dei suoi attributi, cioè due
 istanze diverse possono coincidere su tutti gli
 attributi
 Si utilizza allora il fatto che tale istanza partecipi ad
 una particolare istanza di associazione con una data
 istanza di un'altra entità
 L'entità identificata in questo modo viene detta
 entità debole


                                                         37
Tipologie di identificatori
      Interni: uno o più attributi dell'entità
      Esterni: uno o più entità collegate da una
      associazione all'entità a cui si riferiscono
      (identificazione esterna da tale entità attraverso
      tale associazione)
      Misti: combinazioni delle due tipologie
      precedenti
      Semplici: un solo elemento
      Composti: più di un elemento
                                                           38




Tipologie di indentificatori
  Identificatore interno semplice:
                                          residenza
    nome
 cognome              Cliente             telefono
    codCli                                dataN


  Identificatore interno composto:

                                              anno
valutaz
   titolo               Film                  genere
 regista




                                                           39
Tipologie di identificatori
         Identificatore misto (composto):

                                                                              nome
colloc                                              (1,n)
                        (1,1)                               Videoteca
                Video               Posseduto                                 città
  tipo


         Identificatore esterno (semplice):

                                                                    nome
                                         (0,1)
     Nazionale (1,1)                                                capitale
                                                 Nazione
                            Gioca
                                                                    numAbitanti


                                                                                  40




   Vincoli di identificazione
         Le entità deboli hanno sempre cardinalità
         (1,1) rispetto all'associazione attraverso cui
         avviene l'identificazione:
            Nel caso di identificazione esterna
            l'associazione sarà uno a uno
            Nel caso di identificazione mista
            l'associazione sarà uno a molti


                                                                                  41
Gerarchie di generalizzazione
     Ulteriore costrutto del modello ER, non presente
     nella formulazione originaria
     Una entità E è una generalizzazione delle entità E1,
     …, En se ogni istanza delle entità E1, …, En è anche
     un'istanza di E:
        E: entità padre
        E1, …, En: entità figlie
     Tutte le proprietà dell’entità padre (attributi,
     identificatori ed associazioni) vengono
     ereditate dalle entità figlie
                                                               42




 Graficamente
                                                 residenza
             nome
          cognome                Cliente         telefono
             codCli                              dataN




                                                             bonus
ptiMancanti
                      Standard             VIP



                                                               43
Gerarchie di generalizzazione
 Vincoli impliciti:
   Se una entità E1 è definita come generalizzazione di una
   entità E2:
     L'insieme delle istanze di E2 deve essere contenuto in
     quello delle istanze di E1
      Ogni attributo di E1 è anche un attributo di E2
      Ad ogni associazione cui partecipa E1 partecipa anche
      E2




                                                              44




Gerarchie di generalizzazione
 E generalizzazione di E1 … En:
   Totale: ogni istanza di E è istanza di almeno
   un'entità Ei
   es. Cliente - Standard, VIP, se standard e VIP sono le
   uniche tipologie di clienti previste dalla videoteca
   Parziale: esiste almeno un'istanza di E che non è
   istanza di alcuna entità Ei
   es. Cliente - Standard, VIP, se esistono clienti che possono
   effettuare un noleggio senza registrarsi al programma di
   fidelizzazione

                                                              45
Gerarchie di generalizzazione
 La generalizzazione può essere inoltre:
   Esclusiva: ogni istanza di E è istanza di al
   più un'entità Ei
   es. Cliente - Standard, VIP
   Condivisa: esiste almeno un'istanza di E
   che è istanza di più di un'entità Ei
   es. Film - FilmAnimazione, FilmEssay


                                                        46




Gerarchie di generalizzazione
 Le due classificazioni precedenti sono ortogonali
 Le generalizzazioni possono quindi essere di 4 tipi:
   Totali esclusive, totali condivise
   Parziali esclusive, parziali condivise
 Le informazioni sulle tipologie di gerarchie di
 generalizzazione presenti in uno schema ER vanno
 inserite nella documentazione a corredo dello
 schema



                                                        47
Associazione di sottoinsieme
 Caso particolare di generalizzazione (parziale ed
 esclusiva)
 Definire una relazione di sottoinsieme tra una entità
 E1 ed una entità E2 significa specificare che ogni
 istanza di E1 è anche istanza di E2
 Esempio:
                       Film




                      FilmBn
                                                         48




Modello ER: Principali simboli
grafici




                                                         49
Metodologie di progettazione
 Il modello ER è lo strumento tramite cui è possibile
 definire lo schema concettuale di una base di dati,
 ma…
 Come ottenere un “buon” schema concettuale
 partendo dal documento di specifica dei requisiti?
 Come si valuta la “bontà” di uno schema
 concettuale?
 Non esiste una metodologia totalmente
 standardizzabile … ma esistono alcune linee guida
 per condurre le varie fasi
                                                        50




Raccolta ed analisi dei requisiti
 E’ una attività difficilmente standardizzabile
 Di solito condotta da personale esperto, in
 stretta collaborazione con gli utenti finali
 Una volta ottenuto il documento di specifica,
 è però possibile effettuare alcune operazioni
 su di esso, che faciliteranno le successive
 fasi di progettazione


                                                        51
Raccolta ed analisi dei requisiti
 Operazioni sul documento di specifica:
   Leggerlo attentamente evidenziando tutte le possibili fonti
   di ambiguità ed imprecisione, cercando di chiarirle con i
   committenti del progetto
   Evidenziare i sinonimi, scegliere tra questi il termine che
   meglio modella il concetto da rappresentare, e sostituire gli
   altri con il termine scelto
   Separare le frasi che riguardano i dati (di maggiore
   rilevanza per la progettazione) da quelle che riguardano le
   operazioni
   Riorganizzare le frasi per concetti

                                                               52




Progettazione concettuale
 Ristrutturato il documento di specifica, come
 è possibile ottenere da questo un buon
 schema ER?
   Scelta dei costrutti
   Metodologie per la generazione di diagrammi ER
   Documentazione dei diagrammi
   Verifiche di qualità



                                                               53
Scelta dei costrutti
 Leggere attentamente il documento di
 specifica e per ogni concetto individuato,
 scegliere il costrutto del modello ER più
 idoneo alla sua rappresentazione
 Esistono alcune linee guida per effettuare
 questa scelta



                                                    54




Scelta dei costrutti
 Se un concetto descrive un insieme omogeneo di
 oggetti rilevanti per il dominio considerato e
 caraterizzati da un insieme di proprietà comuni:
   Entità
 Es. clienti della videoteca, film
 Sono buoni candidati a essere rappresentati come
 entità i nomi che compaiono frequentemente nel
 documento di specifica
 Leggendo il documento di specifica, si devono
 anche assegnare gli opportuni vincoli di
 identificazione alle entità
                                                    55
Scelta dei costrutti
 Se un concetto è un caso particolare di un altro:
   Gerarchia di generalizzazione
 Es. clienti, clienti standard e clienti VIP
 Questa soluzione è opportuna quando l’insieme
 delle proprietà delle entità figlie è diverso da quello
 delle entità padre
 Altrimenti, alternativa: inserire nell’entità che
 modella il concetto più generale un attributo che
 indentifica le varie tipologie di istanze (es. video con
 attributo tipo per indicare se DVD o VHS)
                                                           56




Scelta dei costrutti
 Se il concetto rappresenta una proprietà
 elementare, senza ulteriori sotto-proprietà:
   Attributo
 Es. nome di un cliente, titolo di un film, codice di un
 video
 Nel caso invece di proprietà con sotto-proprietà,
 bisogna decidere se modellarle tramite attributi
 composti oppure entità
 Leggendo il documento di specifica, si devono
 anche assegnare gli opportuni vincoli di cardinalità
                                                           57
Esempio
      Residenza dei clienti della videoteca:
       Via, numero civico, città, cap
      Alternative:
       Attributo composto dell’entità Cliente
 1.

       Entità residenza collegata a Cliente da
 2.
       un’associazione
       (1) è opportuna quando non esistono molti clienti
 3.
       che condividono la stessa residenza


                                                       58




Scelta dei costrutti
 Se un concetto denota un legame logico tra concetti
 modellati come entità:
      Associazione
 Es. video consigliato da un cliente
 Una associazione può anche avere delle proprietà,
 modellate come attributi
 Sono buoni candidati a essere rappresentati come
 associazioni i verbi che mettono in relazione concetti
 modellati come entità
 Leggendo il documento di specifica, si devono
 anche assegnare gli opportuni vincoli di cardinalità
 alle associazioni                                     59
Scelta dei costrutti
      Non sempre è facile decidere se modellare un
      concetto tramite un’entità o una associazione:
      Es. Noleggio di un video da parte di un cliente:
       Associazione Noleggia tra Cliente e Video
 1.
       Entità Noleggio legata a Cliente e Video tramite
 2.
       opportune associazioni
       (1) non permette di rappresentare più noleggi dello stesso
 3.
       video da parte dello stesso cliente. E’ appropriata se si
       vogliono mantenere informazioni solo sui noleggi in corso
       (2) permette di modellare più noleggi dello stesso video
 4.
       da parte dello stesso cliente, mediante attributi dataNol e
       dataRest

                                                                 60




Generazione diagrammi ER
 Il diagramma ER finale viene di solito
 generato mediante raffinamento e/o
 integrazione di un certo numero di schemi
 intermedi (dipendente dalla complessità delle
 specifiche)
 Strategie:
      Top-down
      Bottom-up
      Mista
                                                                 61
Strategia top-down




            Schemainiziale
             Schema finale
          Schema intermedio
              Specifiche
           Schema intermedio




                                          62




Strategia bottom-up
                         Schema 2,1
                         Specifiche 2,1
  Schema 1,1
  Specifiche 1,1


   Specifiche Specifiche
              1         Specifiche 2
             Schema finale

                         Specifiche2,2
                         Schema 2,2
  Specifiche 1,2
  Schema 1,2


                                          63
Strategia mista
 Si individuano i concetti principali e si
 realizza uno schema scheletro
 Sulla base di questo si può decomporre
 Poi si raffina, si espande, si integra per
 arrivare allo schema finale



                                                                64




Documentazione di supporto
 Deve contenere:
   Domini degli attributi
   Vincoli imposti dal dominio, non rappresentabili tramite
   vincoli di identificazione e cardinalità nel diagramma ER
   Vincoli di autorizzazione, se necessari
   Tipologie di gerarchie di generalizzazione
   Informazioni sulle principali scelte progettuali, soprattutto
   ove siano possibili più alternative
   Per basi di dati di dimensioni elevate:dizionario delle entità
   e delle associazioni


                                                                65
Verifiche di qualità
 Frequenti verifiche di completezza e
 correttezza sugli schemi intermedi
 Verifiche sullo schema ER finale:
   Correttezza sintattica e semantica
   Completezza
   Ridondanza




                                        66




Un esempio di
progettazione concettuale
                 Videoteca


                                        67
Specifiche
Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di
circa 1000 film. Per ogni film, vogliamo memorizzare il titolo, il regista, l'anno di produzione, il
genere e la valutazione della critica, se presente. Ogni film è disponibile per il noleggio in un
certo numero di video.Ogni videocassetta o dvd disponibile nella videoteca (circa 3000) è
identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).La base
di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui
video che hanno noleggiato.Il numero di noleggi giornalieri alla videoteca è circa 200. Per
ogni utente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita,
residenza e telefono. Ogni cliente è identificato da un codice che corrisponde al numero
della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere
contemporaneamente in noleggio un certo numero di video (non più di tre). Per ogni noleg-
gio, vogliamo memorizzare la data in cui il noleggio è stato effettuato e, per i noleggi con-
clusi, la data di restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, espri-
mendo per essi un giudizio.La videoteca prevede un programma di fidelizzazione dei clienti.
Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati
superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un
bonus. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo
bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficien-
ti per accedere alla categoria VIP, vogliamo memorizzare il numero di punti mancanti ad
accedere a tale categoria                                                                            68




Specifiche
Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di
circa 1000 film. Per ogni film, vogliamo memorizzare il titolo, il regista, l'anno di produzione,
il genere e la valutazione della critica, se presente. Ogni film è disponibile per il noleggio in
un certo numero di video.Ogni videocassetta o dvd disponibile nella videoteca (circa 3000)
è identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).La
base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e
sui video che hanno noleggiato.Il numero di noleggi giornalieri alla videoteca è circa 200.
Per ogni utente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita,
residenza e telefono. Ogni cliente è identificato da un codice che corrisponde al numero
della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere
contemporaneamente in noleggio un certo numero di video (non più di tre). Per ogni noleg-
gio, vogliamo memorizzare la data in cui il noleggio è stato effettuato e, per i noleggi con-
clusi, la data di restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti,
esprimendo per essi un giudizio.La videoteca prevede un programma di fidelizzazione dei
clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti
accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno
diritto ad un bonus. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore
corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora
accumulato punti sufficienti per accedere alla categoria VIP, vogliamo memorizzare il
numero di punti mancanti ad accedere a tale categoria                                           69
Specifiche ristrutturate
Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di
circa 1000 film. Per ogni film, vogliamo memorizzareil titolo, il nome e cognome del regista,
l'anno di produzione, il genere e la valutazione della critica (espressa in una scala di valori
decimali da 0 a 5), se presente. Ogni film è disponibile per il noleggio in un certo numero di
video (dove video sono sia videocassette che dvd). Ogni video disponibile nella videoteca
(circa 3000) è identificato da un codice di collocazione e dal tipo di supporto(videocassetta o
dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa
2000) e sui video che hanno correntemente in noleggio ed hanno noleggiato in passato.
Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni cliente della videoteca
vogliamo mantenere il suo nome, cognome, data di nascita, residenza (intesa come città, via,
numero civico e cap) e un insieme di recapiti telefonici. Ogni cliente è identificato da un
codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della
videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video
(non più di tre).Per ogni noleggio vogliamo memorizzare il giorno, mese ed anno in cui il
noleggio è stato effettuato e, per i noleggi conclusi, il giorno, mese ed anno della restituzione.
Ogni cliente può inoltre consigliare dei film ad altri clienti, esprimendo per essi un giudizio
in una scala di valori interi da 0 a 5. La videoteca prevede un programma di fidelizzazione
dei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti
accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto
ad un bonus di un certo importo espresso in euro. La base di dati dovrà memorizzare, per
ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non
hanno ancora accumulato punti sufficienti per accedere alla categoria VIP, vogliamo memorizzare     70
il numero di punti mancanti ad accedere a tale categoria




   Schema scheletro

                                                                       Video
            Cliente                     Noleggia




                                                                      Contiene




                                                                       Film




                                                                                                    71
Sotto-schema cliente
                                                           città
                                                           via
                                    residenza              no
    nome
                                                           cap
 cognome                 Cliente                telefono (1,n)
   dataN                                        codCli




                                                            bonus
              Standard              VIP


                                                                    72




Schema scheletro

                                        Video
    Cliente              Noleggia




                                       Contiene




                                         Film




                                                                    73
Sotto-schema noleggio
            dataRest (0,1) dataNol



                   Noleggio

                  (1,1)



                  RelativoA



                  (0,n)
                                     colloc
                    Video




            DVD               VHS                        74




Schema scheletro

                                              Video
  Cliente          Noleggia




                                              Contiene




                                               Film




                                                         75
Sotto-schema film


                                               anno
 valutaz (0,1)
         titolo              Film              genere
      regista




                                                        76




Integrazione

                                    Video
      Cliente     Noleggia




                                    Contiene




                                     Film




                                                        77
Integrazione                           dataRest (0,1) dataNol
    codCli …..


                                        (1,1)
                    (0,n)                        Noleggio
       Cliente              Effettua
                                                (1,1)



                                                RelativoA
  Standard       VIP


                                                (0,n)
ptiMancanti        bonus
                                                                     colloc
                                                  Video




                                        DVD                    VHS            78




 Integrazione

                                                    Video
         Cliente             Noleggia




                                                   Contiene




                                                        Film




                                                                              79
Integrazione
                                                                               dataRest (0,1) dataNol
          codCli …..


                                                                               (1,1)
                           (0,n)                                                          Noleggio
             Cliente                                Effettua
                                                                                       (1,1)



                                                                                       RelativoA
                                           bonus
    Standard            VIP


                                                                                       (0,n)
  ptiMancanti
                                                                                                                      colloc
                                    (1,1)                                      (0,n)
                                                       Contiene
                        Film                                                                Video


                        ……

                                                                               DVD                            VHS                        80




                           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




                                                                                               Contiene


                                                                                                             genere


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

                                                                                                                                         81
                                                                                          ti tol o     regi sta
Documentazione
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




                                                                                   82




Documentazione
Gerarchie di generalizzazione:


      Entità padre     Entità figlie      Tipologia

      Cliente          Standard, VIP      Totale/esclusiva

      Video            DVD, VHS           Totale/esclusiva




                                                                                   83
Dizionario delle entità
Nome         Descrizione                    Attributi                   Identificatori
Cliente      Utenti che usufruiscono        codCli,dataN,               codCli,
             dei servizi della videoteca    nome, cognome,              {nome, cognome,
                                                                        dataN}
                                            telefono, residenza
Standard     Cliente comune della           ptiMancanti                 gli stessi di Cliente
             videoteca
VIP          Cliente VIP della              bonus                       gli stessi di Cliente
             videoteca
Video        Video offerti dalla            colloc                      colloc
             videoteca
Noleggio     Noleggi correnti e conclusi    dataNol, dataRest           {video,dataNol}
             effettuati nella videoteca                                 {video,dataRest}
Film         Film offerti dalla videoteca   titolo, regista, valutaz,   gli stessi di video
                                            anno, genere
DVD          DVD offerti dalla videoteca                                gli stessi di video

VHS          Videocassette offerte dalla                                gli stessi di video
             videoteca
                                                                                                84




Dizionario delle associazioni

Nome         Descrizione               Attributi                        Entità collegate
Effettuata   Noleggi effettuati                                         Cliente, Noleggio

RelativoA    Video noleggiati                                           Noleggio, Video

Contiene     Film a disposizione                                        Video, Film
             nella videoteca
Consiglia    Film consigliati dai      giudizio                         Cliente, Film
             clienti della videoteca




                                                                                                85

Mais conteúdo relacionado

Semelhante a 03 Progettazione Concettuale

Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
Andrea Saltarello
 
Progettazione n
Progettazione nProgettazione n
Progettazione n
imartini
 
Basi di Dati - B1 - La progettazione delle basi di dati
Basi di Dati - B1 - La progettazione delle basi di datiBasi di Dati - B1 - La progettazione delle basi di dati
Basi di Dati - B1 - La progettazione delle basi di dati
Majong DevJfu
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
Andrea Saltarello
 

Semelhante a 03 Progettazione Concettuale (20)

BDD in DDD
BDD in DDDBDD in DDD
BDD in DDD
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
Idiomatic Domain Driven Design
Idiomatic Domain Driven DesignIdiomatic Domain Driven Design
Idiomatic Domain Driven Design
 
Software Testing Forum 2012 - Polarion e TRS SpA
Software Testing Forum 2012 - Polarion e TRS SpASoftware Testing Forum 2012 - Polarion e TRS SpA
Software Testing Forum 2012 - Polarion e TRS SpA
 
Progettazione database relazionali
Progettazione database relazionaliProgettazione database relazionali
Progettazione database relazionali
 
Power bi
Power biPower bi
Power bi
 
Progettazione n
Progettazione nProgettazione n
Progettazione n
 
Basi di Dati - B1 - La progettazione delle basi di dati
Basi di Dati - B1 - La progettazione delle basi di datiBasi di Dati - B1 - La progettazione delle basi di dati
Basi di Dati - B1 - La progettazione delle basi di dati
 
Lo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTLo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICT
 
Qualità dei documenti
Qualità dei documentiQualità dei documenti
Qualità dei documenti
 
iVision Software 2.3
iVision Software 2.3iVision Software 2.3
iVision Software 2.3
 
Bdd
BddBdd
Bdd
 
I Graph Database: analisi del comportamento degli utenti
I Graph Database: analisi del comportamento degli utentiI Graph Database: analisi del comportamento degli utenti
I Graph Database: analisi del comportamento degli utenti
 
Code like a developer, think like a CEO
Code like a developer, think like a CEOCode like a developer, think like a CEO
Code like a developer, think like a CEO
 
Contract by programming
Contract by programmingContract by programming
Contract by programming
 
Sviluppo software - Il contract design
Sviluppo software - Il contract designSviluppo software - Il contract design
Sviluppo software - Il contract design
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web design
 
Marco Berlot - Qualità dati - Lunch Nexa
Marco Berlot - Qualità dati - Lunch NexaMarco Berlot - Qualità dati - Lunch Nexa
Marco Berlot - Qualità dati - Lunch Nexa
 
Tell Me Quality
Tell Me QualityTell Me Quality
Tell Me Quality
 

Mais 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 P
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 
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
guestbe916c
 

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

03 Progettazione Concettuale

  • 1. Progettazione Concettuale Preliminari La progettazione di una base di dati è uno dei compiti maggiormente strategici e delicati del progetto di un sistema informativo Progettare una base di dati: definirne il contenuto e la struttura Le basi di dati sono sempre più complesse e di dimensioni elevate ⇒ è necessario un approccio sistematico alla progettazione Metodologia di progettazione basata sulla suddivisione dell’attività in una serie di sotto-fasi 1
  • 2. Fasi della progettazione Raccolta ed analisi dei requisiti Specifica dei requisiti Schema concettuale Progettazione concettuale Documentazione Schema logico Progettazione logica Documentazione Schema logico normalizzato Normalizzazione Documentazione Progettazione fisica 2 Schema fisico Fasi della progettazione Ogni fase si basa su un modello, che permette di generare una rappresentazione formale della base di dati ad un dato livello di astrazione L’utilizzo del modello appropriato permette di: Verificare le caratteristiche della base di dati Comunicare con i futuri utenti della base di dati Ogni fase prevede opportune verifiche di qualità 3
  • 3. Raccolta ed analisi dei requisiti Vengono definite informalmente le caratteristiche della base di dati Tale fase è principalmente condotta in maniera informale (interviste con gli utenti, analisi basi di dati esistenti, normativa, ambiente operativo) L’output è un documento in linguaggio naturale di specifica dei requisiti 4 Raccolta ed analisi dei requisiti Tipologie di requisiti: Requisiti informativi: caratteristiche e tipologie dei dati Requisiti sulle operazioni: esplicitati nel carico di lavoro Requisiti sui vincoli di integrità ed autorizzazione: proprietà da assicurare ai dati, in termini di correttezza e protezione Requisiti sulla popolosità della base di dati: volume dei dati 5
  • 4. Progettazione concettuale A partire dal documento di specifica viene creato uno schema concettuale della base di dati, cioè una descrizione formale ed ad alto livello del suo contenuto Lo schema concettuale è del tutto indipendente dall'implementazione della base di dati (indipendente anche dal tipo di DBMS che sarà utilizzato - relazionale, object-relational, ecc.) Lo schema concettuale è definito tramite un opportuno modello concettuale Durante la progettazione concettuale vengono effettuate verifiche di qualità che possono portare ad un ridisegno dello schema generato 6 Progettazione concettuale L’output di questa fase è: Lo schema concettuale della base di dati sviluppato utilizzando il modello concettuale prescelto Una documentazione a corredo dello schema, contenente: Vincoli d’integrità non rappresentabili nello schema Scelte progettuali Altre informazioni che vedremo in seguito 7
  • 5. Progettazione logica Traduzione dello schema concettuale nel modello dei dati del DBMS target L’output è lo schema logico nel DDL del DBMS target Aspetti considerati durante la progettazione logica: Integrità e consistenza Sicurezza Efficienza 8 Normalizzazione Verifica di qualità dello schema logico prodotto, effettuata tramite opportuni strumenti formali Prende il nome di normalizzazione nel caso di basi di dati relazionali Tale attività può portare ad una ristrutturazione dello schema logico prodotto 9
  • 6. Progettazione fisica In questa fase vengono effettuate alcune scelte circa la memorizzazione fisica dei dati (ad esempio, indici) L’output è lo schema fisico che descrive le strutture di memorizzazione ed accesso ai dati 10 …. Nel seguito, ci concentreremo sulla progettazione concettuale…. 11
  • 7. Modello Entità-Relazione Uno dei modelli più utilizzati nell'ambito della progettazione concettuale Dotato di rappresentazione grafica: diagramma (o schema) ER Costrutti di base: Entità Associazioni Attributi 12 Costrutti di base Entità: collezione di oggetti della realtà che vogliamo modellare, che possiedono caratteristiche comuni (es. clienti, film, …) Istanze di entità: specifici oggetti appartenenti ad una certa entità (es. il cliente Marco Verdi, il film La fabbrica di cioccolato, …) Graficamente: Film Cliente 13
  • 8. Costrutti di base Associazione (o relazione): legame logico tra entità Istanze di associazione: combinazioni di istanze delle entità che prendono parte ad una associazione Graficamente: Film Cliente Consiglia c istanza di Cliente, f istanza di Film (c,f) istanza di Consiglia 14 Associazioni L'insieme delle istanze di un'associazione è un sottoinsieme del prodotto Cartesiano degli insiemi delle istanze delle entità che partecipano all'associazione Quindi, l’insieme delle istanze di un’associazione non può contenere duplicati Ciò ha conseguenza sulle scelte progettuali (si veda il seguito) 15
  • 9. Grado di un’associazione Numero di entità che partecipano ad un'associazione Associazione unaria: grado 1 SeguitoDi Film Associazione binaria: grado 2 Film Cliente Consiglia 16 Grado di un’associazione Associazione n-aria: grado n > 2 Film CasaProd Prodotto Studio 17
  • 10. Associazioni Ruolo: funzione che un'istanza di entità esercita nell'ambito di un'associazione SeguitoDi Film prequel sequel Nel caso di associazione unaria il ruolo è sempre necessario 18 Attributi Proprietà posseduta da un'entità o da un'associazio- ne Graficamente: residenza nome Cliente cognome telefono dataN codCli nome, cognome, codCli, residenza, telefono, dataN sono attributi di Cliente 19
  • 11. Attributi Anche le associazioni possono avere attributi Esempio: giudizio Film Cliente Consiglia Il giudizio non è specifico né di un cliente né di un film, ma del legame Cliente-Film che si crea quando un cliente consiglia un certo film 20 Attributi Mono-valore: possono assumere un solo valore Multi-valore: possono assumere più di un valore Esempio: residenza nome Cliente cognome telefono dataN codCli dataN: mono-valore in quanto un cliente ha una sola data di nascita telefono: multi-valore in quanto un cliente può avere più recapiti telefonici 21
  • 12. Attributo composto Possiede dei sotto-attributi Es. residenza con sotto-attributi città, via, no e cap Graficamente: città via residenza no cap 22 Dominio di un attributo Insieme dei valori che un attributo può assumere Domini semplici: Domini standard: interi, reali, booleani, date, caratteri,stringhe di caratteri, ecc. Intervalli di valori: ad esempio di interi o di caratteri Insiemi di valori (per attributi multi-valore) Domini definiti per enumerazione dall'utente Notazione: [vi,vj]: intervallo compreso fra vi e vj set_of(d): insiemi di valori nel dominio d {vi, ... vj}: rappresenta uno tra i valori: vi, ..., vj 23
  • 13. Domini composti L’insieme dei valori è dato dal prodotto cartesiano degli insiemi di valori associati ai domini componenti. se D = D1 × D2 × … × Dn allora < d1, ..., dn > t.c. di ∈ Di, i = 1, ..., n, è un possibile valore Servono per associare un dominio agli attributi composti 24 Dominio di un attributo Esempio: possibile dichiarazione per gli attributi dell’entità Cliente: codCli: int nome: string cognome: string dataN: date residenza: string × string × string × int dichiarazione per l’attributo giudizio dell’associazione Consiglia: giudizio: dom_giudizio dom_giudizio: [0,5] 25
  • 14. Dominio di un attributo Le informazioni sui domini di un attributo non sono direttamente rappresentabili in un diagramma ER Sono però fondamentali per una corretta progettazione logica Devono quindi essere inserite nella documentazione a corredo del diagramma ER 26 Vincoli di integrità Il modello ER fornisce costrutti per definire: 1. Vincoli di cardinalità, sia per associazioni che per attributi 2. Vincoli di identificazione, per entità Anche i domini degli attributi sono dei vincoli di integrità 27
  • 15. Vincoli di cardinalità per associazioni Cardinalità minima: Numero minimo di istanze di un’associazione a cui le istanze delle entità coinvolte nell’associazione possono partecipare Cardinalità massima: Numero massimo di istanze di un’associazione a cui le istanze delle entità coinvolte nell’associazione possono partecipare Graficamente, data un’entita E ed un’associazione A la cardinalità minima e massima di E rispetto ad A si indica tramite la coppia (c_min,c_max) sulla linea che congiunge E ad A 28 Esempio (0,3) (0,1) Video Cliente Noleggia Un cliente può: Non avere in noleggio video (c_min = 0) Averne contemporaneamente in noleggio non più di 3 (c_max = 3) Un video può: Non essere correntemente in noleggio (c_min = 0) Essere noleggiato da non più di un cliente contemporaneamente (c_max = 1) 29
  • 16. Vincoli di cardinalità per associazioni Valori più comuni: c_min: 0, 1 c_max: n, ovvero qualunque intero > 1 Data un’entità E ed un'associazione A: c_min=0 ⇒ esistono istanze di E che non partecipano ad alcuna istanza di A, la partecipazione di E ad A è opzionale c_min=1 ⇒ ogni istanza di E partecipa almeno ad una istanza di A, la partecipazione di E ad A è obbligatoria 30 Vincoli di cardinalità per associazioni Data un’entità E ed un'associazione A: c_max=1 ⇒ ogni istanza di E può partecipare a non più di una istanza di A c_max=c_min=1 ⇒ ogni istanza di E partecipa ad una ed una sola istanza di A c_max=n ⇒ non esiste limite al numero massimo di istanze di A a cui ogni istanza di E può partecipare c_min=0, c_max=n ⇒ ogni istanza di E può partecipare ad un numero qualsiasi di istanze di A, anche nessuna Se in un diagramma ER si omettono i vincoli di cardinalità per le associazioni, si assume (0,n) come valore di default 31
  • 17. Vincoli di cardinalità per associazioni Esempio: (0,n) (1,1) Video Contiene Film c_min di Video rispetto a Contiene è 1: ogni video contiene almeno un film c_min di Film rispetto a Contiene è 0: possono esistere film in catalogo per cui al momento non sono presenti video c_max di Video rispetto a Contiene è 1: ogni video contiene al più un film c_max di Film rispetto a Contiene è n: ogni film può essere contenuto in un numero arbitrario di video 32 Vincoli di cardinalità per associazioni Un'associazione binaria A tra due entità E1 ed E2 (o unaria con E1 = E2) si dice: uno a uno: se c_max di E1 ed E2 rispetto ad A è 1 uno a molti: se c_max di E1 rispetto ad A è n e c_max di E2 rispetto ad A è 1, oppure c_max di E1 rispetto ad A è 1 e c_max di E2 rispetto ad A è n molti a molti: se c_max di E1 ed E2 rispetto ad A èn 33
  • 18. Vincoli di cardinalità per attributi Numero minimo (c_min) e massimo (c_max) di valori dell'attributo che possono essere associati ad un'istanza della corrispondente associazione od entità Nei diagrammi ER si indicano mediante la coppia (c_min,c_max) sulla linea che congiunge l'attributo all'associazione/entità Se vengono omessi, il valore di default è (1,1) 34 Vincoli di cardinalità per attributi Si parla di attributi: opzionali: se la cardinalità minima è 0 obbligatori: se la cardinalità minima è 1 mono-valore: se la cardinalità massima è 1 multi-valore: se la cardinalità massima è n Esempio: residenza nome (1,2) cognome (1,2) Cliente telefono (1,n) codCli dataN (0,1) 35
  • 19. Vincoli di identificazione Identificatori per un’entità: insieme di attributi e/o entità che identificano univocamente le istanze dell'entità Un identificatore è minimale se qualsiasi sottoinsieme proprio non è un identificatore Durante la progettazione concettuale per ogni entità è bene identificare tutti gli identificatori minimali Si noti che gli identificatori hanno senso solo per le entità e non per le associazioni Nell'insieme di istanze di un'associazione si hanno tutte tuple distinte ⇒ non c'è bisogno di identificatori 36 Vincoli di identificazione A volte non è possibile identificare un'istanza di entità solo sulla base dei suoi attributi, cioè due istanze diverse possono coincidere su tutti gli attributi Si utilizza allora il fatto che tale istanza partecipi ad una particolare istanza di associazione con una data istanza di un'altra entità L'entità identificata in questo modo viene detta entità debole 37
  • 20. Tipologie di identificatori Interni: uno o più attributi dell'entità Esterni: uno o più entità collegate da una associazione all'entità a cui si riferiscono (identificazione esterna da tale entità attraverso tale associazione) Misti: combinazioni delle due tipologie precedenti Semplici: un solo elemento Composti: più di un elemento 38 Tipologie di indentificatori Identificatore interno semplice: residenza nome cognome Cliente telefono codCli dataN Identificatore interno composto: anno valutaz titolo Film genere regista 39
  • 21. Tipologie di identificatori Identificatore misto (composto): nome colloc (1,n) (1,1) Videoteca Video Posseduto città tipo Identificatore esterno (semplice): nome (0,1) Nazionale (1,1) capitale Nazione Gioca numAbitanti 40 Vincoli di identificazione Le entità deboli hanno sempre cardinalità (1,1) rispetto all'associazione attraverso cui avviene l'identificazione: Nel caso di identificazione esterna l'associazione sarà uno a uno Nel caso di identificazione mista l'associazione sarà uno a molti 41
  • 22. Gerarchie di generalizzazione Ulteriore costrutto del modello ER, non presente nella formulazione originaria Una entità E è una generalizzazione delle entità E1, …, En se ogni istanza delle entità E1, …, En è anche un'istanza di E: E: entità padre E1, …, En: entità figlie Tutte le proprietà dell’entità padre (attributi, identificatori ed associazioni) vengono ereditate dalle entità figlie 42 Graficamente residenza nome cognome Cliente telefono codCli dataN bonus ptiMancanti Standard VIP 43
  • 23. Gerarchie di generalizzazione Vincoli impliciti: Se una entità E1 è definita come generalizzazione di una entità E2: L'insieme delle istanze di E2 deve essere contenuto in quello delle istanze di E1 Ogni attributo di E1 è anche un attributo di E2 Ad ogni associazione cui partecipa E1 partecipa anche E2 44 Gerarchie di generalizzazione E generalizzazione di E1 … En: Totale: ogni istanza di E è istanza di almeno un'entità Ei es. Cliente - Standard, VIP, se standard e VIP sono le uniche tipologie di clienti previste dalla videoteca Parziale: esiste almeno un'istanza di E che non è istanza di alcuna entità Ei es. Cliente - Standard, VIP, se esistono clienti che possono effettuare un noleggio senza registrarsi al programma di fidelizzazione 45
  • 24. Gerarchie di generalizzazione La generalizzazione può essere inoltre: Esclusiva: ogni istanza di E è istanza di al più un'entità Ei es. Cliente - Standard, VIP Condivisa: esiste almeno un'istanza di E che è istanza di più di un'entità Ei es. Film - FilmAnimazione, FilmEssay 46 Gerarchie di generalizzazione Le due classificazioni precedenti sono ortogonali Le generalizzazioni possono quindi essere di 4 tipi: Totali esclusive, totali condivise Parziali esclusive, parziali condivise Le informazioni sulle tipologie di gerarchie di generalizzazione presenti in uno schema ER vanno inserite nella documentazione a corredo dello schema 47
  • 25. Associazione di sottoinsieme Caso particolare di generalizzazione (parziale ed esclusiva) Definire una relazione di sottoinsieme tra una entità E1 ed una entità E2 significa specificare che ogni istanza di E1 è anche istanza di E2 Esempio: Film FilmBn 48 Modello ER: Principali simboli grafici 49
  • 26. Metodologie di progettazione Il modello ER è lo strumento tramite cui è possibile definire lo schema concettuale di una base di dati, ma… Come ottenere un “buon” schema concettuale partendo dal documento di specifica dei requisiti? Come si valuta la “bontà” di uno schema concettuale? Non esiste una metodologia totalmente standardizzabile … ma esistono alcune linee guida per condurre le varie fasi 50 Raccolta ed analisi dei requisiti E’ una attività difficilmente standardizzabile Di solito condotta da personale esperto, in stretta collaborazione con gli utenti finali Una volta ottenuto il documento di specifica, è però possibile effettuare alcune operazioni su di esso, che faciliteranno le successive fasi di progettazione 51
  • 27. Raccolta ed analisi dei requisiti Operazioni sul documento di specifica: Leggerlo attentamente evidenziando tutte le possibili fonti di ambiguità ed imprecisione, cercando di chiarirle con i committenti del progetto Evidenziare i sinonimi, scegliere tra questi il termine che meglio modella il concetto da rappresentare, e sostituire gli altri con il termine scelto Separare le frasi che riguardano i dati (di maggiore rilevanza per la progettazione) da quelle che riguardano le operazioni Riorganizzare le frasi per concetti 52 Progettazione concettuale Ristrutturato il documento di specifica, come è possibile ottenere da questo un buon schema ER? Scelta dei costrutti Metodologie per la generazione di diagrammi ER Documentazione dei diagrammi Verifiche di qualità 53
  • 28. Scelta dei costrutti Leggere attentamente il documento di specifica e per ogni concetto individuato, scegliere il costrutto del modello ER più idoneo alla sua rappresentazione Esistono alcune linee guida per effettuare questa scelta 54 Scelta dei costrutti Se un concetto descrive un insieme omogeneo di oggetti rilevanti per il dominio considerato e caraterizzati da un insieme di proprietà comuni: Entità Es. clienti della videoteca, film Sono buoni candidati a essere rappresentati come entità i nomi che compaiono frequentemente nel documento di specifica Leggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di identificazione alle entità 55
  • 29. Scelta dei costrutti Se un concetto è un caso particolare di un altro: Gerarchia di generalizzazione Es. clienti, clienti standard e clienti VIP Questa soluzione è opportuna quando l’insieme delle proprietà delle entità figlie è diverso da quello delle entità padre Altrimenti, alternativa: inserire nell’entità che modella il concetto più generale un attributo che indentifica le varie tipologie di istanze (es. video con attributo tipo per indicare se DVD o VHS) 56 Scelta dei costrutti Se il concetto rappresenta una proprietà elementare, senza ulteriori sotto-proprietà: Attributo Es. nome di un cliente, titolo di un film, codice di un video Nel caso invece di proprietà con sotto-proprietà, bisogna decidere se modellarle tramite attributi composti oppure entità Leggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di cardinalità 57
  • 30. Esempio Residenza dei clienti della videoteca: Via, numero civico, città, cap Alternative: Attributo composto dell’entità Cliente 1. Entità residenza collegata a Cliente da 2. un’associazione (1) è opportuna quando non esistono molti clienti 3. che condividono la stessa residenza 58 Scelta dei costrutti Se un concetto denota un legame logico tra concetti modellati come entità: Associazione Es. video consigliato da un cliente Una associazione può anche avere delle proprietà, modellate come attributi Sono buoni candidati a essere rappresentati come associazioni i verbi che mettono in relazione concetti modellati come entità Leggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di cardinalità alle associazioni 59
  • 31. Scelta dei costrutti Non sempre è facile decidere se modellare un concetto tramite un’entità o una associazione: Es. Noleggio di un video da parte di un cliente: Associazione Noleggia tra Cliente e Video 1. Entità Noleggio legata a Cliente e Video tramite 2. opportune associazioni (1) non permette di rappresentare più noleggi dello stesso 3. video da parte dello stesso cliente. E’ appropriata se si vogliono mantenere informazioni solo sui noleggi in corso (2) permette di modellare più noleggi dello stesso video 4. da parte dello stesso cliente, mediante attributi dataNol e dataRest 60 Generazione diagrammi ER Il diagramma ER finale viene di solito generato mediante raffinamento e/o integrazione di un certo numero di schemi intermedi (dipendente dalla complessità delle specifiche) Strategie: Top-down Bottom-up Mista 61
  • 32. Strategia top-down Schemainiziale Schema finale Schema intermedio Specifiche Schema intermedio 62 Strategia bottom-up Schema 2,1 Specifiche 2,1 Schema 1,1 Specifiche 1,1 Specifiche Specifiche 1 Specifiche 2 Schema finale Specifiche2,2 Schema 2,2 Specifiche 1,2 Schema 1,2 63
  • 33. Strategia mista Si individuano i concetti principali e si realizza uno schema scheletro Sulla base di questo si può decomporre Poi si raffina, si espande, si integra per arrivare allo schema finale 64 Documentazione di supporto Deve contenere: Domini degli attributi Vincoli imposti dal dominio, non rappresentabili tramite vincoli di identificazione e cardinalità nel diagramma ER Vincoli di autorizzazione, se necessari Tipologie di gerarchie di generalizzazione Informazioni sulle principali scelte progettuali, soprattutto ove siano possibili più alternative Per basi di dati di dimensioni elevate:dizionario delle entità e delle associazioni 65
  • 34. Verifiche di qualità Frequenti verifiche di completezza e correttezza sugli schemi intermedi Verifiche sullo schema ER finale: Correttezza sintattica e semantica Completezza Ridondanza 66 Un esempio di progettazione concettuale Videoteca 67
  • 35. Specifiche Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film. Per ogni film, vogliamo memorizzare il titolo, il regista, l'anno di produzione, il genere e la valutazione della critica, se presente. Ogni film è disponibile per il noleggio in un certo numero di video.Ogni videocassetta o dvd disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui video che hanno noleggiato.Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni utente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza e telefono. Ogni cliente è identificato da un codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video (non più di tre). Per ogni noleg- gio, vogliamo memorizzare la data in cui il noleggio è stato effettuato e, per i noleggi con- clusi, la data di restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, espri- mendo per essi un giudizio.La videoteca prevede un programma di fidelizzazione dei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un bonus. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficien- ti per accedere alla categoria VIP, vogliamo memorizzare il numero di punti mancanti ad accedere a tale categoria 68 Specifiche Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film. Per ogni film, vogliamo memorizzare il titolo, il regista, l'anno di produzione, il genere e la valutazione della critica, se presente. Ogni film è disponibile per il noleggio in un certo numero di video.Ogni videocassetta o dvd disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui video che hanno noleggiato.Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni utente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza e telefono. Ogni cliente è identificato da un codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video (non più di tre). Per ogni noleg- gio, vogliamo memorizzare la data in cui il noleggio è stato effettuato e, per i noleggi con- clusi, la data di restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, esprimendo per essi un giudizio.La videoteca prevede un programma di fidelizzazione dei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un bonus. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficienti per accedere alla categoria VIP, vogliamo memorizzare il numero di punti mancanti ad accedere a tale categoria 69
  • 36. Specifiche ristrutturate Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film. Per ogni film, vogliamo memorizzareil titolo, il nome e cognome del regista, l'anno di produzione, il genere e la valutazione della critica (espressa in una scala di valori decimali da 0 a 5), se presente. Ogni film è disponibile per il noleggio in un certo numero di video (dove video sono sia videocassette che dvd). Ogni video disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto(videocassetta o dvd).La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) e sui video che hanno correntemente in noleggio ed hanno noleggiato in passato. Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni cliente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza (intesa come città, via, numero civico e cap) e un insieme di recapiti telefonici. Ogni cliente è identificato da un codice che corrisponde al numero della tessera rilasciatagli per usufruire dei servizi della videoteca. Ogni cliente può avere contemporaneamente in noleggio un certo numero di video (non più di tre).Per ogni noleggio vogliamo memorizzare il giorno, mese ed anno in cui il noleggio è stato effettuato e, per i noleggi conclusi, il giorno, mese ed anno della restituzione. Ogni cliente può inoltre consigliare dei film ad altri clienti, esprimendo per essi un giudizio in una scala di valori interi da 0 a 5. La videoteca prevede un programma di fidelizzazione dei clienti. Ogni noleggio consente l'accumulo di un certo numero di punti. Quando i punti accumulati superano una certa soglia, i clienti vengono qualificati come clienti VIP e hanno diritto ad un bonus di un certo importo espresso in euro. La base di dati dovrà memorizzare, per ogni cliente VIP, il valore corrente del suo bonus. Per i clienti standard, ovvero quelli che non hanno ancora accumulato punti sufficienti per accedere alla categoria VIP, vogliamo memorizzare 70 il numero di punti mancanti ad accedere a tale categoria Schema scheletro Video Cliente Noleggia Contiene Film 71
  • 37. Sotto-schema cliente città via residenza no nome cap cognome Cliente telefono (1,n) dataN codCli bonus Standard VIP 72 Schema scheletro Video Cliente Noleggia Contiene Film 73
  • 38. Sotto-schema noleggio dataRest (0,1) dataNol Noleggio (1,1) RelativoA (0,n) colloc Video DVD VHS 74 Schema scheletro Video Cliente Noleggia Contiene Film 75
  • 39. Sotto-schema film anno valutaz (0,1) titolo Film genere regista 76 Integrazione Video Cliente Noleggia Contiene Film 77
  • 40. Integrazione dataRest (0,1) dataNol codCli ….. (1,1) (0,n) Noleggio Cliente Effettua (1,1) RelativoA Standard VIP (0,n) ptiMancanti bonus colloc Video DVD VHS 78 Integrazione Video Cliente Noleggia Contiene Film 79
  • 41. Integrazione dataRest (0,1) dataNol codCli ….. (1,1) (0,n) Noleggio Cliente Effettua (1,1) RelativoA bonus Standard VIP (0,n) ptiMancanti colloc (1,1) (0,n) Contiene Film Video …… DVD VHS 80 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 Contiene genere (0,n) valutaz (0,1) (0,n) Fi lm anno 81 ti tol o regi sta
  • 42. Documentazione 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 82 Documentazione Gerarchie di generalizzazione: Entità padre Entità figlie Tipologia Cliente Standard, VIP Totale/esclusiva Video DVD, VHS Totale/esclusiva 83
  • 43. Dizionario delle entità Nome Descrizione Attributi Identificatori Cliente Utenti che usufruiscono codCli,dataN, codCli, dei servizi della videoteca nome, cognome, {nome, cognome, dataN} telefono, residenza Standard Cliente comune della ptiMancanti gli stessi di Cliente videoteca VIP Cliente VIP della bonus gli stessi di Cliente videoteca Video Video offerti dalla colloc colloc videoteca Noleggio Noleggi correnti e conclusi dataNol, dataRest {video,dataNol} effettuati nella videoteca {video,dataRest} Film Film offerti dalla videoteca titolo, regista, valutaz, gli stessi di video anno, genere DVD DVD offerti dalla videoteca gli stessi di video VHS Videocassette offerte dalla gli stessi di video videoteca 84 Dizionario delle associazioni Nome Descrizione Attributi Entità collegate Effettuata Noleggi effettuati Cliente, Noleggio RelativoA Video noleggiati Noleggio, Video Contiene Film a disposizione Video, Film nella videoteca Consiglia Film consigliati dai giudizio Cliente, Film clienti della videoteca 85