Prova Scritta di Basi di Dati 30 Settembre 2002 NOME: COGNOME: MATRICOLA: Esercizio Punti previsti 1 10 2 12 3 8 4 3 Totale 33 Punti assegnati
Esercizio 1 (Punti 10) Si vuole sviluppare una base di dati per gestire i corsi di laurea degli Atenei italiani. Ogni corso di laurea è caratterizzato da un nome e da un certo insieme di corsi. Ogni corso è identificato da un nome, dal numero di crediti totali e dal numero di crediti di laboratorio. In ogni corso insegnano al più due docenti per ogni anno accademico. Per ogni docente, si vuole memorizzare il nome, il cognome, l indirizzo e-mail ed un insieme di numeri di telefono. Per ogni docente che insegna in un certo corso, si vuole tenere traccia del ruolo del docente nel corso (titolare, assistente laboratorio) e l anno accademico in cui il corso viene tenuto dal docente. I docenti possono essere ricercatori, professori associati e professori ordinari. Per i ricercatori, si vuole anche sapere se sono già stati confermati. Ogni corso di laurea, per ogni anno accademico, ha un presidente, che è anche docente del corso di laurea. Infine, ogni docente è affiliato ad un certo dipartimento. Per ogni dipartimento, si vuole memorizzare il nome del dipartimento, l università di riferimento, l indirizzo e il numero totale di docenti affiliati a tale dipartimento. 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 identificazione (chiavi). b) Precisare eventuali vincoli di integrità non rappresentabili nello schema ER. c) Presentare lo schema ristrutturato corrispondente allo schema proposto al punto a). d) Realizzare uno schema relazionale corrispondente allo schema ER definito al punto c).
Esercizio 2 (Punti 12) Si consideri il seguente schema relazionale, che descrive le quantità e i prezzi dei prodotti inventariati presso i magazzini di una catena di negozi: Magazzino(CodM, Indirizzo, Città) Prodotto(CodP, Nome, Categoria) Inventario(CodM, CodP, Quantità, Prezzo) a) Formulare le seguenti interrogazioni, in algebra relazionale: I. Determinare i prodotti venduti nei magazzini di Genova, con prezzo inferiore a 100 Euro. II. Determinare i prodotti di categoria abbigliamento venduti in almeno due magazzini di Genova. III. Determinare i magazzini di Genova che non contengono elettrodomestici di prezzo superiore a 1000 Euro. IV. Determinare i magazzini di Genova che vendono tutti i prodotti di categoria giocattoli presenti in catalogo. V. Formulare in calcolo relazionale l interrogazione a.i. b) Formulare le seguenti operazioni in SQL: I. Creare la tabella Inventario, supponendo che la quantità sia sempre superiore a 10 e che la cancellazione di un prodotto implichi la cancellazione di tale prodotto dall inventario, II. Determinare i prodotti venduti nei magazzini di Genova, con prezzo inferiore a 100 Euro. III. Determinare i magazzini di Genova che non contengono elettrodomestici di prezzo superiore a 1000 Euro. IV. Determinare il magazzino contenente il maggior numero di prodotti di categoria elettrodomestici. V. Determinare i prodotti venduto al prezzo massimo nei magazzini di Genova.
Esercizio 3 (punti 8) Si consideri lo schema di relazione R = (A,B,C,D,E) e il seguente insieme di dipendenze funzionali su tale schema: BC > AE AC > ED E > AB a) Determinare se l insieme delle dipendenze è minimale. Se non lo è, generare l insieme di dipendenze minimale equivalente a quello dato. Giustificare la risposta. b) Determinare le chiavi della relazione. Giustificare la risposta. c) Lo schema è in BCNF? É in 3NF? Giustificare le risposte. d) Mostrare una decomposizione lossless join dello schema in 3NF. e) Mostrare una decomposizione lossless join dello schema in BCNF.
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) Si consideri la seguente interrogazione SQL: SELECT Nome FROM Impiegati WHERE CodImp = 123 AND Stipendio > 1000 supponendo che CodImp sia chiave della relazione Impiegati. Per ottimizzare l interrogazione conviene creare: 1. Un indice clusterizzato su CodImp e un indice clusterizzato su Stipendio. 2. Un indice non clusterizzato su CodImp e un indice non clusterizzato su Stipendio. 3. Un indice clusterizzato su CodImp e un indice non clusterizzato su Stipendio. 4. Un indice clusterizzato su Stipendio. b) La proprietà di durabilità delle transazioni garantisce che: 1. Una transazione che abortisce deve essere rieseguita dal sistema. 2. Quando una transazione effettua il commit, le modifiche eseguite vengono rese persistenti. 3. Le modifiche eseguite da una transazioni vengono rese persistenti appena vengono eseguite ed eventualmente vengono disfatte nel caso in cui la transazione abortisca. 4. Una transazioni non può vedere lo stato interno di altre transazioni che non hanno ancora effettuato il commit. c) Molti DBMS non permettono di rappresentare vincoli di integrità complessi perché: 1. SQL standard non permette di rappresentare vincoli complessi. 2. In generale, i vincoli associati ad un applicazione sono piuttosto semplici. 3. La presenza di vincoli complessi rallenta le operazioni di definizione dei dati. 4. La presenza di vincoli complessi rallenta le operazioni di aggiornamento.