NOME ……………………………………………………………………………………………… COGNOME ……………………………………………………………………………………………… MATRICOLA ……………………………………………………………………………………………… ESERCIZIO 1 (15 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un sistema di prenotazioni di biglietti aerei: VELIVOLO(NomeModello, MaxPasseggeri) PRENOTAZIONE(CodicePrenotazione, CodiceVolo, Nome, Cognome, Costo) VOLO(Codice, ModelloVelivolo, Partenza, Destinazione) Con vincoli di integrita’ referenziale: PRENOTAZIONE.CodiceVolo à VOLO.Codice VOLO.ModelloVelivolo à VELIVOLO.NomeModello a) Scrivere in algebra relazionale la query (ottimizzata) che determina: Nome e Cognome dei clienti che hanno prenotato un volo Bologna-­‐Parigi su un veivolo Boing737 (modello). b) Scrivere in algebra relazionale la query (ottimizzazione NON richiesta) che determina i modelli di velivoli con capienza superiore ai 100 posti che NON sono mai stati utilizzati su voli con partenza Bologna. c) Scrivere in SQL la query che determina i codici dei voli con partenza Bologna e destinazione Parigi, sui quali e’ ancora possibile effettuare una prenotazione [Le prenotazioni sono possibili se il loro numero non eccede la capienza massima del velivolo]. d) Scrivere in SQL la query che determina –per ogni volo con partenza Bologna-­‐ il nome e cognome del passeggero che ha speso meno per una prenotazione su quel volo. [SUGGERIMENTO: Usare una vista]. e) Scrivere in SQL il codice della relazione PRENOTAZIONE, definendo i seguenti vincoli: (i) CodicePrenotazione e’ una stringa di 10 caratteri, (ii) costo NON puo’ essere NULL, ha valore di default pari a 0, e puo’ assumere solo valori nel range [0-­‐ 10000], (iii) la coppia Nome-­‐Cognome e’ univoca (non sono ammessi casi di omonimia o prenotazioni multiple dalla stessa persona). ESERCIZIO 2 (12 punti) Si vuole progettare una base di dati per un’ agenzia di viaggi, contenente informazioni sulle mete di villeggiatura servite. In particolare, si vogliono gestire le informazioni relative alle localita’ verso le quali l’agenzia puo’ organizzare viaggi. Ogni localita’ dispone di un nome univoco, un prefisso regionale, ed un prefisso internazionale. Di ogni localita’ si vogliono gestire le informazioni degli alberghi convenzionati con l’agenzia (nome albergo, indirizzo, numero di stelle, costo di una stanza singola, costo di una doppia). Inoltre, ad ogni localita’ possono essere associate delle attrattive turistiche, sotto forma di Punti d’Interesse (POI). I POI sono caratterizzati da un nome identificativo e da un indirizzo, e possono essere di due tipi: permanenti o temporanei. Nel caso dei POI permanenti, si vuole memorizzare la tipologia dell’attrattiva (es. museo), una breve descrizione, orario di apertura e chiusura, e costo. Nel caso dei POI temporanei, si vuole tenere traccia del nome dell’evento, della data di inizio e di quella di fine. L’agenzia gestisce inoltre le informazioni relative ai mezzi di trasporto per muoversi tra le localita’ di cui sopra. Ad ogni mezzo e’ associato un numero di linea/codice, ed un itinerario, composto dalla sequenza di localita’ servite, con l’orario in cui ciascuna localita’ viene raggiunta, ed il numero (progressivo) della fermata associata a quella localita’. La stessa localita’ puo’ essere servita da piu’ mezzi. Sono previste due tipologie di mezzi: autobus e treno. Dei primi si vuole memorizzare il numero dei posti, dei secondi il numero di classi disponibili ed il tipo (es. Intercity). Infine, si vogliono gestire le informazioni relative ai pacchetti turistici predefiniti offerti dall’agenzia. Ogni pacchetto ha un nome univoco, un costo complessivo, una durata (in numero di gg), ed include una sequenza di localita’ da visitare, specificando il numero di gg da trascorrere in ciascuna localita’. Ogni pacchetto include la lista degli alberghi in cui pernottare (scelti tra quelli convenzionati). La stessa localita’ puo’ far parte di piu’ pacchetti. a) Costruire il modello Entita-­‐Relazione (E-­‐R) della base di dati. b) Tradurre il modello E-­‐R nel modello logico relazionale. Indicare i vincoli di integrita’ referenziale tra gli attributi dello schema. ESERCIZIO 3 (3 punti) Dato il seguente schema: R(ABCDEF), con le seguenti dipendenze funzionali: ABàDE, AàC, AàF a) Indicare se ABD sia: una superchiave della relazione R, una chiave della relazione R, o nessuna delle due. Giustificare le risposte. b) La relazione e’ in forma normale di Boyce e Codd (FNBC)? La relazione e’ in terza forma normale (3FN)? Giustificare le risposte. ESERCIZIO 4 (2 punti) Sia dato un oggetto x, su cui opera un controllo della concorrenza basato su timestamp (mono-­‐versione), con WTM(x)=6, RTM(x)=9. Dato il seguente schedule di operazioni: r7(x) r17(x) w5(x) w16(x) w15(x) w20(x) r23(x) r35(x) r25(x) Indicare quali operazioni sono consentite e quali abortite, ed il valore finale di WTM(x) ed RTM(x).