63
Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 “Basi di dati” Atzeni – Ceri – Paraboschi - Torlone

Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Embed Size (px)

Citation preview

Page 1: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Basi di Datiprof. A. Longheu

6 – Progettazione LogicaCap. 7 “Basi di dati” Atzeni – Ceri – Paraboschi - Torlone

Page 2: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Progettazione Logica

• Obiettivo della Progettazione Logica e’ quello di costruire uno schema logico ,in un determinato modello (ad es. relazionale), che descriva in maniera corretta ed efficiente tutte le informazioni contenute nello schema E-R prodotto dalla progettazione concettuale.

• Non si tratta di una semplice traduzione • Nel seguito, il termine entità è lo stesso del

modello e-r, il termine associazione è la relazione del modello e-r, per non confonderla con la relazione del modello relazionale (che è una semplice tabella).

Page 3: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

La progettazione logica si articola in due fasi:

• Ristrutturazione dello schema E-R: e’ una fase indipendente dal modello logico e si basa su criteri di ottimizzazione dello schema e di successiva semplificazione.

• Traduzione verso il Modello Logico: fa riferimento ad un modello logico (ad es. relazionale) e puo’ includere ulteriore ottimizzazione che si basa sul modello logico stesso (es. normalizzazione).

Progettazione Logica

Page 4: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Progettazione Logica

Page 5: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione - 1

L’input ed output della fase di ristrutturazione dello schema E-R sono:

• Input: Schema Concettuale E-R iniziale, Carico Applicativo previsto (in termini di dimensione dei dati e caratteristica delle operazioni)

• Output : Schema E-R ristrutturato che rappresenta i dati e tiene conto degli aspetti realizzativi

Page 6: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• L’input della ristrutturazione è lo schema E-R, ricavato dalla fase di progettazione concettuale, ed il carico applicativo.

• Per determinare il carico applicativo vengono definiti degli indici di prestazione per la valutazione di schemi E-R. Tali indici sono due:

• Costo di un’operazione: in termini di numero di occorrenze di entita’ ed associazioni che mediamente vanno visitate per rispondere a quella operazione sulla base di dati

• Occupazione di memoria: viene valutata in termini dello spazio di memoria (misurato in byte) necessario per memorizzare i dati del sistema.

Ristrutturazione – 2Determinazione Carico Applicativo

Page 7: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Per studiare questi indici abbiamo bisogno di conoscere:

• Volume dei dati: a) numero (medio) di occorrenze di ogni entita’ ed associazione b) dimensioni di ciascun attributo

• Caratteristiche delle operazioni: a) tipo di operazione (interattiva o batch) b) frequenza (esecuzioni/tempo) c) dati coinvolti (entita’ e o associazioni)

Ristrutturazione – 3 Determinazione Carico Applicativo

Page 8: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio:ditta con sedi in citta’ diverse

Ristrutturazione – 4 Determinazione Carico Applicativo

Page 9: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Operazione 1: assegna un impiegato ad un progetto

• Operazione 2: trova i dati di un impiegato, del dipartimento nel quale lavora e dei progetti in cui e’ coinvolto

• Operazione 3: trova i dati di tutti gli impiegati di un certo dipartimento

• Operazione 4: per ogni sede, trova i dipartimenti con il cognome del direttore e l’elenco degli impiegati.

Ristrutturazione – 5 Determinazione Carico Applicativo

Operazioni dell’esempio

Page 10: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

TABELLA DEI VOLUMI

Concetto Tipo Volume

Sede E 10

Dipartimento E 80

Impiegato E 2000

Progetto E 500

Composizione R 80

Afferenza R 1900

Direzione R 80Partecipazione R 6000

TABELLA DELLE OPERAZIONI

Concetto Tipo Frequenza

Op. 1 I 50 al giorno

Op. 2 I 100 al giorno

Op. 3 I 10 al giorno

Op. 4 B 2 a settimana

Ristrutturazione – 6 Determinazione Carico Applicativo

Page 11: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Avendo a disposizione il volume dei dati (tabella dei volumi) e le caratteristiche delle operazioni (tabella delle operazioni), e’ possibile calcolare gli indici di prestazione.

• Partendo dalla stima dei costi di ogni operazione, tale indice si determina contando il numero di accessi alle occorrenze di entita’ e relazioni necessario per eseguire l’operazione.

• Prendiamo per esempio l’operazione 2 e facciamo riferimento allo schema di operazione

Ristrutturazione – 7 Determinazione Carico Applicativo

Page 12: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 8 Determinazione Carico Applicativo

Lo schema di operazione in figura mostra (tramite delle frecce) le entità e le relazioni effettivamente coinvolte nell’esecuzione dell’operazione (trova i dati di un impiegato, del dipartimento nel quale lavora e dei progetti in cui e’ coinvolto)

Page 13: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Dobbiamo accedere ad un’occorrenza di Impiegato e di Afferenza e quindi di Dipartimento. Successivamente , per avere i dati dei progetti a cui lavora, dobbiamo accedere (in media) a tre occorrenze di Partecipazione e quindi a tre entita’ Progetto. Tutto viene riassunto nella tavola degli accessi, che costituisce una stima del costo

Ristrutturazione – 9 Determinazione Carico Applicativo

Page 14: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

TAVOLA DEGLI ACCESSI

CONCETTO COSTRUTTO ACCESSI TIPOImpiegato Entita' 1 L

Afferenza Relazione 1 L

Dipartimento Entita' 1 L

Partecipazione Relazione 3 L

Progetto Entita' 3 L

Ristrutturazione – 10 Determinazione Carico Applicativo

Page 15: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 11 Determinazione Carico Applicativo

Per valutare il secondo indice, l’occupazione di memoria, è sufficiente utilizzare la tabella dei volumi da cui prelevare il numero di occorrenze, aggiungere la dimensione della singola occorrenza ed ottenere quindi l’occupazione di memoria di tutte le entità e relazioni.

Page 16: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 12

• Una volta determinato il carico applicativo, ed avendo dalla progettazione concettuale lo schema E-R, tutti gli input della ristrutturazione sono noti.

• Si passa quindi alla ristrutturazione vera e propria, per determinare lo schema ristrutturato (output)

• La ristrutturazione consta di quattro fasi: analisi delle ridondanze, eliminazione delle generalizzazioni, partizionamento/accorpamento di entità ed associazioni, e scelta degli identificatori principali (chiavi)

Page 17: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 13

Page 18: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Analisi delle Ridondanze: si decide se eliminare o no eventuali ridondanze.

• Eliminazione delle Generalizzazioni: tutte le generalizzazioni vengono analizzate e sostituite da altro.

• Partizionamento/Accorpamento di entita’ ed associazioni: si decide se partizionare concetti in piu’ parti o viceversa accorpare.

• Scelta degli identificatori primari: si sceglie un identificatore per quelle entita’ che ne hanno piu’ di uno

Ristrutturazione – 14

Page 19: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Una Ridondanza in uno schema E-R è la presenza di un attributo che può essere ricavato da altri. In particolare, (vedi esempi nelle tabelle seguenti):

• Attributi derivabili da altri attributi della stessa entita’ (importo lordo nella tabella fattura)

• Attributi derivabili da attributi di altre entita’(o associazioni) (Acquisto: Importo totale da Prezzo )

• Attributi derivabili da operazioni di conteggio (Citta’: Numero abitanti contando il numero di Residenza )

• Associazioni derivabili dalla composizione di altre associazioni in presenza di cicli. (Docenza da Frequenza ed Insegnamento). Tuttavia i cicli non necessariamente generano ridondanze (Tesi al posto di Docenza).

Ristrutturazione – 15Analisi delle ridondanze

Page 20: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 16Analisi delle ridondanze

Page 21: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Vantaggi nell’avere e mantenere un dato derivabile: riduce gli accessi per calcolare il dato derivato.

• Svantaggi : occupazione di memoria e necessita’ di effettuare operazioni aggiuntive per mantenere il dato aggiornato

• Decisione: mantenere o eliminare? Basta confrontare i costi di esecuzione delle operazioni sull’oggetto

Ristrutturazione – 17Analisi delle ridondanze

Page 22: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Consideriamo l’esempio Citta’-Persona per l’anagrafica di una regione.

• Operazione 1: memorizza una persona nuova con la relativa citta’.

• Operazione 2: stampa tutti i dati di una citta’(incluso il numero di abitanti).

• Valutiamo gli indici di prestazione per l’attributo Numero Abitanti

Ristrutturazione – 18Analisi delle ridondanze

Page 23: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Si effettua una prima valutazione in presenza della ridondanza:

• Assumendo che il numero di abitanti richieda 4 byte il dato richiede 4*200 = 800 byte. L’operazione 1 richiede un accesso in scrittura a Persona uno in scrittura a Residenza ed uno in lettura ed uno in scrittura (per incrementare il numero di abitanti) a Citta’ ripetuto 500 volte si hanno 1500 accessi in scrittura e 500 in lettura. L’operazione 2 richiede un solo accesso in lettura a Citta’ 2 volte al giorno . Supponendo che la scrittura ha un costo doppio rispetto ad una lettura si hanno 3500 accessi al giorno in presenza della ridondanza.

Ristrutturazione – 19Analisi delle ridondanze

Page 24: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Si effettua una seconda valutazione in assenza della ridondanza:

• Per l’operazione 1 ,un accesso in scrittura a Persona ed uno in scrittura a Residenza per un totale di 1000 accessi in scrittura al giorno.Per l’operazione 2 abbiamo bisogno di un acceso in lettura a Citta’(possiamo trascurare) e 5000 accessi in lettura a Residenza in media (persone/citta’) per un totale di 10.000 accessi in lettura al giorno. Il totale e’ di 12000 accessi in lettura al giorno. Quindi 8500 in piu’ rispetto al caso di ridondanza contro meno di un solo Kbyte di memoria in piu’. D’altra parte se l’operazione 2 fosse stata richiesta solo 1 volta ogni 4 settimane avremmo avuto 3500*24=84000 accessi ogni 4 settimane con ridondanza contro 58000 in assenza.

Ristrutturazione – 20Analisi delle ridondanze

Page 25: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Il modello relazionale non permette di rappresentare gerarchie quindi conviene trasformarle in altri concetti.

Ristrutturazione – 21Eliminazione delle generalizzazioni

Page 26: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

La prima soluzione prevede l’accorpamento dei figli nel padre: le entita’ figlie vengono eliminate e le loro proprieta’ (attributi, associazioni, generalizzazioni) vengono aggiunte al padre, che deve avere in più un attributo (TIPO) per distinguere le entità figlie.

Ristrutturazione – 22Eliminazione delle generalizzazioni

Page 27: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

La seconda soluzione prevede l’accorpamento del padre nei figli: l’entita’ padre viene eliminata e per ereditarieta’ i suoi attributi, identificatori e relazioni vanno ai figli.

Ristrutturazione – 23Eliminazione delle generalizzazioni

Page 28: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

La terza soluzione prevede la sostituzione: la generalizzazione si trasforma in associazioni uno ad uno che legano padre e figli

Ristrutturazione – 24Eliminazione delle generalizzazioni

Page 29: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• I principi generali sono:• gli accessi si riducono separando

attributi di uno stesso concetto che vengono acceduti da operazioni diverse

• gli accessi si riducono raggruppando attributi di concetti diversi che vengono acceduti dalle medesime operazioni

Ristrutturazione – 25Partizionamento/accorpamento

Page 30: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 26Partizionamento/accorpamento

Esempio di partizionamento:

Page 31: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Nell’esempio precedente vengono create due entita’ e gli attributi vengono divisi: partizionamento verticale

• Se invece si suddivide in due entita’ con gli stessi attributi (ad esempio Analista e Venditore) con operazioni distinte sulle due si ha il partizionamento orizzontale

Ristrutturazione – 27Partizionamento/accorpamento

Page 32: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Un caso particolare di partizionamento è quello necessario per l’eliminazione di attributi multivalore, generalmente non supportati dal modello relazionale

Ristrutturazione – 28Partizionamento/accorpamento

Page 33: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 29Partizionamento/accorpamentoEsempio di partizionamento di

associazione:

Page 34: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione – 30Partizionamento/accorpamento

Esempio di accorpamento:

Page 35: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

L’accorpamento e’ giustificato se le operazioni piu’ frequenti su Persona richiedono sempre i dati relativi all’appartamento e quindi vogliamo risparmiare gli accessi alla relazione che li lega. Normalmente gli accorpamenti si fanno su relazioni uno ad uno, raramente su uno a molti mai su molti a molti.

Ristrutturazione – 31Partizionamento/accorpamento

Page 36: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Gli identificatori con valori nulli non possono essere principali (non garantiscono l’accesso a tutti i record).

• Un identificatore semplice (pochi attributi) e’ da preferire (indici piccoli fanno risparmiare memoria e facilitano la programmazione).

• Un identificatore interno e’ preferibile ad uno esterno (stesso motivo del precedente)

• Un identificatore usato da molte operazioni per accedere alle occorrenze di un’entita’ e’ da preferire (in quanto ottimizza il maggior numero di operazioni)

Ristrutturazione – 32Scelta degli identificatori

Page 37: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Nel caso di associazione molti a molti, la traduzione segue le regole:

• Ogni entita’ coinvolta si traduce in una relazione (tabella) con lo stesso nome dell’entità, avente i suoi stessi attributi e per chiave il suo identificatore.

• La relazione si traduce in una relazione (tabella) con lo stesso nome avente gli stessi attributi e come chiave l’insieme di tutti gli identificatori delle entita’ coinvolte.

Traduzione – 1Associazione molti a molti (m-n)

Page 38: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio:• Impiegato(Matricola,Cognome,Stipendio

)• Progetto(Codice,Nome,Budget)• Partecipazione(Matricola,Codice,Data

inizio)

Traduzione – 2 Associazione molti a molti (m-n)

Page 39: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

• Nell’esempio, esistono vincoli referenziali fra Matricola,Codice di Partecipazione e gli omonimi di Impiegato e Progetto.

• Per rendere piu’ comprensibile lo schema si possono rinominare gli attributi di partecipazione con Partecipazione(Impiegato, Progetto, Data inizio)

Traduzione – 3 Associazione molti a molti (m-n)

Page 40: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

In caso di relazioni ricorsive, la ridenominazione può essere indispensabile, come mostrato nell’esempio:

• Prodotto(Codice,Nome,Costo)• Composizione(Composto,Componente,Quantita’)• Esiste un vincolo referenziale tra

Composto,Componente e l’attributo Codice di Prodotto.

Traduzione – 4 Associazione molti a molti (m-n)

Page 41: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio di associazione molti a molti con più di due entità coinvolte (le regole sono le stesse):

• Fornitore(PartitaIVA,NomeDitta)• Prodotto(Codice,Genere), • Dipartimento(Nome,Telefono)• Fornitura(Fornitore,Prodotto,Dipartimento,Quantita’)

Traduzione – 5 Associazione molti a molti (m-n)

Page 42: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Traduzione – 6 Associazione uno a molti (1-n)• Nel caso di associazione uno a molti, la traduzione

segue le regole:• L’entita’ partecipante con cardinalità (1,1) si traduce

in una relazione (tabella) con lo stesso nome dell’entità, avente i suoi stessi attributi, per chiave il suo identificatore e che ingloba anche la chiave della entità che partecipa con cardinalità (1,n) (tale attributo diventa quindi una chiave esterna), più tutti gli eventuali attributi della associazione (che non avrà quindi una tabella distinta come nel caso m-n).

• L’entita’ partecipante con cardinalità (1,n) si traduce in una relazione (tabella) con lo stesso nome dell’entità, avente i suoi stessi attributi, per chiave il suo identificatore

Page 43: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Traduzione – 7 Associazione uno a molti (1-n)

Giocatore(Cognome,DataNascita,Ruolo,NomeSquadra,Ingaggio)Squadra(Nome,Citta’,ColoriSociali)

Vincolo di integrita’ referenziale tra Nomesquadra di Giocatore e Nome di Squadra.

Page 44: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio di entità con identificatore esterno (la regola ed il risultato sono ancora gli stessi):Studente(Matricola,NomeUniversita,Cognome,AnnoIscrizione

)Universita(Nome,Citta,Indirizzo)Vincolo referenziale fra NomeUniversita e Nome.

Traduzione – 8 Associazione uno a molti (1-n)

Page 45: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Traduzione – 9 Associazione uno a uno (1-1)• Nel caso di associazione uno a uno con

partecipazione obbligatoria per entrambe le entità (non (0,1) ma (1,1)), la traduzione segue le regole:

• Una delle entita’ si traduce in una relazione (tabella) con lo stesso nome dell’entità, avente i suoi stessi attributi, per chiave il suo identificatore e che ingloba anche la chiave della altra entità (tale attributo diventa quindi una chiave esterna), più tutti gli eventuali attributi della associazione (come nel caso 1-n, l’associazione non avrà una tabella distinta).

• L’entita’ restante si traduce in una relazione (tabella) con lo stesso nome dell’entità, avente i suoi stessi attributi, per chiave il suo identificatore

Page 46: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

In base alle regole, sono possibili due soluzioni:Direttore(Codice,Cognome,Stipendio,DipartimentoDiretto,InizioDirezione) Dipartimento(Nome,Telefono,Sede) oppureDirettore(Codice,Cognome,Stipendio) Dipartimento(Nome,Telefono, Sede, Direttore, InizioDirezione)Esiste in teoria l’opzione di fondere tutto in un’unica tabella; tale opzione viene però scartata perché se in sede di progettazione concettuale era stato deciso di avere due entità legate da una relazione, diventa inopportuno tornare indietro in sede di progettazione logica.

Traduzione – 10 Associazione uno a uno (1-1)

Page 47: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Qualora una delle entità partecipi alla associazione con cardinalità (0,1) ossia è un’entità con partecipazione opzionale, delle due soluzioni si preferisce quella in cui la associazione viene inglobata dall’altra entità (quella che partecipa con cardinalità (1,1)), questo per evitare i valori nulli che figurerebbero negli attributi relativi all’associazione qualora venissero inglobati nell’entità che partecipa con cardinalità (0,1):

Impiegato(Codice,Cognome,Stipendio) Dipartimento(Nome,Telefono,Sede, Direttore,InizioDirezione)

Traduzione – 11 Associazione uno a uno (1-1)

Page 48: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Traduzione – 12 Associazione uno a uno (1-1)

Per entrambe le entità con partecipazione opzionale, l’associazione può essere tradotta in una tabella distinta (come per il caso m-n):

Impiegato(Codice,Cognome,Stipendio) Dipartimento(Nome,Telefono,Sede)

Direzione(Direttore,Dipartimento,DataInizioDirezione)Questo sempre per evitare valori nulli negli attributi relativi all’associazione.Lo svantaggio è avere una tabella in più, quindi questa soluzione conviene solo se le entità partecipano “poco” all’associazione, in tal caso infatti sarebbero molti i valori nulli e quindi è meglio avere una tabella distinta per l’associazione, altrimenti l’associazione può essere inglobata sull’entità che partecipa di più (per ridurre il numero dei valori nulli).

Page 49: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Traduzione – 13

Schema Riassuntivo delle traduzioni

Page 50: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Traduzione – 14

Schema Riassuntivo delle traduzioni

Page 51: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Il risultato della progettazione logica è l’insieme di schema logico (elenco tabelle), vincoli di integrità (che si accompagnano alle tabelle), e della documentazione.I vincoli di integrità possono essere rappresentati in maniera grafica:

Traduzione – 15

Page 52: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio di progettazione logica - 1

Page 53: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Elenco delle operazioni:• Operazione 1 :inserisci un nuovo partecipante con dati.• Operazione 2 :assegna partecipante a corso.• Operazione 3 :inserisci docente con dati e corsi che puo’ insegnare.• Operazione 4 :assegna un docente abilitato ad un’edizione di corso.• Operazione 5 :stampa informazioni su edizioni correnti di un corso

con titolo,orari lezioni e numero partecipanti.• Operazione 6 :stampa tutti i corsi offerti con informazioni sui docenti

che possono insegnarli.• Operazione 7 :per ogni docente trova i partecipanti a tutti i corsi da

lui insegnati.• Operazione 8 :effettua una statistica su tutti i partecipanti ad un corso

con tutte le informazioni su di essi, sull’edizione alla quale hanno partecipato e la relativa votazione.

Esempio di progettazione logica - 2

Page 54: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Ristrutturazione:• Analisi delle Ridondanze• Eliminazione delle gerarchie• Partizionamento/Accorpamento • Scelta degli identificatori• Traduzione verso il Relazionale

Esempio di progettazione logica - 3

Page 55: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio di progettazione logica - 4

Page 56: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio di progettazione logica - 5

Page 57: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Analisi delle ridondanze:• Numero di Partecipanti in Edizione

Corso puo’ essere derivato dall’associazione Partecipazione Attuale.

• Questo richiede 4* 1.000 = 4.000 bytes• Le operazioni che coinvolgono Numero

di Partecipanti sono 2,5 e 8 (trascurabile perche’non frequente e batch)

Esempio di progettazione logica - 6

Page 58: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Analisi delle ridondanze:Con Ridondanza: per l’operazione 2 si hanno

2*50 = 100 accessi in lettura ed altrettanti in scrittura (che valgono doppio) al giorno, mentre per la 5, 19*10 = 190 in lettura al giorno per un totale di 490 accessi in lettura .

• Senza Ridondanza: per l’operazione 2 si hanno 50 accessi in lettura ed altrettanti in scrittura al giorno, mentre per la 5, 29*10 = 290 in lettura al giorno per un totale di 440 accessi in lettura .

• Quindi si elimina la ridondanza.

Esempio di progettazione logica – 7

Page 59: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Eliminazione delle gerarchie:• Docenti: le operazioni che li riguardano (3,6 e 7) non fanno

riferimento al fatto che sia Collaboratore o Dipendente quindi si accorpano i figli nel padre

• Partecipanti: le operazioni che li riguardano (1, 8) non fanno distinzioni tra professionisti e dipendenti (pubblici o privati). Tuttavia dalla tavola dei volumi risulta che la maggior parte dei partecipanti sono dipendenti privati e che gli altri due tipi hanno attributi propri. Quindi per risparmiare memoria e’ opportuno: 1) Eliminare Dipendente Privato aggiungendo un attributo Privato a Partecipante 2) Lasciare le due entita’ Dipendente Pubblico e Professionista aggiungendo due associazioni uno-ad-uno con Partecipante. Cosi’ si evita di avere attributi nulli su Partecipante .

Esempio di progettazione logica - 8

Page 60: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Partizionamento/Accorpamento:• Edizione di Corso: l’operazione 5 riguarda solo le edizioni

attuali;Docenza Attuale e Partecipazione Attuale fanno riferimento solo a queste edizioni. Quindi si potrebbe pensare di partizionare orizzontalmente in edizioni attuali e passate.Tuttavia le associazioni Composizione e Tipologia andrebbero duplicate e le operazioni 7 ed 8 che non fanno distinzione fra le varie edizioni risulterebbero piu’ costose (raddoppio delle entita’).Quindi non partizioniamo.

• Docenza Passata e Docenza Attuale , Partecipazione Passata e Partecipazione Attuale: le operazioni 7 ed 8 non fanno differenza. Inoltre non e’ necessario, quando termina un’edizione di corso, trasferire le occorrenze di un’associazione (attuale) all’altra (passata). Per l’accorpamento delle partecipazioni c’e’ solo l’inconveniente che Votazione si applica solo alle passate e provoca valori nulli. Tuttavia la tabella dei volumi ci dice che sprechiamo solo 4*500 bytes = 2Kbytes. Decidiamo di accorpare le due relazioni.

Esempio di progettazione logica - 9

Page 61: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Scelta degli identificatori:• Solo Partecipante ha due identificatori:codice fiscale e

codice interno. Scegliamo il secondo perche’ richiede solo 3 byte(deve distinguere 5000 elementi) invece che 16.

• Osserviamo (pragmaticamente) che Edizione Corso e’ identificata da Data Inizio e dall’entita’ Corso. Questo pesante identificatore deve essere usato per realizzare due associazioni (Partecipazione e Docenza) con molte occorrenze. Tuttavia ogni corso ha un codice e che in media il numero di sue edizioni e’ 5. Quindi basta aggiungere una cifra al codice di un corso per avere anche l’edizione. Quindi definiamo un nuovo identificatore per Edizione Corso che sostituisce quello esterno.

Eliminiamo infine l’attributo multivalore Telefono dall’entita’ Docente introducendo un’opportuna relazione (Interesse)

Esempio di progettazione logica - 10

Page 62: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Esempio di progettazione logica - 11

Page 63: Basi di Dati prof. A. Longheu 6 – Progettazione Logica Cap. 7 Basi di dati Atzeni – Ceri – Paraboschi - Torlone

Schema logico (elenco tabelle):• Edizione(Codice,DataInizio,DataFine,CodCorso)• Lezione (Ora,Aula,Giorno,CodEdCorso)• Docente(CF,Cognome,Eta’,Citta’Nascita,Tipo)• Telefono (Numero,CFDocente)• Corso(Codice,Nome)• Docenza (CodEdCorso,CFDocente)• Abilitazione (CodCorso,CFDocente)• Partecipante (Codice,CF,Cognome,Eta’,Citta’Nascita,Sesso,Societa’)• Societa’(Nome,Telefono,Indirizzo)• Dipendenza (CodPartecipante,NomeSocieta’)• Professionisti (CodPartecipante,Area,Titolo)• DipPubblici (CodPartecipante,Livello,Posizione)

Esempio di progettazione logica – 12