Basi di Dati

Transcript

Basi di Dati
Basi di Dati
Soluzione della prova del 20 Dicembre 2007
Schema Relazionale per Esercizio 1
Sia dato il seguente schema relazionale:
socio(tessera, nome, cognome, data_di_nascita, luogo_di_nascita,
residenza, email, telefono)
semplice(tessera, gioco)
FOREIGN KEY tessera REFERENCES socio
FOREIGN KEY gioco REFERENCES gioco(nome)
sostenitore(tessera, confezione, gioco)
FOREIGN KEY tessera REFERENCES socio
FOREIGN KEY confezione REFERENCES confezione(id)
FOREIGN KEY gioco REFERENCES confezione
gioco(nome, creatore, produttore, giocatori_min, giocatori_max,
eta_min, tempo, descrizione)
confezione(id, gioco)
FOREIGN KEY gioco REFERENCES gioco(nome)
conosce(socio, gioco)
FOREIGN KEY socio REFERENCES socio(tessera)
FOREIGN KEY gioco REFERENCES gioco(nome)
dove l'attributo gioco in semplice indica il gioco di cui è tutor, mentre gli attributi (confezione,gioco)
in sostenitore indicano il gioco che il sostenitore ha donato all'associazione.
Esercizio 1 (6 punti)
Formulare in Algebra Relazionale la seguente interrogazione: Trovare il nome e cognome dei soci
sostenitori che hanno donato confezioni di giochi conosciuti da almeno 2 soci semplici.
Soluzione
ρ( S1, πtessera,gioco σ( tessera = socio ) (πtessera (Semplice) × Conosce))
ρ( S2, S1)
ρ( R1, πgioco σ(( S1.gioco = S2.gioco ) ∧ ( S1.tessera ≠ S2.tessera)) (S1 × S2))
πnome,cognome (Socio
(Sostenitore
R1))
Esercizio 2 (6 punti)
Considerate uno schema di relazione R(A,B,C,D) e l’insieme di DF
F = (AB → C, AB → D, C → A, D → B)
1. Identificare la chiave o le chiavi candidate per R (3 punti)
2. Spiegare perché R si trova in 3NF. (1 punto)
3. Proporre se possibile una decomposizione in BCNF senza perdita che conservi le
dipendenze (2 punti)
Motivare chiaramente ogni risposta data.
Soluzione
1. AB → C, AB → D => AB → CD ; AB è chiave candidata
D → B => DA → AB → C;
AD è chiave candidata
C → A => CD → AD → AB;
CD è chiave candidata
C → A => CB → AB → D;
BC è chiave candidata
2. AB → C
è in BCNF (AB è una chiave)
AB → D è in BCNF (AB è una chiave)
C→A
è in 3NF (A è sottoinsieme di una chiave)
Basi di Dati
Soluzione prova scritta del 20 Dicembre 2007
1
D→B
è in 3NF (B è sottoinsieme di una chiave)
3.
 Iniziamo la decomposizione da C → A :
<AC, BCD> in questo caso non si conservano AB → C, AB → D, a causa di D → B
non siamo in BCNF, quindi decomponiamo ancora.
<AC, BD, CD> in questo caso siamo in BCNF, ma non conserviamo tutte le dipendenze. Se si introducono ABC e ABD per conservare le dipendenze AB → C e AB → D,
non siamo più in BCNF, ma si ritorna alla 3NF a causa di C → A e D → B.
 Iniziamo la decomposizione da D → B :
<BD, ACD> in questo caso non si conservano AB → C, AB → D, a causa di C → A
non siamo in BCNF, quindi decomponiamo ancora.
<AC, BD, CD> stesso caso del punto precedente.
In conclusione non esiste una decomposizione in BCNF che conserva tutte le dipendenze.
Esercizio 3 (4 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.
Soluzione
Vedi libro di testo
Esercizio 4 (4 punti)
Definire le proprietà ACID che un DBMS deve garantire nell’eseguire transazioni.
Soluzione
Vedi libro di testo
Basi di Dati
Soluzione prova scritta del 20 Dicembre 2007
2