Prova Scritta di Basi di Dati 17 Febbraio 2004 NOME: COGNOME: MATRICOLA: Cercare di risolvere gli esercizi sul foglio del testo. Esercizio Punti previsti 1 9 2 12 3 9 3 3 Totale 33 Punti assegnati
Esercizio 1 (Punti 9) Si vuole sviluppare una base di dati per gestire la comunicazione e la risoluzione di problemi tecnici in un dipartimento universitario. I problemi tecnici si possono riferire a oggetti software (es: non riesco a leggere la posta) o hardware (es: la ventola non funziona piu, la stampante non stampa). Per ogni oggetto, si vogliono mantenere informazioni sul tipo (software o hardware). Per gli oggetti di tipo software, si vuole inoltre mantenere il nome del software, per gli oggetti hardware il tipo di oggetto (stampante, PC, scanner, ). I problemi vengono segnalati dai docenti e si riferiscono ad un singolo oggetto. Per ogni problema, si mantiene un codice, una descrizione, un livello di urgenza per la sua risoluzione (alto, medio, basso), la data in cui viene segnalato, e lo stato (risolto, parzialmente risolto, non ancora considerato). I problemi possono essere di vario tipo: malfunzionamenti, richiesta di assistenza all utilizzo, altri problemi. Ogni problema viene assegnato in una certa data ad un tecnico. Per ogni tecnico si registra il nome, il cognome, il numero di telefono e l indirizzo di email. Viene inoltre registrata la data in cui il tecnico risolve il problema. Si richiede di: a) Definire uno schema ER per la situazione sopra descritta. Precisare la cardinalità delle associazioni e degli attributi (se diversa da quella di default) e i vincoli di identificazioni (chiavi). b) Precisare eventuali vincoli di integrità non rappresentabili nello schema ER proposto e la tipologia delle eventuali generalizzazioni. c) Generare lo schema ristrutturato corrispondente allo schema ER definito al punto a). d) Realizzare uno schema relazionale corrispondente allo schema ristrutturato definito al punto c), indicando le chiavi, le chiavi esterne (usare una freccia dagli attributi riferenti a quelli riferiti), gli attributi che possono essere nulli e le eventuali chiavi secondarie. e) Indicare eventuali ottimizzazioni che potrebbero essere applicate allo schema logico ottenuto.
Esercizio 2 (Punti 12) Si consideri il seguente schema relazionale, relativo all assegnazione di tesi in un corso di laurea: TESI(CodT, Titolo,Tipo,Descrizione) LAUREANDI(MatrL,NomeL, CognomeL, Tel,Email,CodT) DOCENTI(MatrD,NomeD,CognomeD) PROPOSTE(CodT,MatrD, Data) Nello schema precedente, nella tabella TESI, il campo Tipo puo assumere come valori 1 per tesine di primo livello e 2 per tesi di secondo livello. a) Formulare le seguenti interrogazioni, in algebra relazionale: I. Determinare il titolo delle tesi di basi di dati, di secondo livello, gia assegnate ad un laureando. II. Determinare i nomi dei docenti che hanno proposto almeno tre tesi di primo livello. III. Determinare il nome dei docenti che hanno proposto solo tesi di secondo livello, insieme ai nomi dei loro laureandi. IV. Determinare le tesi con piu di un relatore. V. Formulare in calcolo relazionale l interrogazione a.i. b) Formulare le seguenti operazioni in SQL: I. Creare la tabella PROPOSTE, supponendo che quando uno studente si laurea, vengano cancellate le informazioni relative alla sua tesi. II. Determinare il titolo delle tesi di basi di dati, di secondo livello, gia assegnate ad un laureando III. Determinare per ogni docente il numero totale di tesi proposte e il numero totale di tesi assegnate. IV. Determinare il docente che ha assegnato il numero maggiore di tesi di secondo livello. V. Determinare i docenti che hanno proposto un numero di tesi inferiore alla media delle tesi proposte dai vari docenti.
Esercizio 3 (punti 9) Si consideri lo schema di relazione R = (A,B,C,D,E,F) e il seguente insieme di dipendenze funzionali su tale schema: AC > FD FC > DB D > FE 1. Determinare se l insieme delle dipendenze è minimale. Se non lo è, generare l insieme di dipendenze minimale equivalente a quello dato. Giustificare la risposta. 2. Determinare le chiavi della relazione. Giustificare la risposta. 3. Lo schema è in BCNF? É in 3NF? Giustificare le risposte. 4. Mostrare una decomposizione lossless join dello schema in 3NF. Lo schema risultante e in BCNF? Giustificare la risposta. 5. Mostrare una decomposizione lossless join dello schema in BCNF. Lo schema risultante preserva le dipendenze? Giustificare la risposta.
Esercizio 4 (punti 3) Per ogni domanda, una sola risposta è corretta. Per ogni risposta corretta viene assegnato un punto. Alle riposte sbagliate vengono assegnati 0 punti. a) L indipendenza fisica garantisce che: 1. Lo schema concettuale non deve essere modificato se cambia lo schema logico. 2. Lo schema logico non deve essere modificato se cambia lo schema concettuale. 3. La creazione di un nuovo indice non richiede un cambiamento alle applicazioni. 4. La creazione di un nuovo indice non cambia lo schema logico. b) La proprieta di durabilita di una transazioni garantisce che: 1. Se la transazioni va a buon fine, le tuple inserite verranno rese persistenti. 2. Se cade il sistema mentre eseguite una transazione che deve inserire alcune tuple, al riavvio del sistema queste tuple saranno comunque presenti nella base di dati. 3. Se cade il sistema mentre eseguite una transazione che deve inserire alcune tuple, al riavvio del sistema queste tuple non saranno presenti nella base di dati. 4. I risultati delle operazioni eseguite dalla transazione che generano errori non vengono rese persistenti. c) In riferimento all esercizio 2, dovete garantire a Mario Rossi la possibilita di leggere informazioni sulle tesi di primo livello. Quando e come potete farlo: 1. Dovete avere creato tutte le tabelle; utilizzate il comando GRANT su una vista. 2. Dovete avere il diritto di SELECT su tutte le tabelle; utilizzate il comando GRANT specificando con una query le tuple su cui concedere il permesso. 3. Dovete avere il diritto di SELECT su tutte le tabelle; utilizzate il comando GRANT su una vista. 4. Dovete avere creato la tabella TESI; utilizzate il comando GRANT specificando con una query le tuple su cui concedere il permesso.