Post on 02-Jul-2015
transcript
0
Progettazione logica
1
Progettazione logicaProgettazione concettuale
produce uno schema concettuale indipendente dalparticolare sistema di gestione dati che utilizzeremo per la sua implementazioneobiettivo primario: rappresentazione formale e non ambigua dei dati di interesse
Progettazione logicascelto uno specifico DBMS, traduce lo schema concettualein uno schema logico per il DBMS presceltoobiettivo primario: punto di partenza per la realizzazionedella base di dati e delle relative applicazioni
2
Progettazione logica -obiettivo principale
Tradurre uno schema ER, ottenuto come risultato dellafase di progettazione concettuale, in uno schema
relazionale equivalente e che tenga anche conto diaspetti legati alle prestazioni delle operazioni che
verranno eseguite sulla base di dati
3
Progettazione logica - schema
4
Progettazione logica - input
Schema concettuale+
documentazione +Carico di lavoro
Dimensioni dei datiOperazioni da eseguire sulla base di dati,Frequenza operazioni
5
Progettazione logica - fase diristrutturazione
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 relazionaleulteriori ristrutturazioni dello schema che tengano conto diaspetti prestazionali, identificati dall'analisi del carico dilavoro
Traduzione non sempre univocadipende dal carico di lavoro e da considerazioni relative alla conseguente realizzazione della base di dati chestiamo progettando
6
Progettazione logica - fase ditraduzione
Lo schema ER ristrutturato viene tradotto in un equivalente schema relazionaleapplicazione di un insieme di regole ditrasformazione a entita`, attributi e associazioni del modello ERtraduzione non sempre univoca
la scelta di una delle soluzioni possibili dipendeda considerazioni di carattere prestazionale
7
Progettazione logica - output
Vincoli di integrita`Vincoli di autorizzazione
Schema logico
+Vincoli di dominio
Vincoli CHECK od asserzioni Trigger
Comandi di GRANT
Documentazione
DizionariDettagli scelte progettuali
8
Fase di ristrutturazioneEliminazione dallo schema ER di tutti i costrutti non direttamente rappresentabili nel modello relazionaleUlteriori ristrutturazioni dello schema che tenganoconto di aspetti prestazionali, identificati dall'analisidel carico di lavoro
analisi della ridondanzapartizionamento/accorpamento di entita`eliminazione degli attributi composti e multi-valoreeliminazione delle gerarchie di generalizzazione
9
Analisi della ridondanzaRidondanza
un'informazione viene rappresentata sia esplicitamentenello schema sia puo` essere derivata da altre informazioni(ad esempio attributi od associazioni) presenti nelloschema
Esempipresenza di cicli tra le associazionipresenza di attributi il cui valore puo` essere derivato daaltri attributi ed/od associazioni
permette di semplificare lo schema ER e di generaresuccessivamente uno schema relazionale
non ridondante
10
Analisi della ridondanzaSvantaggi:
maggiore occupazione di spazio appesantimento delle procedure di aggiornamento
Vantaggipuo` rendere piu` efficienti alcune interrogazioni descrittenel carico di lavoro
Ridondanza limitata solo a quei casi in cui sia possibileottenere un significativo beneficio in termini di tempo
di esecuzione di interrogazioni eseguitefrequentemente
11
Analisi della ridondanza
Le valutazioni da effettuare per l'eventualeeliminazione di entita` od associazioniridondanti sono basate su stime piuttosto chesu valori effettivi
stima occupazione memoria del dato ridondante e costo delle operazioni in presenza oppure in assenza di ridondanza basate su informazioni sulvolume dei dati
da carico di lavoro
12
Analisi della ridondanza -esempio
NumNoleggi
Noleggio di un nuovo video da parte di un cliente:• aggiornamento istanze
entita` Noleggio• aggiornamento del valore
dell'attributo numNoleggiper 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• spazio richiesto limitato
13
Partizionamento/accorpamentodi entita`
Partizionamentoun’entita` E puo` essere partizionata in due entita` E1 ed E2, una dellequali identificata esternamente dall'altra, collegate medianteun'associazione uno a unoconveniente quando alcune operazioni frequenti coinvolgono solo un sottoinsieme degli attributi di E
Accorpamentodue entita` E1 ed E2 collegate da un'associazione uno a uno possonoessere accorpate in un'unica entita` contenente gli attributi di E1 ed E2 nel caso in cui operazioni frequenti abbiano la necessita` diaccedere ad entrambi gli insiemi di attributievita la navigazione dell'associazione durante l'esecuzione di tali operazionipuo` generare attributi opzionali in caso di partecipazione opzionaleall'associazione di almeno un'entita`
14
Partizionamento/accorpamentodi entita` - esempio
partizionamentoaccorpamento
15
Partizionamento/accorpamentodi entita`
Le operazioni di partizionamento e diaccorpamento possono gia` essere eseguitenella fase di ristrutturazioneSpesso pero` vengono rimandate alla fase diprogettazione fisica
disponibilita` di ulteriori informazioni relative all'esecuzione delle interrogazioni
16
Eliminazione degli attributicomposti
Eliminazione di un attributo composto A da un'entita` ESoluzione 1: eliminazione dei sotto-attributi di A
attributo composto diventa attributo semplicee` compito dell'applicazione garantire che il nuovo attributo contenga valori coerenti con la semantica dell'attributo compostoristrutturato
Soluzione 2: considerare tutti i sotto-attributi di A come attributi di Eridefinizione del dominio dell'attributosi perde la relazione tra i sotto-attributi
Eventuali vincoli di cardinalita` esistenti per l'attributo compostovengono associati a ciascuno dei nuovi attributi generati tramitela ristrutturazioneSe le componenti dell'attributo composto sono a loro voltaattributi composti, si ri-applica la procedura
17
Eliminazione degli attributicomposti - esempio
Dom(residenza) = string
Dom(citta`) = stringDom(via) = stringDom(no) = stringDom(cap) = integer
Dom(citta`) = stringDom(via) = stringDom(no) = stringDom(cap) = integer
Soluzione 1 Soluzione 2
18
Eliminazione degli attributimulti-valore
Definizione di una nuova entita`, collegata all'entita` di partenza tramite un'opportuna associazioneL'attributo multi-valore e` rappresentato mediante un attributo mono-valore che identifica l'entita`Vincoli di cardinalita` rispetto alla nuovaassociazione:
per l'entita` che conteneva prima della ristrutturazionel'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)
19
Eliminazione degli attributimulti-valore - esempio
20
Eliminazione delle gerarchie digeneralizzazione
Entita` E generalizzazione di un insieme di entita` E1,…,EnApproccio
si estraggono informazioni sul tipo di gerarchia (totale o parziale, esclusiva o condivisa) dalla documentazione disupporto generata dalla fase di progettazione concettualesi sceglie una soluzione di ristrutturazione, sulla base del carico di lavoro
eliminazione entita` figlieeliminazione entita` padresostituzione della generalizzazione con associazioni
21
Eliminazione entita` figlieEntita`
E1,…,En vengono eliminateAttributi
gli attributi di E1,…,En loro attributi vengono inseriti nell'entita` padre come attributi opzionaliall'entita` padre viene aggiunto un attributo che specifica da qualeentita` figlia nello schema originario proviene ciascuna istanzadell'entita` padre nello schema ristrutturato
nel caso di generalizzazioni totali, tale attributo non puo` maiassumere valore nullonel caso di generalizzazioni parziali, un valore nullo indicaun'istanza dell'entita` padre che, nello schema originario, non era istanza di alcuna delle entita` figlienel caso di generalizzazioni condivise, l'attributo sara` multi-valore
22
Eliminazione entita` figlieAssociazioni
la partecipazione (obbligatoria od opzionale) di un'entita` figlia ad un'associazione viene sostituita con la partecipazione opzionaledell'entita` padre alla stessa associazione
Vincoli di integrita`per ogni attributo inserito nell'entita` padre, e` necessarioaggiungere un vincolo di integrita` che indichi quando tale attributo puo` assumere un valore nullo, sulla base del tipodell'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 obbligatorise e` esclusiva, gli attributi di al piu` un'entita` figlia Ei dovrannoessere obbligatori
per ogni associazione, e` necessario aggiungere un vincolo diintegrita` che indichi quali tipi di istanze dell'entita` padre possono essere coinvolti nell'associazione
23
Eliminazione entita` figlieGeneralizzazione totale ed esclusiva
24
Eliminazione entita` padreApplicabile solo nel caso di generalizzazione totaleEntita`
eliminazione dell'entita padre EAttributi
inserimento degli attributi di E in ciascuna delle entita` figlieAssociazioni
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 distinteaventi lo stesso valore per gli identificatoriil vincolo di cardinalita` di ciascuna entita` figlia rispetto alla nuova associazione coincidera` con il vincolo di cardinalita` dell'entita` padre rispetto all'associazione eliminatai vincoli di cardinalita` delle altre entita` diventeranno invece opzionali
25
Eliminazione entita` padre -esempio
26
Sostituzione dellageneralizzazione con associazioni
Entita`non modificate
Associazionila gerarchia viene sostituita da n associazioni uno a uno, ognunadelle quali lega l'entita` padre con una diversa entita` figliale 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` associazionise la generalizzazione e` totale, ogni istanza dell'entita` padre deve partecipare obbligatoriamente ad almeno un’associazione
27
Sostituzione della generalizzazionecon associazioni - esempio
28
OsservazioniEliminazione entita` figlie
spreco di memoria per la presenza dei valori nulliconveniente solo nel caso in cui le operazioni non fanno distinzione trale varie sotto-entita`
Eliminazione entita` padrerisparmio di memoria rispetto alla soluzione di eliminare le entita` figliein quanto evita il problema dei valori nulliconveniente soprattutto nel caso in cui esistano operazioni che siriferiscono alle istanze di una specifica entita` figliasolo per generalizzazione totale
Sostituzione con associazionipreferibile alla soluzione di eliminare le entita` figlie per quanto riguardala quantita` di memoria utilizzataconveniente quando esistono delle operazioni che discriminano traentita` padre ed entita` figlie
29
OsservazioniIn alcune situazioni, puo` essere convenienteadottare soluzioni ibride
eliminazione di un sottoinsieme delle entita` figlie, mantenendo le altre nello schema
Generalizzazione a piu` livellisi applicano le strategie proposte partendo dalle fogliedella gerarchia complessivalo schema risultante dipendera` dal tipo dellaristrutturazione applicata ad ogni livello
30
Fase di traduzioneGenera, a partire dallo schema ER restituito dallafase di ristrutturazione, un equivalente schema relazionaleSi basa su un insieme di regole di traduzione
traduzione delle entita`traduzione delle associazionitraduzione dei vincoli di integrita`ottimizzazioni finali
31
Regole di traduzione
Entita` Associazione
Relazione Relazioneo
Chiave esterna
32
Traduzione entita`
Due casil’entita` E possiede non identificatori esterni o mistil’entita` E possiede identificatori esterni o misti
33
Traduzione entita` - no identificatori esterni/misti
E(A1/D1, A2O/D2, A3/D3, A4/D4)
Di estratti dalladocumentazione generata dallaprogettazione concettualeVincolo di obbligatorieta` per A1, A3, A4Chiavi candidate: A1, (A3,A4)
E
A1 A2 (0,1) A3 A4
34
Traduzione entita` -identificatori esterni/misti
E1(A1/D1, A2O/D2, A3/D3, A4/D4, B1E2/F1)
E2(B1/F1)
Di, Fi estratti dalla documentazionegenerata dalla progettazione concettualeVincolo di obbligatorieta` per A1, A3, A4, B1Chiavi candidate per E2: B1Chiavi candidate per E1: (A1,B1), (A3,A4)A viene automaticamente rappresentata
E1
A1 A2 (0,1) A3 A4
E2
A
B1
35
Traduzione entita` -identificatori esterni/misti
E1(A1/D1, A2O/D2, A3/D3, A4/D4, ,B1E2/F1,C1)
E2(B1/F1)
Di, Fi estratti dalla documentazione generatadalla progettazione concettualeVincolo di obbligatorieta` per A1, A3, A4, B1Chiavi candidate per E2: B1Chiavi candidate per E1: B1, (A3,A4)A viene automaticamente rappresentata
E1
A1 A2 (0,1) A3 A4
E2
A
B1
C1
36
Traduzione entita` -identificatori esterni/misti
Se E2 ha almeno un identificatore esterno o misto
si eliminano prima gli identificatori esterni o mistidi E2si elimina quindi l’identificatore esterno o misto diE1
37
Traduzione entita` - esempio
Videoteca(nome, citta`) Video(colloc, nomeVideoteca, citta`Videoteca,tipo)
Nazione(nome,capitale,numAbitanti) Nazionale(nomeNazione)
38
Traduzione entita` - sceltachiave primaria
Ciascuna relazione potrebbe essere caratterizzatada piu` di una chiave
e` necessario selezionare una di queste chiavi come chiave primariadipende 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 unachiave primaria
39
Traduzione entita` - sceltachiave primaria
Criterigli identificatori che contengono attributi opzionali non possonoessere selezionati come chiave primariaidentificatori composti da pochi attributi sono preferibili ad identificatori composti da molti attributiidentificatori che assumiamo vengano utilizzati da molteoperazioni per accedere alle entita` sono da preferire
Se nessuna chiave candidata soddisfa i requisiti precedentie` consigliabile aggiungere alla relazione un ulteriore attributocome chiave primaria ed assegnare a tale attributo valorispeciali (codici) generati appositamente ai fini dell'identificazione
40
Traduzione associazioni -assunzione
Negli schemi che presenteremo nel seguitosupponiamo che le entita` abbiano una solachiave candidata, scelta come chiaveprimariaViene omessa la rappresentazione del dominio degli attributi
41
Traduzione associazionebinaria uno a uno
E1
A1 A2 A3 A4
E2
A
B1B2B3
(1,1)
(0,1)
E1(A1, A2, A3, A4, B1E2,C1) E2(B1, B2, B3)
Partecipazione obbligatoria di una sola entita`
C1
42
Traduzione associazionebinaria uno a uno - esempio
Film(titolo,regista,anno,genere,valutaz)
Cliente(codCli,nome,cognome,telefono,dataN,residenza,titoloFilm,registaFilm,giudizio)
43
Traduzione associazionebinaria uno a uno
E1
A1 A2 A3 A4
E2
A
B1B2B3
(1,1)
(1,1)
E1(A1, A2, A3, A4, B1E2 ,C1) E2(B1, B2, B3)
Oppure
E1(A1, A2, A3, A4) E2(B1, B2, B3, A1E1 ,C1)
Partecipazione obbligatoria di entrambe le entita`
C1
44
Traduzione associazionebinaria uno a uno
E1
A1 A2 A3 A4
E2
A
B1B2B3
(0,1)
(0,1)
E1(A1, A2, A3, A4, B1oE2,C1o)
E2(B1, B2, B3)
oppure
E1(A1, A2, A3, A4) E2(B1, B2, B3, A1o
E1,C1o)
oppure (per eliminare i valori nulli)
E1(A1, A2, A3, A4) E2(B1, B2, B3)A(A1E1,B1E2,C1) oppureA(A1E1,B1E2,C1)
Partecipazione opzionale di entrambe le entita`
C1
45
Traduzione associazionebinaria uno a uno - esempio
Film(titolo,regista,anno,genere,valutaz)Cliente(codCli,nome,cognome,telefono,dataN,residenza,titoloo
Film,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) oppureConsiglia(codCliCliente,titoloFilm,registaFilm)
46
Traduzione associazionebinaria uno a molti
E1
A1 A2 A3 A4
E2
A
B1B2B3
(1,1) E1(A1, A2, A3, A4, B1E2,C1) E2(B1, B2, B3)
C1
(0,n) oppure (1,n)
Partecipazione obbligatoria entita` dal lato uno
47
Traduzione associazionebinaria uno a molti
E1
A1 A2 A3 A4
E2
A
B1B2B3
(0,1)
(0,n) oppure (1,n)
E1(A1, A2, A3, A4, B1oE2,C1o)
E2(B1, B2, B3)
oppure (per eliminare i valori nulli)
E1(A1, A2, A3, A4) E2(B1, B2, B3)A(A1E1, B1E2, C1)
C1
Partecipazione opzionale entita` dal lato uno
48
Traduzione associazionebinaria uno a molti - esempio
Film(titolo,regista,anno,genere,valutaz)
Video(colloc,tipo,titoloFilm,registaFilm,data)
49
Traduzione associazionebinaria 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)
50
Traduzione associazionebinaria molti a molti
E1
A1 A2 A3 A4
E2
A
B1B2B3
(0,n) oppure (1,n)
(0,n) oppure (1,n)
E1(A1, A2, A3, A4) E2(B1, B2, B3)A(A1E1, B1E2,C1)
C1
51
Traduzione associazionebinaria molti a molti - esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza)Film(titolo,regista,anno,genere,valutaz)Consiglia(codCliCliente,titoloFilm,registaFilm,giudizio)
52
Associazione unaria uno a unoo uno a molti
In modo analogo ad associazioni binarie, considerando i ruoli
E1
A1 A2 A3 A4
A
(1,1)
(0,1) oppure (1,1) oppure(0,n) oppure (1,n)
E1(A1, A2, A3, A4, R2E1 ,C1)
C1R1
R2
Partecipazione obbligatoria entita` dal lato uno
53
E1
A1 A2 A3 A4
A
(0,1)
(0,1) oppure (0,n) oppure (1,n)
E1(A1, A2, A3, A4, R2oE1 ,C1o)
oppure
E1(A1, A2, A3, A4) A(R1E1, R2E1, C1)
C1R1
R2
Associazione unaria uno a unoo uno a molti
Partecipazione opzionale entita` dal lato uno
54
E1
A1 A2 A3 A4
A
(0,n) oppure (1,n)
(0,n) oppure (1,n)
E1(A1, A2, A3, A4) A(R1E1, R2E1, C1)
C1R1
R2
Associazione unaria molti a molti
55
Associazione unaria uno a molti - esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza,vecchioClioCliente)
oppure
Cliente(codCli,nome,cognome,telefono,dataN,residenza)Presenta(nuovoCliCliente,vecchioCliCliente)
56
Associazione unaria molti a molti - esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza)Presenta(nuovoCliCliente,vecchioCliCliente)
57
Associazione n-aria molti a molti
In modo analogo ad associazioni binarieSpesso sono molti a molti
E1
A1 A2 A3 A4
E2
A
B1B2B3
(1,n) oppure (0,n)E1(A1, A2, A3, A4) E2(B1, B2, B3)E3(D1, D2)A(A1E1, B1E2, D1E3, C1)
C1
(1,n) oppure (0,n)
E3D1D2
(1,n) oppure(0,n)
58
Associazione n-aria molti a molti
In alcuni casi (A1, B1, D1) e` una super-chiave per ALa determinazione della chiave puo` avveniredall’analisi di particolari vincoli di integrita`
dipendenze funzionalile vedremo nel seguito
59
Altre associazione n-arieIn modo analogo ad associazioni binarie
E1
A1 A2 A3 A4
E2
A
B1B2B3
(1,1) oppure (0,1)E1(A1, A2, A3, A4,
B1E2, D1E3, C1) E2(B1, B2, B3)E3(D1, D2)
C1
(1,n) oppure (0,n)
E3D1D2
(1,n) oppure(0,n)
60
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)
61
Associazione n-aria - esempio
Se un cliente puo` consigliare attori in un numero arbitrario difilm, 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)
62
Associazione n-aria - esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza,titoloo
Film,registaoFilm,codAo
Attore,giudizioo)Film(titolo,regista,anno,genere,valutaz)Attore(codA,nome,cognome)
Come si puo` ridurre la presenza di valori nulli?
Un esempio completo diprogettazione logica
64
Carico di lavoroOperazione 1
Inserisce un nuovo video ed il corrispondente film, se non ancorapresente (frequenza: 30 video/mese, 10 film/mese)
Operazione 2Inserisce un nuovo cliente, classificandolo come cliente standard, indicando tutti i suoi dati anagrafici (frequenza: 5 clienti/settimana)
Operazione 3Inserisce le informazioni relative ad un nuovo noleggio ed aggiorna i punti mancanti per accedere alla categoria VIP; quando i puntimancanti 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 4Aggiorna i dati del noleggio al momento della restituzione del video da parte di un generico cliente (frequenza: 200 noleggi/giorno)
65
Operazione 5Stampa l’elenco dei nomi e delle residenze di tutti i clienti che hannonoleggiato almeno un video da pi`u di 1 settimana e non l’hannoancora restituito (frequenza: 1 stampa/giorno)
Operazione 6Stampa l’elenco dei nomi e delle residenze di tutti i clienti VIP, per inviare materiale informativo relativo alla situazione bonus (frequenza: 2 stampe/mese)
Carico di lavoro
66
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
Relati voA
(1,1)
(0,n) (1,1)
Consiglia
giudizio
(0,n)
(0,n)
ti tolo regi sta
genere
Schema concettuale
67
Documentazione concettualeVincoli:
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
68
Documentazione concettualeGerarchie di generalizzazione:
Totale/esclusivaDVD, VHSVideo
Totale/esclusivaStandard, VIPCliente
TipologiaEntità figlieEntità padre
69
Schema ristrutturato
70
Documentazione su schema ristrutturatoVincoli:
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
V5: Ogni cliente e` alternativamente un cliente standard od un cliente VIP
71
Schema relazionaleCliente(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)
72
Documentazione
73
OttimizzazioniLa 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) diventerebbechiave alternativa