Post on 26-May-2015
Progettazione Concettuale
1
PreliminariLa progettazione di una base di dati è uno dei compiti maggiormente strategici e delicati del progetto di un sistema informativoProgettare una base di dati: definirne il contenuto e la strutturaLe basi di dati sono sempre più complesse e di dimensioni elevate ⇒ è necessario un approccio sistematico alla progettazioneMetodologia di progettazione basata sulla suddivisione dell’attività in una serie di sotto-fasi
2
Fasi della progettazioneRaccolta ed analisidei requisiti
Progettazione concettuale
Progettazionelogica
Normalizzazione
Progettazionefisica
Specifica dei requisiti
Schema concettuale
Documentazione
Schema logico
Documentazione
Schema logico normalizzato
Documentazione
Schema fisico
3
Fasi della progettazioneOgni 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 datiComunicare con i futuri utenti della base di dati
Ogni fase prevede opportune verifiche di qualità
4
Raccolta ed analisi dei requisiti
Vengono definite informalmente le caratteristiche della base di datiTale 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
5
Raccolta ed analisi dei requisitiTipologie di requisiti:
Requisiti informativi: caratteristiche e tipologie dei datiRequisiti sulle operazioni: esplicitati nel carico di lavoroRequisiti sui vincoli di integrità ed autorizzazione: proprietà da assicurare ai dati, in termini di correttezza e protezioneRequisiti sulla popolosità della base di dati: volume dei dati
6
Progettazione concettualeA partire dal documento di specifica viene creato uno schema concettuale della base di dati, cioè una descrizione formale ed ad alto livello del suo contenutoLo 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 concettualeDurante la progettazione concettuale vengono effettuate verifiche di qualità che possono portare ad un ridisegno dello schema generato
7
Progettazione concettuale
L’output di questa fase è:Lo schema concettuale della base di dati sviluppato utilizzando il modello concettuale presceltoUna documentazione a corredo dello schema, contenente:
Vincoli d’integrità non rappresentabili nello schemaScelte progettualiAltre informazioni che vedremo in seguito
8
Progettazione logicaTraduzione dello schema concettuale nel modello dei dati del DBMS targetL’output è lo schema logico nel DDL del DBMS targetAspetti considerati durante la progettazione logica:
Integrità e consistenzaSicurezzaEfficienza
9
Normalizzazione
Verifica di qualità dello schema logico prodotto, effettuata tramite opportuni strumenti formaliPrende il nome di normalizzazione nel caso di basi di dati relazionaliTale attività può portare ad una ristrutturazione dello schema logico prodotto
10
Progettazione fisicaIn 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
11
…. Nel seguito, ci concentreremo sulla progettazione concettuale….
12
Modello Entità-RelazioneUno dei modelli più utilizzati nell'ambito della progettazione concettuale Dotato di rappresentazione grafica: diagramma (o schema) ERCostrutti di base:
EntitàAssociazioniAttributi
13
Costrutti di baseEntità: 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:
Cliente Film
14
Costrutti di baseAssociazione (o relazione): legame logico tra entitàIstanze di associazione: combinazioni di istanze delle entità che prendono parte ad una associazione Graficamente:
c istanza di Cliente, f istanza di Film (c,f) istanza di Consiglia
Cliente Consiglia Film
15
Associazioni
L'insieme delle istanze di un'associazione èun sottoinsieme del prodotto Cartesiano degli insiemi delle istanze delle entità che partecipano all'associazioneQuindi, l’insieme delle istanze di un’associazione non può contenere duplicatiCiò ha conseguenza sulle scelte progettuali (si veda il seguito)
16
Numero di entità che partecipano ad un'associazioneAssociazione unaria: grado 1
Associazione binaria: grado 2
Grado di un’associazione
Film
SeguitoDi
Cliente Consiglia Film
17
Grado di un’associazioneAssociazione n-aria: grado n > 2
Film Prodotto CasaProd
Studio
18
AssociazioniRuolo: funzione che un'istanza di entità esercita nell'ambito di un'associazione
Nel caso di associazione unaria il ruolo è sempre necessario
Film
SeguitoDi
prequel sequel
19
AttributiProprietà posseduta da un'entità o da un'associazio-neGraficamente:
nome, cognome, codCli, residenza, telefono, dataNsono attributi di Cliente
Clientenome
cognome
codCli
residenza
telefonodataN
20
Attributi
Anche le associazioni possono avere attributiEsempio:
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
Cliente Consiglia Film
giudizio
21
AttributiMono-valore: possono assumere un solo valoreMulti-valore: possono assumere più di un valoreEsempio:
dataN: mono-valore in quanto un cliente ha una sola data di nascitatelefono: multi-valore in quanto un cliente può avere più recapiti telefonici
Clientenome
cognome
codCli
residenza
telefonodataN
22
Attributo composto
Possiede dei sotto-attributiEs. residenza con sotto-attributi città, via, no e capGraficamente:
residenza
cittàvianocap
23
Dominio di un attributoInsieme dei valori che un attributo può assumereDomini semplici:
Domini standard: interi, reali, booleani, date, caratteri,stringhe di caratteri, ecc.Intervalli di valori: ad esempio di interi o di caratteriInsiemi di valori (per attributi multi-valore)Domini definiti per enumerazione dall'utente
Notazione:[vi,vj]: intervallo compreso fra vi e vjset_of(d): insiemi di valori nel dominio d{vi, ... vj}: rappresenta uno tra i valori: vi, ..., vj
24
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
25
Dominio di un attributoEsempio: possibile dichiarazione per gli attributi dell’entità Cliente:codCli: intnome: stringcognome: stringdataN: dateresidenza: string × string × string × int
dichiarazione per l’attributo giudizio dell’associazione Consiglia:giudizio: dom_giudiziodom_giudizio: [0,5]
26
Dominio di un attributo
Le informazioni sui domini di un attributo non sono direttamente rappresentabili in un diagramma ERSono però fondamentali per una corretta progettazione logicaDevono quindi essere inserite nella documentazione a corredo del diagramma ER
27
Vincoli di integrità
Il modello ER fornisce costrutti per definire:1. Vincoli di cardinalità, sia per associazioni
che per attributi2. Vincoli di identificazione, per entità
Anche i domini degli attributi sono dei vincoli di integrità
28
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
29
Esempio
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)
Cliente Noleggia Video(0,3) (0,1)
30
Vincoli di cardinalità per associazioni
Valori più comuni:c_min: 0, 1c_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 è opzionalec_min=1 ⇒ ogni istanza di E partecipa almeno ad una istanza di A, la partecipazione di E ad A èobbligatoria
31
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 Ac_max=c_min=1 ⇒ ogni istanza di E partecipa ad una ed una sola istanza di Ac_max=n ⇒ non esiste limite al numero massimo di istanze di A a cui ogni istanza di E può parteciparec_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
32
Vincoli di cardinalità per associazioni
Esempio:
c_min di Video rispetto a Contiene è 1: ogni video contiene almeno un filmc_min di Film rispetto a Contiene è 0: possono esistere film in catalogo per cui al momento non sono presenti videoc_max di Video rispetto a Contiene è 1: ogni video contiene al più un filmc_max di Film rispetto a Contiene è n: ogni film può essere contenuto in un numero arbitrario di video
Video Contiene Film(1,1) (0,n)
33
Vincoli di cardinalità per associazioni
Un'associazione binaria A tra due entità E1ed E2 (o unaria con E1 = E2) si dice:
uno a uno: se c_max di E1 ed E2 rispetto ad A è1uno a molti: se c_max di E1 rispetto ad A è n e c_max di E2 rispetto ad A è 1, oppure c_max di E1rispetto ad A è 1 e c_max di E2 rispetto ad A è nmolti a molti: se c_max di E1 ed E2 rispetto ad A è n
34
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)
35
Si parla di attributi:opzionali: se la cardinalità minima è 0 obbligatori: se la cardinalità minima è 1mono-valore: se la cardinalità massima è 1 multi-valore: se la cardinalità massima è n
Esempio:
Vincoli di cardinalità per attributi
Clientenome (1,2)
cognome (1,2)codCli
residenza
telefono (1,n)dataN (0,1)
36
Vincoli di identificazioneIdentificatori 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 identificatoreDurante la progettazione concettuale per ogni entitàè bene identificare tutti gli identificatori minimaliSi noti che gli identificatori hanno senso solo per le entità e non per le associazioniNell'insieme di istanze di un'associazione si hanno tutte tuple distinte ⇒ non c'è bisogno di identificatori
37
Vincoli di identificazioneA volte non è possibile identificare un'istanza di entità solo sulla base dei suoi attributi, cioè due istanze diverse possono coincidere su tutti gli attributiSi 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
38
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à attraversotale associazione)Misti: combinazioni delle due tipologie precedentiSemplici: un solo elementoComposti: più di un elemento
39
Tipologie di indentificatoriIdentificatore interno semplice:
Identificatore interno composto:
cognomecodCli
Clientenome residenza
telefonodataN
titoloregista
valutaz
Filmanno
genere
40
Tipologie di identificatori
Identificatore misto (composto):
Identificatore esterno (semplice):
Video Posseduto Videotecacolloc tipo
nomecittà
(1,1) (1,n)
Nazionale Gioca Nazionenomecapitale(1,1) (0,1)numAbitanti
41
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 unoNel caso di identificazione mista l'associazione sarà uno a molti
42
Gerarchie di generalizzazioneUlteriore costrutto del modello ER, non presente nella formulazione originariaUna 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
43
Graficamente
bonus
cognomecodCli
Clientenome residenza
telefonodataN
Standard VIPptiMancanti
44
Gerarchie di generalizzazioneVincoli 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
45
Gerarchie di generalizzazioneE generalizzazione di E1 … En:
Totale: ogni istanza di E è istanza di almeno un'entità Eies. 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à Eies. Cliente - Standard, VIP, se esistono clienti che possono effettuare un noleggio senza registrarsi al programma di fidelizzazione
46
Gerarchie di generalizzazione
La generalizzazione può essere inoltre:Esclusiva: ogni istanza di E è istanza di al più un'entità Eies. Cliente - Standard, VIPCondivisa: esiste almeno un'istanza di E che è istanza di più di un'entità Eies. Film - FilmAnimazione, FilmEssay
47
Gerarchie di generalizzazioneLe due classificazioni precedenti sono ortogonaliLe generalizzazioni possono quindi essere di 4 tipi:
Totali esclusive, totali condiviseParziali esclusive, parziali condivise
Le informazioni sulle tipologie di gerarchie di generalizzazione presenti in uno schema ER vanno inserite nella documentazione a corredo dello schema
48
Associazione di sottoinsiemeCaso 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
49
Modello ER: Principali simboli grafici
50
Metodologie di progettazioneIl 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
51
Raccolta ed analisi dei requisiti
E’ una attività difficilmente standardizzabileDi solito condotta da personale esperto, in stretta collaborazione con gli utenti finaliUna volta ottenuto il documento di specifica, è però possibile effettuare alcune operazioni su di esso, che faciliteranno le successive fasi di progettazione
52
Raccolta ed analisi dei requisitiOperazioni sul documento di specifica:
Leggerlo attentamente evidenziando tutte le possibili fonti di ambiguità ed imprecisione, cercando di chiarirle con i committenti del progettoEvidenziare i sinonimi, scegliere tra questi il termine che meglio modella il concetto da rappresentare, e sostituire gli altri con il termine sceltoSeparare le frasi che riguardano i dati (di maggiore rilevanza per la progettazione) da quelle che riguardano le operazioniRiorganizzare le frasi per concetti
53
Progettazione concettuale
Ristrutturato il documento di specifica, come è possibile ottenere da questo un buon schema ER?
Scelta dei costruttiMetodologie per la generazione di diagrammi ERDocumentazione dei diagrammiVerifiche di qualità
54
Scelta dei costrutti
Leggere attentamente il documento di specifica e per ogni concetto individuato, scegliere il costrutto del modello ER più idoneo alla sua rappresentazioneEsistono alcune linee guida per effettuare questa scelta
55
Scelta dei costruttiSe 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, filmSono buoni candidati a essere rappresentati come entità i nomi che compaiono frequentemente nel documento di specificaLeggendo il documento di specifica, si devono anche assegnare gli opportuni vincoli di identificazione alle entità
56
Scelta dei costruttiSe un concetto è un caso particolare di un altro:
Gerarchia di generalizzazioneEs. clienti, clienti standard e clienti VIPQuesta soluzione è opportuna quando l’insieme delle proprietà delle entità figlie è diverso da quello delle entità padreAltrimenti, 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)
57
Scelta dei costruttiSe il concetto rappresenta una proprietà elementare, senza ulteriori sotto-proprietà:
AttributoEs. nome di un cliente, titolo di un film, codice di un videoNel 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à
58
Esempio
Residenza dei clienti della videoteca:Via, numero civico, città, cap
Alternative:1. Attributo composto dell’entità Cliente2. Entità residenza collegata a Cliente da
un’associazione3. (1) è opportuna quando non esistono molti clienti
che condividono la stessa residenza
59
Scelta dei costruttiSe un concetto denota un legame logico tra concetti modellati come entità:
AssociazioneEs. video consigliato da un clienteUna associazione può anche avere delle proprietà, modellate come attributiSono 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
60
Scelta dei costruttiNon sempre è facile decidere se modellare un concetto tramite un’entità o una associazione:Es. Noleggio di un video da parte di un cliente:
1. Associazione Noleggia tra Cliente e Video2. Entità Noleggio legata a Cliente e Video tramite
opportune associazioni3. (1) non permette di rappresentare più noleggi dello stesso
video da parte dello stesso cliente. E’ appropriata se si vogliono mantenere informazioni solo sui noleggi in corso
4. (2) permette di modellare più noleggi dello stesso video da parte dello stesso cliente, mediante attributi dataNol e dataRest
61
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-downBottom-upMista
62
Strategia top-down
SpecificheSchema inizialeSchema intermedioSchema intermedioSchema finale
63
Strategia bottom-up
SpecificheSpecifiche 2Specifiche 1
Specifiche 1,1
Specifiche 1,2
Specifiche 2,1
Specifiche 2,2
Schema 1,1
Schema 1,2
Schema 2,1
Schema 2,2
Schema finale
64
Strategia mista
Si individuano i concetti principali e si realizza uno schema scheletroSulla base di questo si può decomporrePoi si raffina, si espande, si integra per arrivare allo schema finale
65
Documentazione di supportoDeve contenere:
Domini degli attributiVincoli imposti dal dominio, non rappresentabili tramite vincoli di identificazione e cardinalità nel diagramma ERVincoli di autorizzazione, se necessari Tipologie di gerarchie di generalizzazioneInformazioni sulle principali scelte progettuali, soprattutto ove siano possibili più alternativePer basi di dati di dimensioni elevate:dizionario delle entità e delle associazioni
66
Verifiche di qualità
Frequenti verifiche di completezza e correttezza sugli schemi intermediVerifiche sullo schema ER finale:
Correttezza sintattica e semanticaCompletezzaRidondanza
67
Un esempio di progettazione concettuale
Videoteca
68
SpecificheVogliamo 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
69
SpecificheVogliamo 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
70
Specifiche ristrutturateVogliamo 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 fidelizzazionedei 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 il numero di punti mancanti ad accedere a tale categoria
71
Schema scheletro
Cliente Noleggia Video
Contiene
Film
72
Sotto-schema cliente
bonus
cognomecodCli
Clientenome
telefono (1,n)dataN
Standard VIP
residenza
cittàvianocap
73
Schema scheletro
Cliente Noleggia Video
Contiene
Film
74
Sotto-schema noleggio
Noleggio
RelativoA
Video
(1,1)
(0,n)
DVD VHS
colloc
dataRest (0,1) dataNol
75
Schema scheletro
Cliente Noleggia Video
Contiene
Film
76
Sotto-schema film
titoloregista
valutaz (0,1)
Filmanno
genere
77
Integrazione
Cliente Noleggia Video
Contiene
Film
78
Integrazione
Cliente Effettua Noleggio(1,1)(0,n)
RelativoA
Video
(1,1)
(0,n)
DVD VHS
colloc
dataRest (0,1) dataNol
VIPStandard
ptiMancanti bonus
codCli …..
79
Integrazione
Cliente Noleggia Video
Contiene
Film
80
Integrazione
Cliente Effettua Noleggio(1,1)(0,n)
RelativoA
Video
(1,1)
(0,n)
DVD VHS
colloc
dataRest (0,1) dataNol
VIPStandard
ptiMancanti
bonus
codCli …..
Film
……
(1,1) Contiene (0,n)
81
Cliente
Video
(1,1)
Contiene
Fi lm
Standard VIP
bonusptiMancanti
(0,n)
(0,n)
valutaz (0,1)
anno
colloc
nomecognome
dataN
telefono(1,n)
codCli residenza
città via no cap
DVD
VHS
Noleggio
dataRest (0,1) dataNol
Effettua
RelativoA
(1,1)
(0,n) (1,1)
Consiglia
giudizio
(0,n)
(0,n)
ti tolo regista
genere
82
DocumentazioneVincoli:
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 restituzioneV4: Uno stesso video non può essere noleggiato da due o più clientidiversi contemporaneamente
83
DocumentazioneGerarchie di generalizzazione:
Totale/esclusivaDVD, VHSVideo
Totale/esclusivaStandard, VIPCliente
TipologiaEntità figlieEntità padre
84
Dizionario delle entità
gli stessi di videoVideocassette offerte dalla videoteca
VHS
gli stessi di videoDVD offerti dalla videotecaDVD
gli stessi di videotitolo, regista, valutaz, anno, genere
Film offerti dalla videotecaFilm
{video,dataNol} {video,dataRest}
dataNol, dataRestNoleggi correnti e conclusi effettuati nella videoteca
Noleggio
colloccollocVideo offerti dalla videoteca
Video
gli stessi di ClientebonusCliente VIP della videoteca
VIP
gli stessi di ClienteptiMancantiCliente comune della videoteca
Standard
codCli,{nome, cognome, dataN}
codCli,dataN, nome, cognome,telefono, residenza
Utenti che usufruiscono dei servizi della videoteca
Cliente
IdentificatoriAttributiDescrizioneNome
85
Dizionario delle associazioni
Cliente, FilmgiudizioFilm consigliati dai clienti della videoteca
Consiglia
Video, FilmFilm a disposizione nella videoteca
Contiene
Noleggio, VideoVideo noleggiatiRelativoA
Cliente, NoleggioNoleggi effettuatiEffettuata
Entità collegateAttributiDescrizioneNome