NOME COGNOME MATRICOLA ESERCIZIO 1 (15 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad un azienda che fornisce assistenza caldaie a domicilio: TECNICO(Codice, Nome, Cognome, AnnoNascita) CALDAIA(Matricola, NomeModello, AnnoAcquisto, Indirizzo) INTERVENTO(CodiceIntervento, CodTecnico, MatCaldaia, AnnoIntervento, Prezzo) Con vincoli di integrita referenziale: INTERVENTO.CodTecnico à TECNICO.Codice INTERVENTO.MatCaldaia à CALDAIA.Matricola a) Scrivere in algebra relazionale la query (ottimizzata) che determina: Nome, Cognome ed AnnoNascita dei Tecnici che nel 2013 hanno effettuato interventi su caldaie acquistate tra gli anni 2000 e 2010. b) Scrivere la query in algebra relazionale equivalente alla seguente query SQL: SELECT DISTINCT(Codice, AnnoNascita) FROM TECNICO, CALDAIA, INTERVENTO WHERE ((Codice=CodTecnico) AND (Matricola=MatCaldaia) AND (NomeModello= Immergas ) AND (Prezzo<100)) c) Scrivere in SQL la query che determina il nome del modello di caldaia su cui sono stati operati complessivamente piu interventi da parte di tecnici dell azienda. d) Scrivere in SQL la query che restituisce il codice, nome e cognome del tecnico (o dei tecnici) che ha (hanno) ottenuto il minor ricavo dal 2003 in poi (nota: per ricavo di un tecnico si intende la somma dei prezzi di interventi da lui eseguiti). e) Scrivere in SQL il codice della tabella INTERVENTO, definendo i seguenti vincoli: (i) CodiceIntervento e una stringa di 10 caratteri, (ii) Prezzo NON puo essere NULL, ha valore di default pari a 0, e puo assumere solo valori nel range [0-1000], (iii) La tabella INTERVENTO NON puo contenere piu di 3000 righe.
ESERCIZIO 2 (12 punti) Si vuole progettare una base di dati per la gestione di un cinema poli- funzionale. Il cinema e organizzato in piu sale, ognuna caratterizzata da un nome (univoco), una superficie, ed una capienza massima. Ogni sala dispone di un programma, che definisce l elenco degli eventi ospitati da una sala. Ogni evento dispone di un codice univoco, una data, un orario di inizio, un orario di fine, ed ospita uno spettacolo. Gli spettacoli possono essere di due tipi: (i) proiezioni di film o (ii) spettacoli teatrali. Per i primi, si vuole tenere traccia del titolo, genere, anno di produzione, nome/cognome del regista. Per i secondi si vuole tenere traccia del titolo, nome/cognome dell autore, e lista degli attori (nome/cognome/anno di nascita) che vi partecipano. Lo stesso attore puo recitare in spettacoli teatrali diversi. Lo stesso spettacolo puo essere associato a piu eventi. Si vuole inoltre gestire un meccanismo di prenotazione da parte di utenti. Ogni prenotazione dispone di un codice, una data, un recapito cellulare, un prezzo e fa riferimento ad un evento. Le prenotazioni possono essere di due tipi: prenotazioni di gruppi (in questo caso, occorre memorizzare il numero dei prenotanti), o prenotazione individuali. Infine, si vogliono gestire le informazioni relative agli abbonati della struttura. Ogni abbonato ha un numero progressivo, un nome, cognome, domicilio (via/#civico/citta), recapito cellulare; poiche ogni abbonato ha diritto ad un certo numero di ingressi gratuiti mediante prenotazione, si vuole tenere traccia delle prenotazioni individuali operate da abbonati della struttura. 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(ABCDE), con le seguenti dipendenze funzionali: Aà B, Bà C, Dà E a) Indicare se ABE 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) Dato il seguente stato dei log: CK(T0) B(T1) B(T2) B(T3) D(T3,O6,B6) C(T1) CK(T0,T2,T3) C(T0) U(T2,O2,B2,A2) U(T3,O3,B3,A3) C(T2) B(T4) I(T4, O4, A4) C(T4) guasto Applicando l algoritmo di ripresa a caldo, indicare la composizione degli insiemi UNDO e REDO (ossia, quali sono le transazioni di cui occorre fare l undo e di quali il redo).