NOME ……………………………………………………………………………………………… COGNOME ……………………………………………………………………………………………… MATRICOLA ……………………………………………………………………………………………… ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella le informazioni relative ad una piattaforma di gestione di palinsesti televisivi: UTENTE(Username, AnnoNascita, LuogoNascita) RECENSIONE(Id, NomeUtente, TitoloSerie, Punteggio, Commento) SERIETV(Titolo, NumPuntate, NomeRegista) Con vincoli di integrità referenziale: RECENSIONE.NomeUtente à UTENTE.Username RECENSIONE.TitoloSerie à SERIETV.Titolo a) (2 pt) Scrivere in algebra relazionale la query che determina gli Username degli utenti che NON hanno mai inserito recensioni di serie TV girate dal regista ‘Lynch’. b) (3 pt) Scrivere in algebra relazionale la query che determina UserName e LuogoNascita degli utenti nati dal 1990 in poi che hanno inserito almeno due recensioni per la stessa serie TV. c) (3 pt) Scrivere in SQL la query che restituisce tutti i commenti delle recensioni relative a serie TV girate del regista ‘Lynch’, ed inserite da utenti nati a Bologna. [VINCOLO: Non è possibile utilizzare il join tra tabelle nella clausola FROM]. d) (3 pt) Scrivere in SQL la query che determina il titolo ed il regista della serie TV con punteggio medio più alto, considerando solo le recensioni scritte da utenti teenager (ossia nati dopo il 1995). e) (1 pt) Scrivere in SQL il codice della tabella RECENSIONE, imponendo i seguenti vincoli: (i) Id è un campo auto-­‐incrementante; (ii) Punteggio deve essere sempre definito; (iii) Commento è una stringa con lunghezza massima pari a 200 caratteri. ESERCIZIO 2 (12 punti) Si vuole progettare una base di dati per la gestione dei circoli tennis presenti a Bologna. Ogni circolo dispone di nome (univoco), indirizzo, recapito telefonico, ed email. Si vogliono gestire le informazioni relative ai soci di ciascun circolo: ogni socio dispone di codice fiscale, nome, cognome, data e luogo di nascita, uno o più recapiti telefonici. Un socio fa parte di un solo circolo. I soci di un circolo possono appartenere a due categorie: istruttori (di tennis), e giocatori. Degli istruttori si vogliono memorizzare anche la qualifica, la foto, ed il curriculum vitae (file di testo). Ogni circolo dispone di un certo numero di campi da tennis. Ogni campo ha un numero progressivo (univoco all’interno di uno specifico circolo), una tipologia (erba/terra battuta), una collocazione (coperto/aperto). Si vogliono gestire le prenotazioni associate ai campi da tennis. Ogni prenotazione dispone di codice, data, ora e prezzo, e riguarda un singolo socio (del circolo) ed un singolo campo. Inoltre, si vogliono gestire le informazioni relative a tornei di tennis organizzati dai circoli. Ogni torneo è identificato dal nome+anno di edizione, dispone di una data di inizio, una data di fine, un premio (in euro), ed è organizzato da un singolo circolo. I tornei possono essere sponsorizzati da aziende. Di ogni azienda sponsor si vuole conoscere: nome, indirizzo, partita IVA. La stessa azienda può sponsorizzare più tornei. Lo stesso torneo può disporre di più sponsor. Di ogni sponsorizzazione si vuole conoscere l’importo versato dall’azienda. Ogni torneo è composto da un certo numero di partite. Ogni partita è giocata da due soci giocatori del circolo. Di ogni partita si vogliono memorizzare la data, la durata, ed il punteggio dei tre set. a) (6pt) Costruire il modello Entità-­‐Relazione (E-­‐R) della base di dati. b) (4pt) Tradurre il modello E-­‐R nel modello logico relazionale. Indicare i vincoli di integrità referenziale tra gli attributi dello schema. c) (2pt) Indicare quale operazione ha il costo più alto tra quelle elencate sotto: Ø Creare un nuovo sponsor ed aggiungerlo ad un torneo già presente nel sistema (Interattiva, 2 volte/mese). Ø Visualizzare le informazioni (cf, nome, cognome, data nascita) relative a tutti i soci di un dato circolo (Interattiva, 2 volte/mese). Ø Visualizzare le informazioni (tipologia/collocazione) relative a tutti i campi da tennis presenti in un dato circolo (Interattiva, 3 volte/mese). Tabella dei volumi: 20 soci per circolo, 5 campi per circolo α(peso operazioni scrittura)=2, wI (peso operazioni interattive)=1 ESERCIZIO 3 (4 punti) Dato il seguente schema: R(ABCDE), con le seguenti dipendenze funzionali: A à B, BC à D, A à C, CDà E a) (2 pt) Indicare se ABC sia chiave o meno della relazione R. Giustificare la risposta. b) (2 pt) La relazione è in forma normale di Boyce e Codd (FNBC)? La relazione è in terza forma normale (3FN)? Giustificare le risposte. ESERCIZIO 4 (2 punti) a) (1 pt) Fornire una (breve) descrizione dei protocolli Two Phase Lock (2PL) e Strict Two Phase Lock (S2PL): a cosa servono? In cosa consistono i due protocolli? b) (1 pt) Sia dato un oggetto x, su cui opera un controllo della concorrenza basato su timestamp, con WTM(x)=8, RTM(x)=4. Dato il seguente schedule di operazioni: r15(x) r9(x) r10(x) w18(x) w16(x) r20(x) w22(x) r25(x) r23(x) r21(x) Indicare quali operazioni sono consentite e quali abortite, ed il valore finale di WTM(x) ed RTM(x).