Secondo Compitino di Basi di Dati 10 Giugno 2004 NOME: COGNOME: MATRICOLA: Esercizio Punti previsti 1 18 2 12 3 3 Totale 33 Punti assegnati
Esercizio 1 (Punti 18) Si vuole realizzare un applicazione per gestire le revisioni degli articoli sottomessi ad un certo insieme di conferenze. Ogni conferenza e caratterizzata da un nome, dall anno e dal luogo in cui si svolge. Una conferenza con un certo nome viene in generale ripetuta per vari anni. Ad ogni conferenza, vengono sottomessi degli articoli scientifici. Per ogni conferenza, si mantiene il numero di articoli sottomessi alla stessa. Un articolo puo essere sottomesso ad al piu una conferenza. Ogni articolo e caratterizzato da numero identificativo, unico per ogni conferenza, titolo, dal numero di pagine. Ogni articolo e scritto da un certo numero di autori. Per ogni autore, si registra il nome, il cognome, l affiliazione (indirizzo ente di appartenenza), l indirizzo email e il numero di telefono. Tra gli autori di ogni articolo ne esiste sempre uno principale, chiamato contact author, al quale vengono inviate le varie comunicazioni. Per ogni conferenza, esiste un comitato di programma che revisiona i lavori. Ogni comitato di programma e formato da esperti del settore. Per ciascun esperto si mantiene il nome, il cognome, affiliazione, indirizzo email, numero di telefono. Un esperto del settore puo fare parte di piu comitati di programma diversi e puo anche sottomettere articoli. Ad ogni esperto viene assegnato un certo numero di lavori per ogni conferenza a cui partecipa come membro del comitato di programma. Per ogni lavoro, l esperto fornisce una valutazione. Ogni articolo viene valutato da almeno tre esperti della conferenza a cui e stato sottomesso. Ogni valutazione e costituita da un insieme di parametri (originalita, presentazione, valore tecnico, valutazione complessiva), a ciascuno dei quali viene attribuito un valore da 0 a 5. 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), i vincoli di identificazioni (chiavi) e la tipologia delle generalizzazioni.
nu titol conferenz e (0,n sottom essi (3,n (1,1 articoli n_pa Nome anno luogo n_pag (1,n) (1,1 (1,n (1,n Relativ o a Esperti del settore (1,n (p,e revisio na Contac t auth (0,n Scritto da autori (0,n revision Nome Cognome affiliazione email tel originalita presentazione valore tecnico b) Precisare eventuali vincoli di integrità non rappresentabili nello schema ER proposto. 1. Conferenze.N_art deve corrispondere al numero di articoli sottomessi alla conferenza. 2. Gli articoli vengono referati dai membri del comitato di programma della conferenza a cui sono stati sottomessi. 3. Originalita, presentazione, valore tecnico e valutazione compresi tra 0 e 5, c) Generare lo schema ristrutturato corrispondente allo schema ER definito al punto a), indicando eventuali nuovi vincoli di integrita.
Num nomec AnnoC titolo conferenz e articoli (3,n) n_pag Nome anno luogo n_art (1,1) (1,n) Relativ o a (1,n) revisio na (0,n) Contac t autho (0,n) Scritto da autori (0,n) esperto (0,n) Nome Cognome affiliazione email tel originalita presentazione valore tecnico Nuovi vincoli: 1. esperto in { si, no } 2. Le conferenze possono essere associate tramite a Relativo_a solo ad esperti 3. Solo gli esperti revisionano gli articoli 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. CONFERENZE(Nome, Anno, Luogo, N_Art) ARTICOLI(Num, NomeC, AnnoC, Titolo, N_pag, Email_contact_author) AUTORI(Email, Nome, Cognome, Affiliazione, Tel, Esperto) SCRITTO_DA (Num, NomeC, AnnoC, Email) RELATIVO_A(Nome,Anno, Email) REVISIONA(Num, NomeC, AnnoC, Email)
e) Indicare eventuali ottimizzazioni che potrebbero essere applicate allo schema logico ottenuto. Si potrebbe inserire un codice per la conferenza, in modo da evitare di usare chiavi composte.
Esercizio 2 (Punti 12) a) Si consideri lo schema relazionale R(ABCDEF) con le seguenti dipendenze funzionali: A BCE BC E B AC Si richiede di 1. Determinare se l insieme delle dipendenze è minimale. Se non lo è, generare l insieme di dipendenze minimale equivalente a quello dato. Giustificare la risposta. Divido le parti destre: A C A E BC E B C A B B A In BC E, C puo essere eliminato perche E appartiene a (B)+. Si ottiene B E A E puo essere eliminata (si ottiene per transitivita da A B e B E) B C puo essere eliminata (si ottiene per transitivita da B A e A C) Non ci sono altre dipendenze o attributi ridondanti. L insieme minimale e : A C B E A B B A 2. Determinare le chiavi della relazione. Giustificare la risposta. DF non compaiono a sinistra, quindi appartengono alla chiave. DF+ = DF Provo ad estendere con altri attributi ADF+ = ADFBCE chiave BDF+ = BDFACE chiave Non ci sono altre chiavi (gli altri attributi non compaiono a sinistra). 3. Lo schema è in BCNF? É in 3NF? Giustificare le risposte. Non e in BCNF ( A non e chiave). Non e in 3NF (B non e chiave, E non e primo, quindi B E viola) 4. Mostrare una decomposizione lossless join dello schema in 3NF. Lo schema risultante e in BCNF? Giustificare la risposta. AC A C chiave A BCNF BE B E chiave B BCNF
AB A B, B A chiavi A, B BCNF ADF - chiave ADF BCNF 5. Mostrare una decomposizione lossless join dello schema in BCNF, che sia diversa da quella eventualmente trovata al punto 4. Lo schema trovato preserva le dipendenze? Giustificare la risposta. ABCDEF A BC B AE Chiavi: ADF, BDF ABC A BC B A chiave ADF BCNF ADEF A E Chiave A AE ADF A E - Chiave A chiave ADF BCNF BCNF Lo schema risultante e : ABC, AE, ADF Lo schema preserva le dipendenze.
Esercizio 3 (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) State sviluppando un applicazione e vi rendete conto che, per le interrogazioni che dovete eseguire, sarebbe utile clusterizzare la tabella Impiegati insieme ai Dipartimenti, sulla base del codice del dipartimento. Cosa fate: 1. Eseguite il comando opportuno per creare il clustering ritenuto necessario. 2. Nulla, una volta creata la tabella secondo una certa modalita, la clusterizzazione non puo essere cambiata. 3. Chiedete all amministratore del sistema per capire se e possibile modificare la clusterizzazione. 4. Chiedete all amministratore, che vi rispondera sicuramente di no. b) Si consideri la seguente interrogazione: SELECT Imp# FROM Impiegati WHERE Stipendio = 1000 OR Stipendio > 1500; Sapendo che la tabella Impiegati e dinamica (cioe soggetta a modifiche frequenti), per rendere piu efficiente l esecuzione dell interrogazione precedente, la soluzione migliore e : 1. Creare un indice ad albero sparso sul campo Stipendio. 2. Creare un indice ad albero denso sul campo Stipendio. 3. Organizzazione hash sul campo Stipendio. 4. L organizzazione ad albero e l organizzazione hash garantiscono le stesse prestazioni. c) Avete creato la tabella Impiegati. Adesso volete che l utente Rossi possa aggiornare solo tuple relative ad impiegati assegnati al dipartimento 10. 1. Non potete concedere il diritto di UPDATE se prima non vi e stato delegato. 2. Poiche avete creato la tabella Impiegati, potete concedere il diritto di UPDATE a Rossi. 3. Per concedere il diritto di UPDATE, dovete avere acquisito tale diritto con GRANT OPTION. 4. Il diritto puo essere concesso ma dipende dagli oggetti esistenti nello schema della base di dati.