Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base...

28
Laboratorio di Basi di Dati Esercizi di progettazione concettuale e logica Parte di questi lucidi è tratta da una versione precedente di Marco Mesiti, Stefano Valtolina, Daniele Riboni e Sergio Mascetti Anno accademico 2016-2017 Paolo Perlasca

Transcript of Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base...

Page 1: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

Laboratorio di Basi di Dati

Esercizi di progettazione concettuale e logica

Parte di questi lucidi è tratta da una versione precedente di Marco Mesiti, Stefano Valtolina, Daniele Riboni e Sergio Mascetti

Anno accademico 2016-2017

Paolo Perlasca

Page 2: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

2

Prima parte: Ripasso sulla progettazione logica

Page 3: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

3

Dalla progettazione concettuale a quella logica

n  Progettazione concettuale:

n  analisi del problema in oggetto che non considera la soluzione per risolvere il problema

n  Con la progettazione logica iniziamo a considerare come verrà risolto il problema

n  Due passaggi principali:

n  ristrutturazione dello schema ER

n  realizzazione del modello relazionale

Page 4: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

4

Ristrutturazione dello schema ER

n  Lo schema ER ristrutturato tiene conto non solo del problema in oggetto, ma anche della soluzione

n  E’ orientato al modello logico che vogliamo utilizzare

n  Quattro fasi:

n  analisi delle ridondanze

n  eliminazione delle gerarchie

n  partizionamento/accorpamento di entità/relationship

n  scelta degli identificatori primari

Page 5: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

5

Il modello relazionale

n  Descrive come verrà realizzata la base di dati:

n  è una descrizione astratta, cioè non è specifica per un particolare DBMS

n  Idea di base:

n  le entità diventano relazioni

n  con gli stessi attributi

n  le associazioni diventano relazioni o attributi di altre relazioni

n  La loro traduzione dipende dai vincoli di cardinalità imposti sull’associazione stessa

Page 6: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

6

Seconda parte: Esercizi di progettazione logica

Page 7: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

7

Esercizio videoteca

n  Considera:

n  la documentazione descrittiva sulla videoteca (tratta dalla lezione scorsa)

n  il diagramma ER che avevamo realizzato

n  Svolgi gli esercizi:

n  Ristruttura il diagramma ER

n  Traduci in un modello relazionale

n  Per ora ignoriamo il carico di lavoro sul DBMS

Page 8: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

8

Documentazione descrittiva

Videoteca. Vogliamo realizzare una base di dati per una videoteca. La videoteca consente il noleggio di circa 1000 film.

Film. Per ogni film, vogliamo memorizzare il titolo, il nome e il cognome del regista, l'anno di produzione, il genere e la valutazione della critica (espressa in una scala di valori decimali tra 0 e 5, estremi inclusi), se presente.

Video. Ogni film è disponibile per il noleggio in un certo numero di video (dove video possono essere cassette o DVD). Ogni video disponibile nella videoteca (circa 3000) è identificato da un codice di collocazione e dal tipo di supporto (videocassetta o dvd).

Clienti. La base di dati dovrà inoltre memorizzare informazioni sui clienti della videoteca (circa 2000) [...]. Per ogni cliente della videoteca vogliamo mantenere il suo nome, cognome, data di nascita, residenza (intesa come città, via, numero civico e cap) e uno o più 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). Ogni cliente può inoltre consigliare dei film ad altri clienti, esprimendo per essi un giudizio (espresso in una scala di valori decimali tra 0 e 5, estremi inclusi).

Noleggio. La base di dati dovrà inoltre memorizzare informazioni […] sui video che [gli utenti] hanno correntemente in noleggio o che hanno noleggiato. Il numero di noleggi giornalieri alla videoteca è circa 200. Per ogni noleggio, vogliamo memorizzare la data (giorno, mese, anno) in cui il noleggio è stato effettuato e, per i noleggi conclusi, la data (giorno, mese, anno) di restituzione.

Punti. 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 (cioè uno sconto in percentuale). 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

Page 9: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

9

Schema ER

Cliente

Video

(1,1)

Contiene

Fi lm

Standard VIP

bonusptiMancanti

(0,n)

(0,n)

valutaz (0,1)

anno

colloc

nomecognome

dataN

telefono(1,n) codCli residenza

città via no cap

DVD

VHS

Noleggio

dataRest (0,1) dataNol

Effettua

RelativoA

(1,1)

(0,n) (1,1)

Consiglia

giudizio

(0,n)

(0,n)

ti tolo regista

genere

Page 10: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

10

Analisi delle ridondanze

n  Occorre individuare

n  La presenza di attributi derivabili da altri attributi o associazioni

n  Se esistono associazioni che possono essere ottenute attraverso altre associazioni

Page 11: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

11

Eliminazione generalizzazione

n  Ci sono due generalizzazioni: video e cliente

n  Per ogni generalizzazione si possono avere tre scelte possibili:

n  Accorpamento delle figlie nel genitore

n  Accorpamento del genitore nella generalizzazione delle figlie

n  Sostituzione della generalizzazione con associazioni

n  Come si sceglie?

n  analizzando la presenza di associazioni che coinvolgono le entità (padre e figlie) e il tipo di generalizzazione

n  analizzando il carico di lavoro

n  in questo esercizio però non lo facciamo

Page 12: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

12

Partizionamento/accorpamento di concetti

n  Questa fase dipende fortemente dall’analisi delle prestazioni che vedremo nella prossima lezione.

n  Possiamo però ristrutturare gli attributi multivalore

n  quali attributi multivalore ci sono?

n  come li ristrutturi?

Page 13: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

13

Scelta degli identificatori principali

n  In quali casi è necessario effettuare una scelta?

n  Quale identificatore principale scegli in ogni caso?

n  motiva la risposta

Page 14: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

14

Traduzione verso il modello relazionale

n  Prova a tradurre lo schema ER nel modello relazionale:

n  traduci le entità

n  traduci le associazioni

Page 15: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

15

Esercizio Università

n  Considera:

n  la documentazione descrittiva sull’università (tratta dalla lezione scorsa)

n  il diagramma ER che avevamo realizzato

n  Svolgi gli esercizi:

n  Ristruttura il diagramma ER

n  Traduci in un modello relazionale

n  Per ora ignoriamo i problemi di prestazioni

Page 16: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

16

Documentazione descrittiva

Si vogliono gestire i corsi offerti da un corso di laurea. I corsi sono caratterizzati dal nome e dal corso di laurea in cui vengono tenuti. Inoltre, si vuole mantenere il semestre in cui vengono erogati. Ogni corso è tenuto da un professore e deve avere una commissione di valutazione formata da almeno 3 e non più di 5 professori (compreso il docente del corso). Per ogni professore si vuole mantenere nome, cognome e data di nascita. I professori sono sempre docenti di almeno un corso. Non ci possono essere due professori con lo stesso nome, cognome e data di nascita. Ogni corso può essere propedeutico ad altri corsi. Gli studenti si iscrivono ad un corso di laurea e devono sostenere gli esami dei corsi da esso offerti. Di ogni studente si vogliono mantenere la matricola, il codice fiscale, nome, cognome, eventuali numeri di telefono e l’indirizzo (via e città). Di ogni esame si vuole memorizzare il voto e la data in cui viene superato. Per ogni corso uno studente è seguito da un tutor. Un tutor è uno studente che ha già sostenuto con esito positivo tale esame. Del tutor si vuoi sapere il nome e l’orario di ricevimento.

Page 17: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

17

Ristruttura il diagramma ER

n  analisi delle ridondanze

n  eliminazione delle gerarchie

n  partizionamento/accorpamento di entità/relationship

n  scelta degli identificatori primari

Page 18: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

18

Traduzione verso il modello relazionale

n  Prova a tradurre lo schema ER nel modello relazionale:

n  traduci le entità

n  traduci le associazioni

Page 19: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

19

Terza parte: Esercizi di progettazione concettuale

e logica

Page 20: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

20

Esercizio 1

b)  Quali delle seguenti affermazioni sono vere?

1)  Ci possono essere 2 lunapark con lo stesso nome ma in località diverse.

2)  Un gioco è offerto da un solo lunapark. 3)  I giochi devono avere tutti nomi distinti. 4)  Non è detto che un lunapark offra un gioco. 5)  Uno stesso lunapark può offrire tanti giochi. 6)  Lo stesso gioco può essere offerto dallo stesso lunapark

in date diverse?

Direttore Data_fondazione

GIOCHI LUNA PARK

Nome

(1,N) (1,N) OFFRE

Località Nposti

Difficoltà

Nome dataAcquisto Data

Page 21: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

21

Esercizio 2

Direttore Data_fondazione

GIOCHI LUNA PARK

Nome

(1,N) (1,N) OFFRE

Località Nposti

Difficoltà

Nome dataAcquisto Data

Tradurre lo schema ER nel corrispondente schema relazionale

Page 22: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

22

Esercizio 3 n Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base di dati per una compagnia di taxi. Un taxi è caratterizzato dalla targa, il tipo di macchina e il nome in codice. Ogni macchina è caratterizzata da una capienza. Ai taxi sono associati gli autisti, ognuno caratterizzato dai suoi dati anagrafici, da un codice e dall’indirizzo dell’abitazione. I clienti telefonano alla sede centrale per richiedere un taxi. La sede centrale assegna un taxi alle richieste dei clienti. Nella richiesta viene specificato il nome del cliente, il luogo e l’ora in cui desidera il taxi e la destinazione richiesta. Al termine della corsa, al cliente viene consegnata una ricevuta per l’importo della corsa. Sulla ricevuta sono indicati il nome del cliente, il codice del taxi, il luogo e l’ora sia della partenza che dell’arrivo, la distanza percorsa e l’importo pagato. Ad ogni ricevuta deve corrispondere una prenotazione, ma il viceversa può non essere vero.

Page 23: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

23

Esercizio 3

n Il primo passo è effettuare la disambiguazione del testo. Cioè rivedere la specifica per renderla più chiara con l’ausilio del committente

Page 24: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

24

Esercizio 3

n Dopodiché il testo viene diviso in frasi in modo da evidenziare i concetti che sono presenti

Page 25: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

25

Esercizio 3

n Dopodiché si procede nell’individuare le entità del dominio e le associazioni e si produce uno scheletro dello schema

Page 26: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

26

Progettazione concettuale

n  Realizza lo schema ER e indica i vincoli non esprimibili nello schema ER

Page 27: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

27

Progettazione logica

n  Ristruttura lo schema ER e realizza lo schema relazionale

n  Indica se ci sono vincoli non esprimibili dallo schema relazionale

Page 28: Laboratorio di Basi di Dati - Home di homes.di.unimi.it · Effettuare la progettazione di una base di dati a partire dal seguente documento di specifica: Si vuole realizzare una base

28

Documentazione descrittiva

n  Si rappresenti la base di dati di un archivio per la gestione degli ordini e delle giacenze di una società di vendita di prodotti.

n  Ogni azienda identifica internamente i propri prodotti tramite un codice. Aziende diverse possono usare gli stessi codici, ognuna per i propri prodotti. L’azienda è identificata da un codice fiscale (CF); se ne conosce la sigla e il telefono. Per ogni prodotto si indica il prezzo e una descrizione. Ogni prodotto può essere soltanto un prodotto lavorato (in questo caso si indica anche il colore) o una materia prima. I prodotti sono stoccati in un magazzino, identificato da indirizzo e stanza; se ne conosce eventualmente la metratura. Si conosce la quantità di prodotto che è stoccata in un certo magazzino.

n  I prodotti possono essere ordinati da altre aziende e da persone fisiche. Delle persone si conosce il CF, nome, cognome e indirizzo. Per ogni ordine si indica la quantità di prodotto e la data in cui è stata ordinata. Di ogni azienda si conosce il responsabile e i suoi dati (CF, nome, cognome, telefono e indirizzo).