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