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