ESAME DB 31/01/2006 Prof. Giovanni Giuffrida SECONDO MODULO (DB2) NON DIMENTICATE IL NOME E LA MATRICOLA Nome ________________________________________ Matricola: ___________________ INDICATE COSA DOVETE REGISTRARE DB 9cfu DB1 6cfu DB2 6cfu Altro: __________ Punteggio finale (questa parte verrà riempita dal docente) ======== BUON LAVORO ======== DIPENDENZE FUNZIONALI E NORMALIZZAZIONE [15 punti] Considera un database di opere sinfoniche contenenti informazioni su teatri, date, orchestre, direttori d’orchestra, compositori e sinfonie. Assumere che: Non possono esistere due opere di autori diversi con lo stesso titolo; al massimo un’orchestra ed un direttore possono suonare in un certo teatro in una certa data; un direttore può essere assegnato ad un solo teatro ed un teatro può avere un solo direttore; le sinfonie sono composte da un singolo compositore; un’orchestra può suonare diverse sinfonie di diversi compositori in un teatro nello stesso giorno. Definire uno schema relazionale per il problema dato, formalizzare un insieme di dipendenze funzionali che modellino i vincoli sopra definiti, indicare le chiavi nello schema definito e mostrare che lo schema fornito sia normalizzato secondo la BCNF. [5 punti] Indica tre benefici pratici derivanti dalla normalizzazione BCNF di uno schema relazionale. TRIGGER Viene dato il seguente schema inerente un database di articoli di una rivista settimanale. Ogni articolo è identificato da una chiave univoca (idArticolo) e viene pubblicato su un certo numero della rivista (numRivista). Il significato delle relazioni è ovvio. Articolo( idArticolo, numRivista, idAutore, titolo); Autore( idAutore, nome, cognome); Citazione( idArticolo, numRivista, idArticoloCitato, numRivistaCitata); PosParole( idParola, idArticolo, numRivista, posizione); Parole( idParola, descParola); Rivista( numRivista, data, copieDistribuite); Le uniche chiavi dello schema sono quelle indicate (chiavi primarie) e nessun altra. Per lo schema indicato scrivere dei trigger in formato IBM-DB2 a supporto delle seguenti operazioni: [4 punti] Integrità referenziale 1: Garantire che per ogni inserimento e aggiornamento nella relazione “Citazione” l’articolo citato (idArticoloCitato) e il numero della rivista (numRivistaCitata) corrispondano ad un articolo indicato nella relazione Articolo. [4 punti] Integrità referenziale 2: Quando un autore viene licenziato (i.e., rimosso dalla relazione “Autore”) tutti i riferimenti ai suoi articoli devono essere cancellati. [4 punti] Sequenza: Garantire che le parole nella relazione PosParole vengano inserite in ordine (1,2,3…), cioè ogni inserimento di una parola segua quello precedente e che quindi non ci siano buchi nella sequenza e che la sequenza parta da 1.