PROVA SCRITTA DI TECNOLOGIA DATABASE 14/12/2005 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

Documenti analoghi
PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

PROVA SCRITTA DI TECNOLOGIA DATABASE 05/12/2003 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

PROVA SCRITTA DI TECNOLOGIA DATABASE 10/12/2008 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

PROVA SCRITTA DI TECNOLOGIA DATABASE

σ data 15/12/2013 data 20/12/2014

Laboratorio di Basi di Dati

TRIGGER Regole Attive (Trigger) OLD_TABLE NEW_TABLE old new

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

IMPIEGATO(Nome, Salario, DipNum) DIPARTIMENTO (DipNum, NomeManager)

ESEMPIO DI TRIGGER PER IL CONTROLLO DELLE PROPRIETÀ COPERTURA DI UNA GERARCHIA (ARGOMENTO SVOLTO IN CLASSE IL 25 MAGGIO 2011)

Capitolo 5. Soluzione: Soluzione in C:

Capitolo 7. Esercizio 7.1

Nella relazione CINEMA, Nome è chiave secondaria. Nella relazione FILM, CodRegista, e CodProtagonista sono chiavi esterne sulla tabella PERSONE.

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Progettazione di Sistemi Informatici

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

ESERCIZI SQL. Esercizio 1

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Tali regole vengono attivate in modo automatico al verificarsi di specifici eventi sulla. eseguono azioni sulla base di dati stessa.

Business Intelligence

SQL - Structured Query Language

Manuale SQL. Manuale SQL - 1 -

Basi di dati: appello 14/07/06

Le Basi di Dati Attive

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

ESAME di INFORMATICA e ARCHIVIAZIONE

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Basi di Dati e Sistemi Informativi I, Prove scritte AA 2003/04

Vincoli e Triggers. Vincoli. Tipo di vincoli. Chiavi esterne

Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Esame di Sistemi Informativi e Basi di Dati 6 crediti Aprile 2006

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m

Basi di Dati e Sistemi Informativi. Asserzioni, Viste e Trigger Basi di dati Attive

Silvia Chiusano, Paolo Garza 1

Esercitazione: Interrogazioni SQL

Prova Scritta di Basi di Dati

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

Basi di dati: appello 04/07/06

Verifica di Informatica. Cognome e Nome: Classe 5ª Ci, Data

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Corso di Basi di Dati

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

SQL: definizione schema

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

2011 Politecnico di Torino 1

Il linguaggio SQL: le viste

Fondamenti di Teoria delle Basi di Dati

DBMS. Affidabilità. Privatezza dei dati. Efficienza. Efficacia. Un DBMS deve garantire:

Il linguaggio SQL: trigger

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Esame Informatica Generale 13/04/2016 Tema A

Simulazione prova pratica

Basi di Dati Corso di Laura in Informatica Umanistica

Esempio di database relazionale con l utilizzo del prodotto MySQL

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Esercizio 5.1 Soluzione:

Esercizio con attributo cross-dimensionale - transazionale

Basi di Dati: Elementi

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Basi di Dati: Corso di laboratorio

Concettuale. Giuseppe Amato

Basi di dati: appello 07/02/06

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Nozione ed uso. Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso:

M963 ESAME DI STATO DI ISTRUZIONE SECONDARIA SUPERIORE Indirizzo: INFORMATICA E TELECOMUNICAZIONI ARTICOLAZIONE INFORMATICA Tema di: INFORMATICA

Tabelle esempio: Impiegato/Dipartimento

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Schema Del DB Operazionale TELEFONATE

Basi di dati: appello 08/03/06

Soluzione esercitazione 01

Basi di Dati. S Q L Lezione 4

Basi di Dati: Corso di laboratorio

Prova del 14/09/09. Considerare la seguente descrizione di un campeggio:

SQL (STRUCTURED QUERY LANGUAGE)

Esame di Basi di Dati SOLUZIONE APPELLO 14/06/2011

Vincoli di Integrità

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Soluzione DDL ed Algebra Relazionale

Corso di Basi di Dati A.A. 2014/2015

Basi di Dati. S Q L Lezione 5

Esame di Basi di Dati, SOLUZIONE APPELLO 09/06/2009

MEZZI CodM Tipo Targa AnnoI Assicurato

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

1. Analisi

Laboratorio di Basi di Dati Esercizio 8.4/9.1

cliente... nuovo cliente trasloco

Stored Procedure. Antonella Poggi. Dipartimento di informatica e Sistemistica Sapienza Università di Roma

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Interrogazioni nidificate

SOLUZIONE ESAME DI STATO 2014/2015 INFORMATICA. Giselda De Vita 2015

Transcript:

PROVA SCRITTA DI TECNOLOGIA DATABASE 14/12/2005 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF. SONIA BERGAMASCHI Esercizio 1 (punti 20) Dato il seguente schema relazionale: GIORNALISTA(CF,NOME,NAZIONE) GIORNALE(CODG,NOME,NAZIONE) ARTICOLO(CODA,TITOLO,CODG) FK: CODG REFERENCES GIORNALE AUTORE_ARTICOLO(CF,CODA) FK: CODA REFERENCES ARTICOLO FK: CF REFERENCES GIORNALISTA Scrivere in SQL le seguenti interrogazioni 1) Selezionare il giornalista, tra quelli che hanno scritto per un solo giornale, che ha pubblicato il maggior di articoli; 2) Selezionare, per ciascuna nazione, il numero medio di articoli scritti su ciascun giornale da (almeno) un giornalista di quella nazione. Scrivere in embedded SQL la seguente interrogazione: 3) Mostrare, per ciascun giornalista, il numero di articoli scritti insieme ad almeno un altro giornalista della stessa nazione.

Esercizio 2 (punti 7) Dato il seguente schema relazionale: R(A,B,C,D,E) e considerando le seguenti dipendenze funzionali: (FD1) A BC (FD2) CD E (FD3) B D (FD4) E A Viene richiesto di: Determinare la chiave o le chiavi dello schema di relazione; Determinare se lo schema di relazione è in 2NF, 3NF e BCNF; Data la decomposizione binaria R1(A,B,C) R2(A,D,E) Scrivere i trigger che preservano le dipendenze funzionali FD2 e FD3 in caso di inserimento ed aggiornamento dati. Esercizio 3 (punti 6) Si completi lo schema database con le primary e foreign key, e si scrivano i trigger che preservano le dipendenze funzionali elencate nel seguito: Programma CodS CodT 001 1 002 2 002 4 005 4 004 1 Teatro CodT Nome 1 Aaaaaa 2 Bbbbb 3 Ccccc 4 Dddd Spettacolo CodS Nome Tipo 001 Aaaaaaaaa Tipo1 002 Bbbbbb Tipo1 003 Ccccc Tipo2 004 Dddddd Tipo1 005 Eeeeee Tipo3 Dipendenze funzionali: 1. Il codice del Teatro (CodT) determina il nome (Nome). 2. Il codice spettacolo (CodS) determina il nome (Nome) e il tipo (Tipo). 3. Programma definisce gli spettacoli di un teatro. 4. Un teatro non può rappresentare più volte lo stesso spettacolo. 5. Il programma di un teatro può contenere al più quattro spettacoli dello stesso tipo.

Soluzione Esercizio 1 GIORNALISTA(CF,NOME,NAZIONE) GIORNALE(CODG,NOME,NAZIONE) ARTICOLO(CODA,TITOLO,CODG) FK: CODG REFERENCES GIORNALE AUTORE_ARTICOLO(CF,CODA) FK: CODA REFERENCES ARTICOLO FK: CF REFERENCES GIORNALISTA 1) Selezionare il giornalista, tra quelli che hanno scritto per un solo giornale, che ha pubblicato il maggior di articoli; SELECT AU.CF FROM AUTORE_ARTICOLO AU, ARTICOLO AR WHERE AU.CODA = AR.CODA AND AR.CF NOT IN (SELECT AR1.CF FROM ARTICOLO AR1, AUTORE_ARTICOLO AU1 WHERE AU1.CODA = AR1.CODA AND AR1.CODG <> AR.CODG) GROUP BY AU.CF HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM AUTORE_ARTICOLO AU2, ARTICOLO AR2 WHERE AU2.CODA = AR2.CODA AND AR2.CF NOT IN ( SELECT AR3.CF FROM ARTICOLO AR3, AUTORE_ARTICOLO AU3 WHERE AU3.CODA = AR3.CODA AND AR3.CODG <> AR2.CODG) GROUP BY AU3.CF)

2) Selezionare, per ciascuna nazione, il numero medio di articoli scritti su ciascun giornale da (almeno) un giornalista di quella nazione. CREATE VIEW V1 AS SELECT G.CODG, G.NAZIONE, COUNT(*) AS NARTICOLI FROM GIORNALE G, ARTICOLO AR WHERE G.CODG = AR.CODG AND AR.CODA IN (SELECT AU.CODA FROM AUTORE_ARTICOLO AU, GIORNALISTA GI WHERE AU.CF = GI.CF AND GI.NAZIONE = G.NAZIONE) GROUP BY G.CODG, G.NAZIONE SELECT NAZIONE, AVG(NARTICOLI) FROM V1 GROUP BY NAZIONE 3) Mostrare, per ciascun giornalista, il numero di articoli scritti insieme ad almeno un altro giornalista della stessa nazione. Q1: SELECT CF, COUNT(*) AS NUM_ART FROM AUTORE_ARTICOLO A, GIORNALISTA G WHERE A.CF = G.CF AND A.CODA IN (SELECT CODA FROM AUTORE_ARTICOLO A1, GIORNALISTA G1 WHERE A1.CF = G1.CF AND G1.NAZIONE = G.NAZIONE AND A1.CF <> A.CF) GROUP BY CF

Declare Cursor C1 For Q1 open C1; fetch C1 into :CF, :NUM_ART; while (SQLCODE == 0){ CF_ATTUALE = CF; while (CF_ATTUALE == CF && SQLCODE == 0){ printf( CF %s, N. articoli %f\n, CF_ATTUALE, NUM_ART); fetch C1 into :CF, :NUM_ART; } } close C1; Soluzione Esercizio 2 Dato il seguente schema relazionale: R(A,B,C,D,E) e considerando le seguenti dipendenze funzionali: (FD1) A BC (FD2) CD E (FD3) B D (FD4) E A Le chiavi dello schema sono: K1 = A K1 = E K3 = BC K4 = CD (FD1) A BC è in BCNF (FD2) CD E è in BCNF (FD3) B D è in 3NF (FD4) E A è in BCNF Lo schema è pertanto in 3NF.

R1(A,B,C) R2(A,D,E) Scrivere i trigger che preservano le dipendenze funzionali FD2 e FD3 in caso di inserimento ed aggiornamento dati. CREATE TRIGGER T1 AFTER INSERT, UPDATE ON R2(E) REFERENCING NEW_TABLE AS NUOVAT FOR EACH STATEMENT MODE DB2SQL WHEN (EXISTS ( SELECT R1.C, NUOVAT.D FROM R1, NUOVAT WHERE R1.A = NUOVAT.A GROUP BY R1.C, NUOVAT.D HAVING COUNT(DISTINCT E) > 1 )) signal sqlstate '70000'('INSERIMENTO IN R2: Errore CARDINALITA MASSIMA.')! CREATE TRIGGER T2 AFTER INSERT, UPDATE ON R2(D) REFERENCING NEW_TABLE AS NUOVAT FOR EACH STATEMENT MODE DB2SQL WHEN (EXISTS ( SELECT R1.B FROM R1, NUOVAT WHERE R1.A = NUOVAT.A GROUP BY R1.B HAVING COUNT(DISTINCT D) > 1 )) signal sqlstate '70000'('INSERIMENTO IN R2: Errore CARDINALITA MASSIMA.')! Soluzione esercizio n. 3 Il programma di un teatro può contenere al più quattro spettacoli dello stesso tipo Dipendenza n. 1: chiave primaria sulla tabella Teatro su CodT. Dipendenza n. 2: chiave primaria sulla tabella Spettacolo su CodS. Dipendenza n. 3: Foreign Key su Contiene: FK: CodS REFERENCES Spettacolo FK: CodT REFERENCES Teatro Dipendenza n. 4: chiave primaria sulla tabella Contiene sulla coppia CodS,CodT. Dipendenza n. 5: Definire il seguente trigger: CREATE TRIGGER Controllo_Numero_Spettacoli ON Programma FOR INSERT, UPDATE AS --- Dichiaro il contatore

Declare @cont int Select @cont = Max(count(*)) from Programma, inserted where Programma.CodT = inserted.codt And Programma.CodS IN (SELECT CodS FROM Spettacoli where Tipo = inserted.tipo) GROUP BY Programma.CodT if @cont > 4 begin raiserror(il programma di un teatro può contenere al più quattro spettacoli dello stesso tipo.',16,1) rollback transaction end