Basi di dati: appello 08/03/06

Documenti analoghi
Basi di dati: appello 28/02/06

Basi di dati: appello 04/07/06

Basi di dati: appello 14/07/06

Basi di dati: appello 07/02/06

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

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

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.

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

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

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

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

Basi di dati I Prova di autovalutazione 30 ottobre 2014

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

Concettuale. Giuseppe Amato

Interrogazioni nidificate

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

Interrogazioni nidificate

ESERCITAZIONE: Fornitore-Fornisce-Articolo

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

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

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

ESAME di INFORMATICA e ARCHIVIAZIONE

ed SQL 10 Novembre 2009

Basi di Dati Corso di Laura in Informatica Umanistica

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

SQL-DML/3. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

PROGETTAZIONE DI DATABASE Linguaggio SQL

ESERCIZI SQL. Esercizio 1

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

Soluzione esercitazione 01

Fondamenti di Informatica 2

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

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

Basi di Dati. Esercitazione Algebra Relazionale. 16 maggio 2008

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

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:

SQL Laboratorio di Basi di Dati a.a. 2002/2003

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

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

Interrogazioni in SQL

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

Lezione 4. Dallo schema ER al relazionale

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

Transcript:

Basi di dati: appello 08/03/06 Si consideri il seguente schema di base di dati che vuole tenere traccia delle rappresentazioni di un gruppo di compagnie teatrali: COMPAGNIA (nome, cfdirettore, città_sede) TEATRO (id_teatro, nome, città, numero di telefono) CALENDARIO (id_teatro, giorno, titolo, compagnia, ora_inizio, prezzo_biglietto) SPETTACOLO (titolo, compagnia, genere, durata) PERSONA (CF, Nome, Cognome, datadinascita, cittànascita, telefono) Linguaggi Formali Esprimere in algebra e calcolo relazionale e Datalog la seguente query: Trovare i nomi dei direttori di compagnie che effettuano almeno due rappresentazioni diverse in uno stesso teatro ma che non hanno mai effettuato rappresentazioni di genere comico. Π nome,cognome (persona CF=cfdirettore (Π cfdirettore (compagnia nome=compagnia (Π compagnia (σ titolo<>t (calendario id_teatro=te compagnia =c (ρ (te,c,,t) (id_teatro, compagnia, titolo) calendario))) Π compagnia (σ genere= comico spettacolo))))) 1

Linguaggi Formali {t t1 persona, t2 calendario, t3 calendario, t4 compagnia (t[nome]=t1[nome] t[cognome]=t1[cognome] t1[cf]= t4[cfdirettore] t2[id_teatro]=t3[id_teatro] t2[compagnia]= t3[compagnia] t2[titolo]<>t3[titolo] t4[nome]<>t2[compagnia] ( t5 spettacolo (t5[compagnia] = t4[nome] t5[genere] = comico )))} Linguaggi Formali CompagniaNoComico(Nome) :- spettacolo(_,nome, comico,_) Direttori(Nome,Cognome):- Persona(CF,Nome,Cognome,_,_,_), Compagnia(Nome, CF,_), Calendario(Teatro,_,titolo1, Nome,_,_), Calendario(Teatro,_,titolo2, Nome,_,_), CompagniaNoComico(Nome), titolo1<>titolo2 2

SQL: interrogazioni Trovare i nomi e gli indirizzi dei teatri il cui calendario preveda almeno due rappresentazioni di genere comico e nessuno spettacolo della compagnia Il Teatrino SELECT nome, città FROM TEATRO WHERE id_teatro IN (SELECT id_teatro FROM CALENDARIO JOIN SPETTACOLO ON calendario.titolo=spettacolo.titolo AND calendario.compagnia=spettacolo.compagnia WHERE genere= comico GROUP BY id_teatro HAVING COUNT(DISTINCT (titolo))>=2) AND id_teatro NOT IN (SELECT id_teatro FROM CALENDARIO WHERE compagnia= Il teatrino ) SQL: interrogazioni Trovare quale compagnia ha in programma il maggior numero di rappresentazioni nel teatro Teatro Romano di Verona CREATE VIEW NumRappr(Compagnia,Numero) AS SELECT compagnia, count(*) as Numero FROM CALENDARIO, TEATRO WHERE calendario.id_teatro=teatro.id_teatro AND Teatro.Nome= Teatro Romano AND Teatro.Città= Verona GROUP BY compagnia SELECT Compagnia FROM NumRappr WHERE Numero = (SELECT MAX(Numero) FROM NumRappr) 3

SQL DDL create table TEATRO ( id_teatro char(6) primary key nome_varchar (20), città varchar(15), numero_telefono varchar(15), ); SQL DDL create table CALENDARIO ( id_teatro char(6) references TEATRO (id_teatro) on delete cascade on update cascade, giorno date, titolo varchar(20), compagnia varchar(20), ora_inizio time, prezzo_biglietto integer, primary key (id_teatro,, giorno, titolo, compagnia) foreign key (titolo, compagnia) references SPETTACOLO (titolo, compagnia) on delete cascade on update cascade); 4

SQL: espressione di vincoli La somma della durata delle rappresentazioni previste per un teatro in un giorno non superi le 6 ore. CREATE ASSERTION ControlloDurata CHECK ( 6 > ALL (SELECT SUM (Durata) FROM Calendario, Spettacolo WHERE Calendario.titolo=spettacolo.titolo AND Calendario.compagnia=spettacolo.compagnia GROUP BY id_teatro, giorno)) SQL: espressione di vincoli (2) La somma della durata delle rappresentazioni previste per un teatro in un giorno non superi le 6 ore. CREATE ASSERTION ControlloDurata CHECK ( NOT EXIST (SELECT * FROM Calendario, Spettacolo WHERE Calendario.titolo=spettacolo.titolo AND Calendario.compagnia=spettacolo.compagnia GROUP BY id_teatro, giorno HAVING (sum(durata)) > 6)) 5

Relativo a Pagamento Numero carta Codice (0,1) Relativa a Data Iscrizione Numero effettua (1,n) Indirizzo Telefono Mail Cliente CF Nome Cognome Sconto Nome Capienza acquista Iscrizione socio Cod_carta Data emissione Giorno Ora Turno Svolta in (0,n) Sala (t,e) Associato a Piscina Tipo Stanza Numero Corso (t,e) Disciplina Data Inizio frequenza Nuoto Livello partecipanti Palestra Nome istruttore Progetto logico Cliente (CF, Nome, Cognome, Indirizzo, Telefono, mail) TesseraSocio(Cod_carta, Data_emissione, CF_cliente) Iscrizione (Numero, Data, CF_cliente, tipo_pren, sconto*) Pagamento (Codice, Num_carta, Num_iscrizione) Corso (Disciplina, Data_inizio, frequenza, tipo, Livellopartecipanti*, nomeistruttore*) Turno (Disciplina, Giorno, ora, Piscina*, Stanza*) Piscina (NomePiscina, Capienza, tipo_piscina) Stanza (NomeStanza, Capienza, numero_stanza) RelativaA (Num_iscrizione, Disciplina) 6

Vincoli di integrità TesseraSocio.CF_cliente Cliente.CF Iscrizione.CF_cliente Cliente.CF Pagamento.Num_iscrizione Iscrizione.Numero Turno.Disciplina Corso.Disciplina Turno.Piscina Piscina.NomePiscina Turno.Stanza Stanza.NomeStanza RelativaA.Disciplina Corso.Disciplina RelativaA.Num_iscrizione Iscrizione.Numero 7