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