matr.
Nome
Es. 1
Cognome
Es. 2
Es. 3
Punteggio
Es. 4 Es. 5
firma
Es. 6
Es. 7
TOT
Basi di Dati
Prova del 22 Dicembre 2008
Schema Relazionale per Esercizio 1 e 2
Sia dato il seguente schema relazionale:
socio(tessera:integer, nome:varchar, cognome:varchar,
data_di_nascita:date, luogo_di_nascita:varchar,
residenza:varchar, email:varchar, telefono:varchar)
semplice(tessera:integer, gioco:varchar)
FOREIGN KEY tessera REFERENCES socio
FOREIGN KEY gioco REFERENCES gioco(nome)
sostenitore(tessera:integer, confezione:integer,gioco:varchar)
FOREIGN KEY tessera REFERENCES socio
FOREIGN KEY confezione REFERENCES confezione(id)
FOREIGN KEY gioco REFERENCES confezione
gioco(nome:varchar, creatore:varchar, produttore:varchar,
giocatori_min:integer, giocatori_max:integer, eta_min:integer,
tempo:integer, descrizione:text)
confezione(id:integer, gioco:varchar)
FOREIGN KEY gioco REFERENCES gioco(nome)
conosce(socio:integer, gioco:varchar)
FOREIGN KEY gioco REFERENCES gioco(nome)
prestito_passato(confezione:integer, gioco:varchar, socio:integer)
FOREIGN KEY confezione REFERENCES confezione(id)
FOREIGN KEY gioco REFERENCES confezione
FOREIGN KEY socio REFERENCES socio(tessera)
prestito_incorso(confezione:integer, gioco:varchar, socio:integer)
FOREIGN KEY confezione REFERENCES confezione(id)
FOREIGN KEY gioco REFERENCES confezione
FOREIGN KEY socio REFERENCES socio(tessera)
Lo schema rappresenta un database di una associazione di giochi di società. I soci (socio), si
dividono in soci semplici e soci sostenitori. L'attributo gioco in semplice indica il gioco di cui è tutor,
mentre gli attributi (confezione,gioco) in sostenitore indicano la confezione di gioco che il
sostenitore ha donato all'associazione. Confezione indica le confezioni di giochi possedute dalla
associazione. Mentre gioco contiene tutte le informazioni relative ad un dato gioco. Conosce indica
quali giochi conosce ogni socio. Infine Prestito InCorso indica quali confezioni di gioco sono
attualmente in prestito presso i soci, mentre Prestito Passato indica lo storico dei prestiti passati.
Esercizio 1 (4 punti)
Formulare in Algebra Relazionale la seguente interrogazione: Trovare il nome e cognome dei soci
che conoscono un gioco di cui sono in prestito esattamente 2 confezioni di gioco.
Basi di Dati
Prova scritta del 22 Dicembre 2008
1
Esercizio 2 (6 punti)
Formulare in SQL la seguente interrogazione: Trovare il nome e cognome di tutti i soci che hanno
preso in prestito tutti i giochi posseduti dalla associazione di giochi. Si considerino sia i prestiti
passati che in corso.
Basi di Dati
Prova scritta del 22 Dicembre 2008
2
Esercizio 3 (11 punti)
Parte 1
Vi è stato commissionato la realizzazione di un database per un sito di gestione del fantacalcio.
1. Per ogni utente del sito si vogliono memorizzare uno username, una mail, un nome, un
cognome.
2. Il sito consente di gestire diversi campionati. Ogni campionato ha un utente come
responsabile.
3. Un utente può partecipare a più di un campionato. Si vuole tenere traccia di tutte le
partecipazioni. Ogni utente può avere diverse squadre iscritte al sito, ma una sola per
campionato.
4. Il sito mantiene anche un database centralizzato dei giocatori di calcio. Per ogni giocatore
si vuole memorizzare le seguenti informazioni: nome, cognome, ruolo, squadra.
5. Ogni squadra è identificata dal nome e dal campionato. Inoltre si vuole memorizzare
l'utente che ha creato la squadra, e la data creazione.
6. Ogni squadra creata dall'utente è formata da 25 giocatori, per ogni giocatore posseduto in
squadra si vuole memorizzare anche il costo virtuale in fantamiliardi con cui l'utente ha
pagato il giocatore.
Progettare uno schema concettuale e disegnare un diagramma E-R per tale schema. Specificate
tutti i vincoli di chiave e di cardinalità e tutte le ipotesi che fate. Se vi sono vincoli che non riuscite a
rappresentare nel diagramma E-R, spiegare brevemente perché non avete potuto esprimerlo.
Basi di Dati
Prova scritta del 22 Dicembre 2008
3
Esercizio 3 - Parte 2
Tradurre nello schema logico relazionale lo schema ER ottenuto nell'esercizio 3 parte 1, indicando
chiaramente chiavi e i vincoli di chiave e partecipazione. Qualora alcuni vincoli non siano
catturabili tramite lo schema logico, specificarli e indicare un modo alternativo per catturare questi
vincoli. Motivare adeguatamente la risposta.
Basi di Dati
Prova scritta del 22 Dicembre 2008
4
Esercizio 5 (5 punti)
Considerate uno schema di relazione R(A,B,C,D) e l’insieme di DF
F = (A → B, BC → D, A → C)
1. Identificare la chiave o le chiavi candidate per R (2 punti)
2. Dire in quale forma normale si trova R. (1 punto)
3. Proporre se possibile una decomposizione in BCNF senza perdita che conservi le
dipendenze (2 punti)
Motivare chiaramente ogni risposta data.
Basi di Dati
Prova scritta del 22 Dicembre 2008
5
Esercizio 6 (3 punti)
Spiegare in modo chiaro e sintetico le caratteristiche di un indice hash e di un indice B+. In
particolare, confrontare i due indici discutendo per ciascuno di essi l'efficienza nelle ricerche per
uguaglianza e nelle ricerche per intervallo.
Esercizio 7 (3 punti)
Considerate due transazioni T1 e T2 che utilizzano due oggetti X e Y di una base di dati. In
particolare, T1 legge X e Y e poi scrive X, mentre T2 legge X e Y e poi scrive X e Y.
Fornite un esempio di schedule con le azioni di T1 e T2 su X e Y che danno luogo ad un conflitto
scrittura-scrittura.
Basi di Dati
Prova scritta del 22 Dicembre 2008
6