NOME COGNOME MATRICOLA ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella un sistema di gestione dei Quiz per l ammissione a corsi di Laurea a numero programmato dell Università di Bologna: STUDENTE(Codice, Nome, Cognome, LuogoNascita) CDL (Codice, Nome, PunteggioMinimo) QUIZ(CodiceCorso, CodiceStudente, Punteggio) Con vincoli di integrità referenziale: QUIZ.CodiceCorso à CDL.Codice QUIZ.CodiceStudente à STUDENTE.Codice a) (1 pt) Scrivere in algebra relazionale la query che determina nome e cognome degli studenti nati a Bologna che hanno sostenuto il quiz del corso di laurea in Informatica. b) (3 pt) Scrivere in algebra relazionale la query che determina nome e cognome degli studenti nati a Bologna che hanno sostenuto più di un quiz (per corsi di laurea differenti). c) (3 pt) Scrivere in SQL la query che determina, per ciascun corso di laurea, il numero totale di studenti che hanno ottenuto un punteggio superiore al minimo previsto (per quel corso di laurea). c) (3 pt) Scrivere in SQL la query che determina nome e cognome dello studente/degli studenti che ha/hanno ottenuto il punteggio massimo nel quiz del corso di laurea in Informatica. [VINCOLO: Non è possibile effettuare il join tra tabelle nella clausola FROM]. e) (2 pt) Scrivere il codice SQL della tabella QUIZ, imponendo i seguenti vincoli: (i) Il punteggio è un numero compreso tra 0 e 40, ed è sempre definito; (ii) uno studente può sostenere al massimo 3 quiz con punteggio inferiore a 0 punti.
ESERCIZIO 2 (12 punti) Si vuole progettare una base di dati per una società che effettua sondaggi elettorali. In particolare, si vogliono gestire le informazioni relative alle elezioni monitorate dalla società. Ogni elezione dispone di un codice, una data di inizio, una data di fine, una descrizione, e può essere politica o amministrativa. Per le elezioni politiche, si vuole tenere traccia dei partiti partecipanti alla tornata. Ogni partito dispone di un nome (univoco), una sigla, un anno di fondazione, una o più sedi (con indirizzo, numero telefono ed indirizzo email). Lo stesso partito può partecipare a più elezioni politiche distinte. Per le elezioni amministrative, si vuole tenere traccia del luogo delle elezioni, e dei candidati in lizza. Ogni candidato dispone di: nome, cognome, anno di nascita, luogo di nascita, curriculum vitae (campo testo). Inoltre, ogni candidato è sostenuto da uno o più partiti politici. Ad ogni elezione possono essere associati uno o più sondaggi. Ogni sondaggio è identificato dal codice dell elezione e della data di svolgimento, e dispone di campi quali: numero interviste, modalità di svolgimento (campo testo), budget speso dall agenzia. Si vogliono memorizzare i risultati di ogni sondaggio, che consistono nella percentuale di gradimento associata a ciascun partito. Infine, si vuole tenere traccia dei dati degli utenti che hanno partecipato al sondaggio, memorizzando età e livello di istruzione. Gli utenti possono appartenere a due categorie: lavoratori o studenti. Per i primi, si vuole tenere traccia della professione esercitata, e della fascia di reddito. Per i secondi, del nome del corso di Laurea cui sono iscritti. 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: Ø Mostrare i dati di tutti i partecipanti di uno specifico sondaggio (Interattiva, 3 volte/mese). Ø Aggiungere un nuovo partecipante ad un sondaggio già presente nella piattaforma (Interattiva, 3 volte/mese). Ø Per ogni elezione, contare il numero dei sondaggi svolti (Interattiva, 1 volta/mese). Tabella dei volumi: 50 partecipanti per sondaggio, 5 elezioni (totale), 50 sondaggi (totale) α(peso operazioni scrittura)=2, wi (peso operazioni interattive)=1
ESERCIZIO 3 (4 punti) Dato il seguente schema: R(ABCD), con le seguenti dipendenze funzionali: D à C, ABC à D, Dà B a) (2 pt) Indicare TUTTE le possibili chiavi 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) (1 pt) Cosa si intende per proprietà ACID di una transazione? Fornire una breve descrizione di ciascuna proprietà. (1 pt) Dato il seguente stato dei log: CK(T0, T1, T2) C(T1) B(T3) CK(T0,T2,T3) U(T2,O2,B2,A2) U(T3,O3,B3,A3) B(T4) C(T3) I(T2, O4, A4) B(T5) C(T2) 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).