Basi di dati: appello 28/02/06

Documenti analoghi
Basi di dati: appello 08/03/06

Basi di dati: appello 14/07/06

Basi di dati: appello 07/02/06

Basi di dati: appello 04/07/06

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

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

Basi di dati: appello 21/09/12

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

Basi di Dati Corso di Laura in Informatica Umanistica

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

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

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

Concettuale. Giuseppe Amato

Basi di dati I Prova di autovalutazione 30 ottobre 2014

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

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Interrogazioni nidificate

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

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

Interrogazioni nidificate

ESAME di INFORMATICA e ARCHIVIAZIONE

Soluzione esercitazione 01

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

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

Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore) DDL e progettazione

PROGETTAZIONE DI DATABASE Linguaggio SQL

Fondamenti di Informatica 2

Basi di Dati Corso di Laura in Informatica Umanistica

ESERCIZI SQL. Esercizio 1

ed SQL 10 Novembre 2009

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

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

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

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Esempio di database relazionale con l utilizzo del prodotto MySQL

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

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

Basi di Dati. Esercitazione Algebra Relazionale. 16 maggio 2008

SQL - Structured Query Language

SQL. Esercitazione 6-7. Contatti: Dott.ssa Silvia Bonfanti

SQL: DDL, VI, Aggiornamenti e Viste

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Interrogazioni complesse. SQL avanzato 1

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:

Laboratorio di Basi di Dati Esercizio 8.4/9.1

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Transcript:

Basi di dati: appello 28/02/06 Si consideri il seguente schema di base di dati che vuole tenere traccia della programmazione delle radio italiane: EMITTENTE (id, nome, frequenza, città.) SCALETTA (id_radio, nome_trasmissione, giorno, brano, ora_inizio) TRASMISSIONE (id_radio, nome_trasmissione, speaker, durata) BRANO (id_brano, titolo, artista, genere, durata) SPEAKER (CF, Nome, Cognome, datadinascita, cittànascita, telefono) Linguaggi Formali Esprimere in algebra e calcolo relazionale la seguente query: Trovare i nomi degli speaker che conducono almeno due trasmissioni differenti all interno della stessa radio ma che non hanno mai condotto trasmissioni con durata inferiore ai 60 minuti. Π nome,cognome (speaker CF=speaker (Π speaker (σ trasmissione<>t (trasmissione id_radio=r speaker =s (ρ (r, s,t) (id_radio,speaker,nome_trasmissione) trasmissione))) - Π speaker (σ durata>60 trasmissione))) 1

Linguaggi Formali {t t1 speaker, t2 trasmissione, t3 trasmissione (t[nome]=t1[nome] t[cognome]=t1[cognome] t1[cf]= t2[speaker] t2[id_radio]=t3[id_radio] t2[speaker]= t3[speaker] t2[nome_trasmissione]<>t3[nome_trasmissio ne] ( t4 trasmissione (t4[id_radio] = t2[id_radio] t4[speaker] = t2[speaker] t4[nome_trasmissione] = t2[nome_trasmissione] t4[durata] >60)))} SQL: interrogazioni Trovare i nomi delle trasmissioni e i giorni in cui la relativa scaletta prevedeva almeno due brani di musica rock e nessun brano di musica classica SELECT nome_trasmissione, giorno FROM SCALETTA JOIN BRANO ON brano=id_brano WHERE genere = rock and id_radio, nome_trasmissione, giorno NOT IN (SELECT id_radio, nome_trasmissione, giorno FROM SCALETTA JOIN BRANO ON brano=id_brano WHERE genere= classica ) GROUP BY id_radio, nome_trasmissione, giorno HAVING COUNT(*)>=2 2

SQL: interrogazioni Trovare quale (o quali) speaker conducono trasmissioni in cui la durata totale dello spazio dedicato ai brani musicali è sopra la media rispetto alle altre trasmissioni CREATE VIEW SpazioBrani(radio,trasmissione,spazio) AS SELECT id_radio, nome_trasmissione, SUM(durata) FROM SCALETTA, BRANO WHERE scaletta.brano=brano.id_brano GROUP BY id_radio, nome_trasmissione SELECT Nome, Cognome FROM SPEAKER, TRASMISSIONE, SpazioBrani WHERE Speaker.CF = Trasmissione.speaker AND Trasmissione.id_radio=SpazioBrani.radio AND Trasmissione.nome_trasmissione=SpazioBrani.nome_trasmissione and spazio >= (SELECT AVG(spazio) FROM SpazioBrani) SQL DDL create table SCALETTA ( id_radio char(6), nome_trasmissione varchar (15), giorno date not null, brano char(6) references BRANO(id_brano id_brano) on delete cascade on update cascade, ora_inizio time, primary key (id_radio, nome_trasmissione, giorno, brano) foreign key (id_radio, nome_trasmissione) references TRASMISSIONE (id_radio( id_radio, nome_trasmissione) on delete cascade on update cascade); 3

SQL DDL create table TRASMISSIONE ( id_radio char(6) references EMITTENTE (id_radio) on update cascade on delete cascade, nome_trasmissione varchar (15), speaker char(16) references SPEAKER (CF) on update cascade on delete cascade, durata INT, primary key(id_radio id_radio, nome_trasmissione) ); SQL: espressione di vincoli La somma della durata dei brani previsti per una trasmissione non superi la durata della trasmissione stessa. CREATE ASSERTION ControlloDurata CHECK (NOT EXIST (SELECT * FROM TRASMISSIONE WHERE durata < ANY (SELECT SUM (Durata) FROM scaletta, brano WHERE scaletta.brano=brano.id_brano AND id_radio=trasmissione.id_radio AND nome_trasmissione=trasmissione.nome_trasmissione GROUP BY id_radio, nome_trasmissione, giorno))) 4

Relativo a Pagamento Numero carta Codice (0,1) Num. posti Relativa a Data Prenotazione Numero effettua Sconto Prenotazione Con tessera Indirizzo Telefono Mail Cliente CF Nome Cognome Nome Capienza (0,1) Data Ora Rappresenta zione Svolta in Sala acquista (1,N) Carta Cod_carta Data emissione Progettazione Durata (1,N) Spettacolo (t,e) Titolo Genere regista Spettacolo teatrale Nome compagnia Film Attore protagonista Progetto logico Cliente (CF, Nome, Cognome, Indirizzo, Telefono, mail) Carta(Cod_carta, Data_emissione, CF_cliente) Prenotazione (Numero, Data, CF_cliente, tipo_pren, sconto*) Pagamento (Codice, Num_carta, Num_prenotazione) Spettacolo (Titolo, genere, regista, durata, tipo, nomecompagnia*, attoreprotagonista*) Rappresentazione (Titolo, Data,ora, sala) Sala (Nome, Capienza) DettagliPrenotazione (Num_prenotazione, Titolo, Data, Ora, Num_Posti) 5

Vincoli di integrità Carta.CF_cliente Cliente.CF Prenotazione.CF_cliente Cliente.CF Pagamento.Num_prenotazione Prenotazione.Numero Rappresentazione.Titolo Spettacolo.Titolo Rappresentazione.Sala Sala.Nome Ordine.CF_cliente Cliente.CF DettagliPrenotazione.[Titolo, Data, Ora] Rappresentazione.[Titolo, Data, Ora] DettagliPrenotazione.Num_prenotazione Prenotazione.Numero 6