corso di basi di dati progettazione di database: esercizi home page del corso: difelice/dbsi
TRANSCRIPT
![Page 1: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/1.jpg)
Corso di Basi di Dati
Progettazione di Database: Esercizi
Home page del corso:
http://www.cs.unibo.it/~difelice/dbsi/
![Page 2: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/2.jpg)
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.
![Page 3: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/3.jpg)
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 ACCOUNTTITOLARE(?,?) (?,?)
![Page 4: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/4.jpg)
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 ACCOUNTTITOLARE1,N 0,1
![Page 5: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/5.jpg)
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 ASSICURAZIONEINTESTATARIO
(?,?) (?,?)
![Page 6: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/6.jpg)
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 ASSICURAZIONEINTESTATARIO
(0,1) (1,1)
![Page 7: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/7.jpg)
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
Un ristorante puo’ avere piu’ fornitori. Ogni fornitore puo’ servire piu’ ristoranti.
RISTORANTE FORNITOREGESTIONE
(?,?) (?,?)
![Page 8: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/8.jpg)
Esercizio 1
Decidere la cardinalita’ delle seguenti relazioni.
Un ristorante puo’ avere piu’ fornitori. Ogni fornitore puo’ servire piu’ ristoranti.
RISTORANTE FORNITOREGESTIONE
(1,N) (1,N)
![Page 9: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/9.jpg)
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.
![Page 10: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/10.jpg)
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.
![Page 11: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/11.jpg)
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.
![Page 12: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/12.jpg)
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?
![Page 13: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/13.jpg)
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
![Page 14: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/14.jpg)
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 …
![Page 15: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/15.jpg)
Esercizio 4
Tradurre l’E-R nel modello relazionale …
![Page 16: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/16.jpg)
Esercizio 5
Tradurre l’E-R nel modello relazionale …
![Page 17: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/17.jpg)
Esercizio 6
Tradurre l’E-R nel modello relazionale …
![Page 18: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/18.jpg)
Esercizio 7
PAZIENTE R1 CURA
R3
FARMACO
R2
MEDICO
(0,N) (1,1)
(1,N)
(0,N)
(1,1)
(0,N)
- 100 Pazienti- 300 Cure (3 in media per Paziente)- 20 Medici- 500 Farmaci- Ogni cura e’ composta in media da 5 farmaci
Nome Cognome
Nome Prezzo
Codice
Nome Cognome
DataInizio
Composizione
Reparto
Durata
Determinare il costo dell’operazione (10v/gg):
Dato un paziente, visualizzare tutte le le informazioni relative ad i farmaci assunti in ogni cura (a=2, wI=1).
![Page 19: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/19.jpg)
Esercizio 7
PAZIENTE R1 CURA
R3
FARMACO
R2
MEDICO
(0,N) (1,1)
(1,N)
(0,N)
(1,1)
(0,N)
- 100 Pazienti- 300 Cure (3 in media per Paziente)- 20 Medici- 500 Farmaci- Ogni cura e’ composta in media da 3 farmaci
Nome Cognome
Nome Prezzo
Codice
Nome Cognome
DataInizio
Composizione
Reparto
Durata
Determinare il costo dell’operazione (1v/gg):
Dato un paziente ed una cura, aggiungere un farmaco ad una cura (a=2, wI=1).
![Page 20: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/20.jpg)
Esercizio 7
PAZIENTE R1 CURA
R3
FARMACO
R2
MEDICO
(0,N) (1,1)
(1,N)
(0,N)
(1,1)
(0,N)
- 100 Pazienti- 300 Cure (3 in media per Paziente)- 20 Medici- 500 Farmaci- Ogni cura e’ composta in media da 3 farmaci
Nome Cognome
Nome Prezzo
Codice
Nome Cognome
DataInizio
Composizione
Reparto
Durata
Determinare il costo dell’operazione (1v/gg):
Rimuovere un medico, e tutte le cure da lui prescritte (a=2, wI=1).
![Page 21: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/21.jpg)
Esercizio 7
PAZIENTE R1 CURA
R3
FARMACO
R2
MEDICO
(0,N) (1,1)
(1,N)
(0,N)
(1,1)
(0,N)
- 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
Nome Cognome
Nome Prezzo
Codice
Nome Cognome
DataInizio
Composizione
Reparto
Durata
Tradurre lo schema E-R nel modellorelazionale.
![Page 22: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/22.jpg)
Esercizio 7
PAZIENTE R1 CURA
R3
FARMACO
R2
MEDICO
(0,N) (1,1)
(1,N)
(0,N)
(1,1)
(0,N)
- 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
Nome Cognome
Nome Prezzo
Codice
Nome Cognome
DataInizio
Composizione
Reparto
Durata
Come cambia la traduzione se si elemina l`attributo Reparto dell`entita’ MEDICO?
![Page 23: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/23.jpg)
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
![Page 24: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/24.jpg)
Esercizio 8 (NORMALIZZAZIONE)
Dato il seguente schema, valutare se esso puo’ generare RINDONDANZE LOGICHE o meno.NomeFilm Regista Nascita
RegistaCopia Collocazione
Odissea nello spazio
Kubrik 26/7/1928 1 HC1234
C’era una volta in America
Leone 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
![Page 25: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/25.jpg)
Esercizio 9 (NORMALIZZAZIONE)
Dato il seguente schema: R(ABCDE), con le seguenti dipendenze funzionali:
AB, AC, DE 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.
![Page 26: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/26.jpg)
Esercizio 9 (NORMALIZZAZIONE)
Dato il seguente schema: R(ABCDE), con le seguenti dipendenze funzionali:
AB, AC, DE 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.
![Page 27: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/27.jpg)
Esercizio 10 (NORMALIZZAZIONE)
Dato il seguente schema: R(ABCDE), con le seguenti dipendenze funzionali:
F={CAB, BC DE, DB}
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.
![Page 28: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/28.jpg)
PRODUZIONE(CodiceComponente, Fornitore, CodiceProdotto, PrezzoProdotto, SedeProduzione, ResponsabileSede)
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)
![Page 29: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/29.jpg)
PRODUZIONE(CodiceComponente, Fornitore, CodiceProdotto, PrezzoProdotto, SedeProduzione, ResponsabileSede)
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)
![Page 30: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/30.jpg)
PRODUZIONE(CodiceComponente, Fornitore, CodiceProdotto, PrezzoProdotto, SedeProduzione, ResponsabileSede)
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)
![Page 31: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/31.jpg)
PRODUZIONE(CodiceComponente, Fornitore, CodiceProdotto, PrezzoProdotto, SedeProduzione, ResponsabileSede)
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).
Esercizio 11 (NORMALIZZAZIONE)
![Page 32: Corso di Basi di Dati Progettazione di Database: Esercizi Home page del corso: difelice/dbsi](https://reader036.vdocuments.net/reader036/viewer/2022062701/5542eb63497959361e8cd1b4/html5/thumbnails/32.jpg)
Esercizio 12
Data la relazione: R(ABCDEFGH)
Con le seguenti dipendenze funzionali:
D={AB DEF, CH, G BDE, H DEG, E B, BH AG}
Verificare se D implica f: AEBF