Corso di Basi di Dati
Progettazione di Database:
Esercizi
Home page del corso:
http://www.cs.unibo.it/~difelice/dbsi/
Esercizio 0
Si vuole realizzare una base di dati per la gestione di
un’agenzia immobiliare
 L’agenzia tratta immobili. Ogni immobile dispone di un
indirizzo (univoco), un data di vendita, una metratura, un
prezzo.
 Gli immobili appartengono a clienti dell’agenzia. Di ogni
cliente si vuole memorizzare nome, cognome, data di
nascita, indirizzo di residenza (strada, via, CAP)
 Di ogni immobile si vogliono memorizzare le proposte di
acquisto. Le proposte hanno una data, un prezzo, una
validita’ ed un nome di compratore.
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
 Ogni cliente dispone di almeno un account. Ogni
account e’ collegato al piu’ ad un cliente.
CLIENTE
TITOLARE
(?,?)
(?,?)
ACCOUNT
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
 Ogni cliente dispone di almeno un account. Ogni
account e’ collegato al piu’ ad un cliente.
CLIENTE
TITOLARE
1,N
0,1
ACCOUNT
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
 Un cliente puo’ disporre o meno di
un’assicurazione sulla vita. Ogni assicurazione e’
associata ad uno ed un solo cliente intestatario.
CLIENTE
ASSICURAZIONE
INTESTATARIO
(?,?)
(?,?)
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
 Un cliente puo’ disporre o meno di
un’assicurazione sulla vita. Ogni assicurazione e’
associata ad uno ed un solo cliente intestatario.
CLIENTE
(0,1)
INTESTATARIO
(1,1)
ASSICURAZIONE
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
 Un ristorante puo’ avere piu’ fornitori. Ogni
fornitore puo’ servire piu’ ristoranti.
RISTORANTE
FORNITORE
GESTIONE
(?,?)
(?,?)
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
 Un ristorante puo’ avere piu’ fornitori. Ogni
fornitore puo’ servire piu’ ristoranti.
RISTORANTE
FORNITORE
GESTIONE
(1,N)
(1,N)
Esercizio 2
Modellare con uno schema E-R il caso seguente.
 Un cinema e’ identificato da un indirizzo (via, nr
civico, citta’) e da un nome. Dispone di un
recapito telefonico. Ogni cinema e’ composto da
un certo insieme di sale. Ogni sala dispone di un
nome (univoco per quel cinema), una capienza
massima e di un numero di uscite.
Esercizio 2
Modellare con uno schema E-R il caso seguente.
 Un condominio e’ composto di appartamenti. Ogni appartamento
dispone di un numero interno, una scala ed una metratura. Gli
appartamenti possono essere di due tipi: uffici o abitazioni. Dei primi si
vuole sapere il nome della societa’ proprietaria ed il numero di persone
che vi operano. Dei secondi si vuole conoscere la rendita catastale e la
classe di certificazione energetica. Inoltre, per le abitazioni si vuole
conoscere la lista degli inquilini (nome/cognome/codice fiscale/anno
nascita) che vi abitano. Gli inquilini possono essere proprietari o
affittuari. Dei primi si vuole memorizzare la quota annua di spese
condominiali.
Esercizio 2
Considerando la seguente tabella dei volumi:
 Numero medio di appartamenti: 20
 Numero medio di inquilini per appartamento: 4
E le seguenti operazioni sui dati:
 Inserire un nuovo inquilino ed associarlo ad un dato
appartamento. (10 volte/anno)
 Per ogni appartamento, visualizzare la informazioni di tutti
gli inquilini con meno di 50 anni presenti. (200 volte/anno).
Q. Definire il costo dello schema E-R.
Esercizio 2
Considerando la seguente tabella dei volumi:
 Numero medio di appartamenti: 20
 Numero medio di inquilini per appartamento: 4
E le seguenti operazioni sui dati:
 Inserire un nuovo inquilino ed associarlo ad un dato
appartamento. (10 volte/anno)
 Per ogni appartamento, visualizzare la informazioni di tutti
gli inquilini con meno di 50 anni presenti. (200 volte/anno).
Q. Come posso ottimizzare lo schema?
Esercizio 2.b (per casa)
Modellare con uno schema E-R il caso seguente.
Si vuole progettare una base di dati per gestire uno store online di applicazioni mobili. Ogni applicazione dispone di
un nome (univoco), una categoria, un anno di pubblicazione, una dimensione ed un prezzo. Inoltre, per ciascuna
app si vuole tenere traccia della lista di aggiornamenti rilasciati. Ogni aggiornamento dispone di un numero
(progressivo per quell’app), una data, una dimensione, ed una descrizione. Si vogliono poi gestire le informazioni
relative agli utenti che possono accedere allo store. Ogni utente dispone di un identificativo (univoco), un’email ed
un recapito telefonico. Sono previste due categorie di utenti: sviluppatori ed acquirenti. Ogni app e’ associata ad un
utente sviluppatore che ne ha curato la realizzazione e l’upload sul sito. Gli utenti sviluppatori dispongono di Partita
Iva e Codice Fiscale, e possono essere a loro volta di due tipi: software house o programmatori singoli. Delle prime
si vuole memorizzare nome e sede legale (via/ncivico/citta’/cap). Dei secondi si vuole memorizzare nome,
cognome, ed anno di nascita. Gli utenti acquirenti possono fare acquisti di app presenti nello store. A tal proposito,
essi dispongono di una o piu’ carte di credito, di cui si vogliono memorizzare numero, data di scadenza, e tipologia
(es. VISA). Si vuole tenere traccia dello storico degli acquisti operati da ciascun acquirente. Ogni acquisto dispone
di un codice (univoco) ed una data, puo’ includere piu’ prodotti (ossia piu’ app mobili) ed e’ collegato ad una carta
di credito dell’acquirente. Infine, si vuole fornire la possibilita’ agli utenti (sia acquirenti sia sviluppatori) di inserire
commenti sulle applicazioni presenti nello store. Ogni commento dispone di una data, un testo, ed una valutazione
(un numero tra 0 e 5), e’ inserito da un utente, e fa riferimento ad un’ app mobile dello store.
Esercizio 3
Si vuole realizzare una base di dati per la gestione di un
programma di eventi teatrali.
 Il programma e’ composto da eventi. Ogni evento ha un nome,
un’edizione, una data e si tiene in una o piu’ sale del teatro.
 Ogni sala e’ identificata da un codice univoco e caratterizzata da
nome, indirizzo e capienza massima, numero di posti a sedere.
 Gli eventi sono di due tipi: concerti o rappresentazioni teatrali.
 Per le rappresentazioni, si vuole tenere traccia del nome dell’opera e
del direttore.
 Ogni concerto e’ identificato da un codice numerico, ha un titolo ed
una descrizione, ed e’ composto da un certo numero di pezzi.
 Ogni pezzo ha un titolo, uno o piu’ autori ed una data di
composizione
CONTINUA 
Esercizio 3
 Ogni pezzo e’ eseguito da un esecutore.
 Ogni esecutore ha un codice univoco ed un nome. Inoltre, per ogni
esecutore, si vuole tenere traccia dei concerti predentemente eseguiti
in quel teatro
 Gli esecutori possono essere di due tipi: solisti ed orchestre
 Per l’orchestra si vuole tenere traccia del nome del direttore,
dell’insieme degli strumenti, e del nome di ciascun componente
dell’orchestra.
Costruire il modello E-R del sistema descritto …
Esercizio 4
 Tradurre l’E-R nel modello relazionale …
Esercizio 5
 Tradurre l’E-R nel modello relazionale …
Esercizio 6
 Tradurre l’E-R nel modello relazionale …
Esercizio 7
-
Nome
100 Pazienti
300 Cure (3 in media per Paziente)
20 Medici
500 Farmaci
Ogni cura e’ composta in media da 5 farmaci
Codice
PAZIENTE
(0,N)
R1
Cognome
MEDICO
(0,N) Reparto
R2
(1,1)
(1,1)
CURA
(1,N)
Nome
Cognome
Data
Inizio
Determinare il costo dell’operazione (10v/gg):
R3
(0,N)
 Dato un paziente, visualizzare tutte le
FARMACO
le informazioni relative ad i farmaci Composizione
assunti in ogni cura (a=2, wI=1).
Nome
Prezzo
Durata
Esercizio 7
-
Nome
100 Pazienti
300 Cure (3 in media per Paziente)
20 Medici
500 Farmaci
Ogni cura e’ composta in media da 3 farmaci
Codice
PAZIENTE
(0,N)
R1
Cognome
MEDICO
(0,N) Reparto
R2
(1,1)
(1,1)
CURA
(1,N)
Nome
Cognome
Data
Inizio
Determinare il costo dell’operazione (1v/gg):
R3
(0,N)
 Dato un paziente ed una cura, aggiungere
FARMACO
un farmaco ad una cura
Composizione
(a=2, wI=1).
Nome
Prezzo
Durata
Esercizio 7
-
Nome
100 Pazienti
300 Cure (3 in media per Paziente)
20 Medici
500 Farmaci
Ogni cura e’ composta in media da 3 farmaci
Codice
PAZIENTE
(0,N)
R1
Cognome
MEDICO
(0,N) Reparto
R2
(1,1)
(1,1)
CURA
(1,N)
Nome
Cognome
Data
Inizio
Determinare il costo dell’operazione (1v/gg):
R3
(0,N)
 Rimuovere un medico, e tutte le cure
FARMACO
da lui prescritte (a=2, wI=1).
Composizione
Nome
Prezzo
Durata
Esercizio 7
-
Nome
100 Pazienti
300 Cure (3 in media per Paziente)
20 Medici (ognuno prescrive in media 15 cure)
500 Farmaci
Ogni cura e’ composta in media da 3 farmaci
Codice
PAZIENTE
(0,N)
R1
Cognome
MEDICO
(0,N) Reparto
R2
(1,1)
(1,1)
CURA
(1,N)
Nome
Data
Inizio
Cognome
 Tradurre lo schema E-R nel modello
relazionale.
Composizione
R3
(0,N)
FARMACO
Nome
Prezzo
Durata
Esercizio 7
-
Nome
100 Pazienti
300 Cure (3 in media per Paziente)
20 Medici (ognuno prescrive in media 15 cure)
500 Farmaci
Ogni cura e’ composta in media da 3 farmaci
Codice
PAZIENTE
(0,N)
R1
Cognome
MEDICO
(0,N) Reparto
R2
(1,1)
(1,1)
CURA
(1,N)
Nome
Cognome
Data
Inizio
R3
(0,N)
 Come cambia la traduzione
se si elemina l`attributo Reparto
FARMACO
Composizione
dell`entita’ MEDICO?
Nome
Prezzo
Durata
Esercizio 8 (NORMALIZZAZIONE)
Dato il seguente schema, valutare se esso puo’ generare
RINDONDANZE LOGICHE o meno.
Comune
Regione
Prefisso
Bologna
Emilia-Romagna
051
Milano
Lombardia
02
Piacenza
Emilia-Romagna
0523
Castro
Bergamo
035
Castro
Lecce
0832
Cosenza
Calabria
0984
Esercizio 8 (NORMALIZZAZIONE)
Dato il seguente schema, valutare se esso puo’ generare
RINDONDANZE LOGICHE o meno.
NomeFilm
Regista
Nascita Regista
Copia
Collocazione
Odissea nello
spazio
Kubrik
26/7/1928
1
HC1234
C’era una volta Leone
in America
3/1/1929
1
LF3434
Il Padrino
Coppola
7/4/1939
1
LF2312
Odissea nello
spazio
Kubrik
26/7/1928
2
LF6437
Barry Lyndon
Kubrik
26/7/1928
1
HC1212
Il Padrino
Coppola
7/4/1939
2
HC2144
Esercizio 9 (NORMALIZZAZIONE)
Dato il seguente schema: R(ABCDE), con le
seguenti dipendenze funzionali:
AB, AC, DE
a) Verificare (formalmente) se ADE e’ superchiave
o meno della relazione R.
b) Verificare (formalmente) se ADE e’ CHIAVE o
meno della relazione R. Giustificare la risposta.
Esercizio 9 (NORMALIZZAZIONE)
Dato il seguente schema: R(ABCDE), con le
seguenti dipendenze funzionali:
AB, AC, DE
c) La relazione e’ in forma normale di Boyce e Codd
(FNBC)? E’ in terza forma normale (3FN)?
d) Nel caso la relazione non risulti in 3FN,
decomporla in terza forma normale.
Esercizio 10 (NORMALIZZAZIONE)
Dato il seguente schema: R(ABCDE), con le
seguenti dipendenze funzionali:
F={CAB, BC DE, DB}
a) La relazione e’ in forma normale di Boyce e Codd
(FNBC)? E’ in terza forma normale (3FN)?
b) Nel caso la relazione non risulti in 3FN,
decomporla in terza forma normale.
Esercizio 11 (NORMALIZZAZIONE)
PRODUZIONE(CodiceComponente,
CodiceProdotto,
PrezzoProdotto,
ResponsabileSede)
Fornitore,
SedeProduzione,
 CodiceComponente Fornitore  SedeProduzione
 CodiceProdotto  PrezzoProdotto SedeProduzione
 SedeProduzione  ResponsabileSede
 Se effettuo la decomposizione in:
R1(CodiceComponente, Fornitore, SedeProduzione)
R2 (CodiceProdotto, PrezzoProdotto, SedeProduzione)
R3(SedeProduzione,ResponsabileSede)
Q.1  R1, R2 ed R3 sono in terza forma normale?
Esercizio 11 (NORMALIZZAZIONE)
PRODUZIONE(CodiceComponente,
CodiceProdotto,
PrezzoProdotto,
ResponsabileSede)
Fornitore,
SedeProduzione,
 CodiceComponente Fornitore  SedeProduzione
 CodiceProdotto  PrezzoProdotto SedeProduzione
 SedeProduzione  ResponsabileSede
 Se effettuo la decomposizione in:
R1(CodiceComponente, Fornitore, SedeProduzione)
R2 (CodiceProdotto, PrezzoProdotto, SedeProduzione)
R3(SedeProduzione,ResponsabileSede)
Q.2  La decomposizione conserva le dipendenze?
Esercizio 11 (NORMALIZZAZIONE)
PRODUZIONE(CodiceComponente,
CodiceProdotto,
PrezzoProdotto,
ResponsabileSede)
Fornitore,
SedeProduzione,
 CodiceComponente Fornitore  SedeProduzione
 CodiceProdotto  PrezzoProdotto SedeProduzione
 SedeProduzione  ResponsabileSede
 Se effettuo la decomposizione in:
R1(CodiceComponente, Fornitore, SedeProduzione)
R2 (CodiceProdotto, PrezzoProdotto, SedeProduzione)
R3(SedeProduzione,ResponsabileSede)
Q.3  La decomposizione e’ senza perdita di informazioni?
Esercizio 11 (NORMALIZZAZIONE)
PRODUZIONE(CodiceComponente,
CodiceProdotto,
PrezzoProdotto,
ResponsabileSede)
Fornitore,
SedeProduzione,
 CodiceComponente Fornitore  SedeProduzione
 CodiceProdotto  PrezzoProdotto SedeProduzione
 SedeProduzione  ResponsabileSede
 Se effettuo la decomposizione in:
R1(CodiceComponente, Fornitore, SedeProduzione)
R2 (CodiceProdotto, PrezzoProdotto, SedeProduzione)
R3(SedeProduzione,ResponsabileSede)
Q.4  Decomporre lo schema in Terza Forma Normale (TFN).
Scarica

PPT