Basi di Dati - Appello del 14 Dicembre 2012
Cognome . . . Nome . . . Matricola . . . .
Domande (11 punti)
1. (2 punti) Sia R(T, F ) uno schema relazionale, dove T `e l’insieme degli attributi e F l’insieme delle dipendenze funzionali. Descrivere l’algoritmo che dato un sottoinsieme X ⊆ T costruisce la proiezione su X delle dipendenze, ovvero ΠX(F ).
2. (3 punti) Con riferimento alle transazioni, illustrare la differenza tra i livelli di serializ- zabilit`a repeatable read e read committed, fornendo un esempio che li distingua.
3. (4 punti) Sia data la tabella ProveEsame(Matricola, CodEsame, Data, Voto), che contiene gli esami sostenuti dagli studenti (identificati da codice dell’esame e data della prova). Realizzare un trigger che impedisca l’inserimento di una prova d’esame se il voto nella prova non `e superiore alla media dei voti conseguiti dallo studente per prove relative allo stesso esame.
4. (2 punti) Illustrare sinteticamente il funzionamento delle sessioni.
Esercizio A. (7 punti) Un supermercato vuol memorizzare informazioni sulle spese dei propri clienti abituali. Per ogni cliente `e fissato un numero identificativo (numero della tessera), ed interessano il nome e l’indirizzo. Per i prodotti, identificati da un codice, `e fornita una descrizione. Inoltre, per i prodotti confezionati `e dato il prezzo per unit`a, mentre per i prodotti da banco si memorizza il prezzo per kg. Alcuni prodotti possono essere interessati da promozioni fruibili dai clienti abituali: la promozione comporta uno sconto temporaneo sul prezzo, a partire da una certa data e per un numero prefissato di giorni. Per ogni spesa, oltre al cliente che l’ha effettuata, interessa la data, il costo totale della spesa, la modalit`a di pagamento (carta di credito, bancomat, contanti) e, per ogni prodotto acquistato, la quantit`a (numero di unit`a per i prodotti confezionati ed il peso per i prodotti da banco), il prezzo pagato e lo sconto praticato.
Si dia uno schema grafico a oggetti (secondo la notazione del libro di testo e vista a lezione) della base di dati. Quindi lo si trasformi in uno schema logico relazionale mostran- done la rappresentazione grafica. Per ogni relazione si specifichi il nome degli attributi, la chiave primaria e le chiavi esterne (queste informazioni possono essere evidenziate al di fuori dello schema grafico).
Esercizio B. (8 punti) Siano dati i seguenti schemi di relazione che rappresentano un orario settimanale delle lezioni, nei quali gli attributi che fanno parte della chiave primaria sono sottolineati:
– Corsi(IdCorso, Nome, Descrizione) – Orario(Giorno, Ora, IdAula*, IdCorso*)
IdAula FK(Aule), IdCorso FK(Corsi) – Aule(IdAula, NPosti)
Si forniscano query SQL (e per 1 anche in algebra relazionale) per 1. Trovare nome e id dei corsi che hanno almeno tre lezioni alla settimana.
2. Individuare i corsi (id e nome) le cui lezioni si tengono in aule distinte con numeri di posti che differiscono per almeno 50 posti.
3. Trovare l’id delle aule che in uno stesso giorno ospitano il massimo numero di corsi diversi.
4. Posticipare di un’ora tutte le lezioni per le quali la lezione successiva nella stessa aula inizi almeno tre ore pi`u tardi (e c’`e una lezione successiva lo stesso giorno).
Esercizio C. (6 punti) Dato lo schema di relazione RhA,B,C,D,E,Fi, con dipendenze
C→BA, A→BF, D→CEF, DF→ A
1. Trovare una copertura canonica.
2. Trovare tutte le chiavi.
3. Dire quali sono, se ci sono, le dipendenze che violano la BCNF.
4. Normalizzare lo schema in BCNF.