Basi di dati: appello 21/09/12

Похожие документы
Basi di dati: appello 14/07/06

Basi di dati: appello 04/07/06

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

Basi di dati: appello 07/02/06

Basi di dati: appello 08/03/06

Basi di dati: appello 28/02/06

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

Concettuale. Giuseppe Amato

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

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di Dati Corso di Laura in Informatica Umanistica

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

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

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

ESAME di INFORMATICA e ARCHIVIAZIONE

ESERCITAZIONE: Fornitore-Fornisce-Articolo

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

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

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

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

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

Interrogazioni nidificate

Interrogazioni nidificate

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

ed SQL 10 Novembre 2009

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

Basi di Dati: Elementi

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

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

Esercizio 5.1. Soluzione:

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

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

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

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

Lezione 4. Dallo schema ER al relazionale

Fondamenti di Informatica 2

ESERCIZI SQL. Esercizio 1

Soluzione esercitazione 01

OBIETTIVI DELL'ESERCITAZIONE

Basi di Dati. Esercitazione Algebra Relazionale. 16 maggio 2008

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

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 Corso di Laura in Informatica Umanistica

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

Interrogazioni in SQL

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Interrogazioni complesse. SQL avanzato 1

SQL - Structured Query Language

Транскрипт:

Basi di dati: appello 21/09/12 Si consideri il seguente schema di base di dati che vuole tenere traccia degli immobili venduti da diverse agenzie dislocate su tutto il territorio nazionale: AGENZIA (Codice, Nome, Indirizzo, Città, Telefono, CFTitolare) IMMOBILE (CodiceAgenzia, CodiceImmobile, Indirizzo, Città, Tiipologia, Superficie, Vani, valorestimato, valoreproposto, CFProprietario) VENDITA (CodiceContratto, CodiceAgenzia, CodiceImmobile, CFAcquirente, Data, PrezzoVendita, CFAgente) PERSONA (CF, Nome, Cognome, Indirizzo, Città, Tel) Il campo Tipologia della tabella IMMOBILE rappresenta la tipologia dell immobile gestito: popolare, economico, civile, signorile, lusso. Il campo CFProprietario nella tabella IMMOBILE si riferisce alla persona che vuole vendere l immobile. La tabella PERSONA contiene i dati anagrafici sia delle persone che lavorano all interno dell agenzia che dei proprietari e acquirenti degli immobili. NOTA: ogni immobile è gestito da una sola agenzia. Linguaggi Formali Esprimere in algebra (ottimizzata), calcolo relazionale e Datalog la seguente query: Trovare codice fiscale, cognome e nome delle persone che nel 2011 sono state sia venditori che acquirenti (di due immobili diversi).

Π CF, Nome, Cognome Π CF, Nome, Cognome CF=CFProprietario Π CFProprietario PERSONA σ CodiceAgenzia<>A OR CodiceImmobile<>I CFProprietario=CFAcquirente, ρ Aß CodiceAgenzia, Iß CodiceImmobile Π CodiceAgenzia, CodiceImmobile,CFProprietario IMMOBILE Π CodiceAgenzia, CodiceImmobile σ Data>01/01/2011 AND Data<31/12/2011 VENDITA Π CodiceAgenzia, CodiceImmobile,CFAcquirente σ Data>01/01/2011 AND Data<31/12/2011 VENDITA

Linguaggi Formali Calcolo Relazionale {t t1 PERSONA, t2 IMMOBILE, t3,t4 VENDITA (t[cf, Nome, Cognome]=t1[CF, Nome, Cognome] t1[cf]=t2[cfproprietario] t2[codiceagenzia, CodiceImmobile] = t3[codiceagenzia, CodiceImmobile] t3[data]>31/12/2010 t3[data]<01/01/2012 t4[data]>31/12/2010 t4[data]<01/01/2012 t2[cfproprietario] = t4[cfacquirente] t2[codiceagenzia, CodiceImmobile] <> t4[cfacquirente, CodiceImmobile])

Linguaggi Formali - DataLog VenditoriAcquirenti(CF, Nome, Cognome):- PERSONA (CF, Nome, Cognome, _, _,_ ) IMMOBILE (Agenzia, Immobile, _, _, _, _, _,_, _, CFProp) VENDITA (_, Agenzia, Immobile, CF, _, _, _) VENDITA (_, Agenzia1, Immobile1, CF, _, _) Agenzia<>Agenzia1 VenditoriAcquirenti(CF, Nome, Cognome):- PERSONA (CF, Nome, Cognome, _, _,_ ) IMMOBILE (Agenzia, Immobile, _, _, _, _, _,_, _, CFProp) VENDITA (_, Agenzia, Immobile, CF, _, _, _) VENDITA (_, Agenzia1, Immobile1, CF, _, _) Immobile<>Immobile1? - VenditoriAcquirenti (X, Y, Z)

SQL: interrogazioni Trovare il riferimento agli agenti che hanno gestito più di 15 vendite ma una sola relativa a immobili di categoria lusso SELECT CFAgente FROM VENDITA WHERE CFAgente IN (SELECT CFAgente FROM VENDITA JOIN IMMOBILE ON Vendita.[CodiceAgenzia, CodiceImmobile]=Immobile. [CodiceAgenzia, CodiceImmobile] WHERE Tipologia = lusso GROUPBY CFAgente HAVING Count(*) =1) GROUPBY CFAgente HAVING Count(*)>=15

SQL: interrogazioni Trovare il nome e cognome dei titolari delle agenzie che nel corso del 2011 hanno venduto più case rispetto al 2010 CREATE VIEW Vendite2011 (Agenzia, Vendite) AS SELECT CodiceAgenzia, COUNT(*) FROM VENDITA WHERE DATA BETWEEN 01/01/2011 AND 31/12/2011 GROUP BY CodiceAgenzia SELECT Nome, Cognome FROM Vendite2011, Agenzia As A WHERE Vendite2011.Agenzia=A.Codice AND Vendite > (SELECT COUNT(*) FROM VENDITA AS V WHERE V.CodiceAgenzia=A.Codice AND DATA BETWEEN 01/01/2010 AND 31/12/2010)

SQL DDL create table AGENZIA ( Codice char(6), Nome varchar (20), Indirizzo varchar(25), Città varchar (20), Telefono varchar(15), CFTitolare char(16)references PERSONA (CF) on update cascade, on delete no action, primary key (Codice) )

SQL DDL create table VENDITA ( CodiceContratto char(6) primary key, CodiceAgenzia char(6), CodiceImmobile char(4), CFAcquirente char(16) char(16)references PERSONA (CF) on update cascade on delete no action, Data Date, PrezzoVendita Numeric (9,2) CFAgente char (16) char(16)references PERSONA (CF) on update cascade on delete no action, foreign key (CodiceAgenzia, CodiceImmobile) references IMMOBILE(CodiceAgenzia, CodiceImmobile) on delete cascade on update no action)

SQL: espressione di vincoli Il prezzo di vendita deve sempre essere superiore al valore stimato CREATE ASSERTION ControlloPrezzo CHECK ( NOT EXISTS (SELECT * FROM Immonile JOIN Vendita ON Immobile.[CodiceAgenzia,CodiceImmobile]=Vendita. [CodiceAgenzia,CodiceImmobile] WHERE PrezzoStimato > PrezzoVendita))

Piscina Nome Tel Vasca Struttura Codice P_max Corsi Organizza Codice Lezione Presenti Iscritto Responsabile Indirizzo Composizione Progettazione Nome Descrizione Turno Tipologia composto Numero Fax P_min Giorno Nome Svolto Ora_Inizio Durata Insegnante Numero Data CF Nome Cognome DataNascita (0,N) (0,N) Fitness Nuoto Disciplina Matr Cognome Nome DataNascita D_Assunzione Tel (T,S) Abilitati Iscrizione Codice Riferimento (0,N) Effettuata Data Prezzo Nuoto libero Svolge OraFine OraInizio Svolge Nome

Progetto logico Piscina (Nome, Indirizzo, Tel, Fax) Vasca (NomePiscina, Codice, P_max, P_min) Corsi (Codice, Nome, Descrizione, Piscina) Turno (CodiceCorso, Numero, Tipologia, Ora_inizio, Durata, Insegnante) GiorniTurni (CodiceCorso, Numero, Giorno) Giorni(Nome) Lezione (CodiceCorso, NumeroTurno, NumeroLezione, Data) Iscritto (CF, Nome, Cognome, DataNascita) Presenti (CodiceCorso, NumeroTurno, NumeroLezione, Iscritto) Iscrizione (Codice, Data, Prezzo, Iscritto, CodiceCorso, Numero) Insegnante (Matricola, Nome, Cognome, Tel, Data_Nascita, Data_Assunzione, Tipo) Disciplina (Nome) Competenze (Insegnante, Disciplina) NuotoLibero (NomePiscina, CodiceVasca, Giorno, OraInizio, OraFine)

Vincoli di integrità Vasca.NomePiscina à Piscina.Nome Corsi.Piscinaà Piscina.Nome Turno.CodiceCorso à Corsi.Codice GiorniTurni.[CodiceCorso, Numero]à Turno. [CodiceCorso, Numero] GiorniTurni.Giorno à Giorno.Nome Lezione.[CodiceCorso, Numero]à Turno. [CodiceCorso, Numero] Presenti [CodiceCorso, NumeroTurno, NumeroLezione] à Lezione. [CodiceCorso, NumeroNumeroLezione] Presenti.Iscritto à Iscritto.CF Iscrizione.[CodiceCorso, Numero]à Turno. [CodiceCorso, Numero] Iscrizione.Iscrittoà Iscritto.CF Competenze.Insegnante à Insegnante.Matricola Competenze.Disciplina à Disciplina.Nome Turno.Insegnanteà Insegnante.Matricola NuotoLibero.[NomePiscina, CodiceVasca] à Vasca.[NomePiscina, Codice] NuotoLibero.Giornoà Giorno.Nome