Basi di Dati 1 Esercitazione 4 -...

12
Matteo Picozzi http://home.dei.polimi.it/picozzi {[email protected]} SQL DDL e vincoli Basi di Dati 1 Esercitazione 4

Transcript of Basi di Dati 1 Esercitazione 4 -...

Page 1: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Matteo Picozzi http://home.dei.polimi.it/picozzi

{[email protected]}

SQL DDL e vincoli

Basi di Dati 1 Esercitazione 4

Page 2: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

DDL e vincoli

• intra-relazionali - not null - unique - primary key - check

• inter-relazionali - check - references - foreign key

���2

create table NomeTabella ( NomeAttributo Dominio [ ValoreDiDefault ] [ Constraints ]{, NomeAttributo Dominio [ ValoreDiDefault ] [ Constraints ] }

[ Constraints ] )

Page 3: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Esercizio 1 - dal TdE 07/09/2006���3

Si consideri il seguente schema di base di dati che vuole tenere traccia dei dati di un campionato di pallacanestro (non vengono memorizzate informazioni di tipo storico):!SQUADRA(NomeSquadra, Città, Logo, NomeAllenatore, CognomeAllenatore)PARTITA(Giornata, SquadraCasa, SquadraOspite, PuntiCasa, PuntiOspite)RISULTATO(Giornata, Squadra, Punti)GIOCATORE(NomeGiocatore, CognomeGiocatore, NomeSquadra, Ruolo, Nazionalità)

Page 4: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Esercizio 1 - dal TdE 07/09/2006

A.Linguaggi formaliEsprimere in algebra (ottimizzata) e calcolo relazionale la seguente query:Trovare i nomi delle squadre e il nome e cognome dei rispettivi allenatori di tutte le squadre che hanno ottenuto almeno due vittorie fuori casa e non hanno giocatori di nazionalità inglese.

���4

SQUADRA(NomeSquadra, Città, Logo, NomeAllenatore, CognomeAllenatore)PARTITA(Giornata, SquadraCasa, SquadraOspite, PuntiCasa, PuntiOspite)RISULTATO(Giornata, Squadra, Punti)GIOCATORE(NomeGiocatore, CognomeGiocatore, NomeSquadra, Ruolo, Nazionalità)

Non svolto ad

esercitazion

e

Page 5: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Esercizio 1.1 - dal TdE 07/09/2006

B.SQL1. Interrogazioni in SQL

a. Trovare la classifica attuale del campionato (visualizzando per ogni squadra il nome, le informazioni dell’allenatore e il punteggio).

b. Trovare le squadre che hanno il maggior numero di vittorie in casa.

���5

SQUADRA(NomeSquadra, Città, Logo, NomeAllenatore, CognomeAllenatore)PARTITA(Giornata, SquadraCasa, SquadraOspite, PuntiCasa, PuntiOspite)RISULTATO(Giornata, Squadra, Punti)GIOCATORE(NomeGiocatore, CognomeGiocatore, NomeSquadra, Ruolo, Nazionalità)

Page 6: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Esercizio 1.2 - dal TdE 07/09/2006

B.SQL2. DDL

Considerando lo schema di base di dati in testa al tema d’esame, specificare in SQL la creazione delle tabelle SQUADRA e PARTITA, definendo i vincoli di tupla e di dominio ritenuti opportuni ed esprimendo eventuali vincoli di integrità referenziale relative a tutte le tabelle dello schema.

���6

SQUADRA(NomeSquadra, Città, Logo, NomeAllenatore, CognomeAllenatore)PARTITA(Giornata, SquadraCasa, SquadraOspite, PuntiCasa, PuntiOspite)RISULTATO(Giornata, Squadra, Punti)GIOCATORE(NomeGiocatore, CognomeGiocatore, NomeSquadra, Ruolo, Nazionalità)

Page 7: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Esercizio 1.3 - dal TdE 07/09/2006

B.SQL3. Espressione di vincoli

Considerando lo schema di base di dati in testa al tema d’esame, specificare in SQL il vincolo che impone la presenza di almeno 5 giocatori per ogni squadra.

���7

SQUADRA(NomeSquadra, Città, Logo, NomeAllenatore, CognomeAllenatore)PARTITA(Giornata, SquadraCasa, SquadraOspite, PuntiCasa, PuntiOspite)RISULTATO(Giornata, Squadra, Punti)GIOCATORE(NomeGiocatore, CognomeGiocatore, NomeSquadra, Ruolo, Nazionalità)

Page 8: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

Esercizio 2 - dal TdE 14/07/2006���8

Si consideri il seguente schema di base di dati che vuole tenere traccia dell’attività di un’agenzia che affitta appartamenti per le vacanze nella città di Varazze.!CLIENTE(CodiceFiscale, Cognome, Nome, Residenza)APPARTAMENTO(CodAppartamento, Indirizzo, NumEdificio, Locali, Metratura, Piano)PALAZZO(Indirizzo, NumEdificio, NumPiani, NomeAmministratore, CognomeAmministratore)AFFITTO(CodiceCliente, CodAppartamento, DataInizio, DataFine, Prezzo)

Page 9: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

A.Linguaggi formaliEsprimere in algebra (ottimizzata) e calcolo relazionale la seguente query:Trovare nomi e cognomi dei clienti che hanno effettuato almeno due affitti di appartamenti con più di 2 locali o che hanno affittato nell’anno 2005 almeno un appartamento amministrato dal signor Giuseppe Bianchi.

���9

CLIENTE(CodiceFiscale, Cognome, Nome, Residenza)APPARTAMENTO(CodAppartamento, Indirizzo, NumEdificio, Locali, Metratura, Piano)PALAZZO(Indirizzo, NumEdificio, NumPiani, NomeAmministratore, CognomeAmministratore)AFFITTO(CodiceCliente, CodAppartamento, DataInizio, DataFine, Prezzo)

Non svolto ad

esercitazion

e

Esercizio 2 - dal TdE 14/07/2006

Page 10: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

B.SQL1. Interrogazioni in SQL

a. Trovare i nomi e i cognomi degli amministratori che hanno in gestione almeno 5 appartamenti più grandi di 100m2, ognuno dei quali è stato affittato almeno una volta.

b. Trovare i nomi e i cognomi dei clienti che hanno effettuato il minor numero di affitti di appartamenti di 3 locali nell’anno 2004.

���10

CLIENTE(CodiceFiscale, Cognome, Nome, Residenza)APPARTAMENTO(CodAppartamento, Indirizzo, NumEdificio, Locali, Metratura, Piano)PALAZZO(Indirizzo, NumEdificio, NumPiani, NomeAmministratore, CognomeAmministratore)AFFITTO(CodiceCliente, CodAppartamento, DataInizio, DataFine, Prezzo)

Esercizio 2.1 - dal TdE 14/07/2006

Page 11: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

B.SQL2. DDL

Considerando lo schema di base di dati in testa al tema d’esame, specificare in SQL la creazione delle tabelle APPARTAMENTO e PALAZZO, definendo i vincoli di tupla e di dominio ritenuti opportuni ed esprimendo eventuali vincoli di integrità referenziale relative a tutte le tabelle dello schema.

���11

CLIENTE(CodiceFiscale, Cognome, Nome, Residenza)APPARTAMENTO(CodAppartamento, Indirizzo, NumEdificio, Locali, Metratura, Piano)PALAZZO(Indirizzo, NumEdificio, NumPiani, NomeAmministratore, CognomeAmministratore)AFFITTO(CodiceCliente, CodAppartamento, DataInizio, DataFine, Prezzo)

Esercizio 2.2 - dal TdE 14/07/2006

Page 12: Basi di Dati 1 Esercitazione 4 - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/basididati/04a SQL2 - DDL e... · Basi di Dati 1! Esercitazione 4. ... Esercizio1-dalTdE07/09/2006

B.SQL3. Espressione di vincoli

Considerando lo schema di base di dati in testa al tema d’esame, specificare in SQL il vincolo che impone un prezzo di affitto superiore a 500€ per affitti di durata maggiore di 5 giorni per ogni tipologia di appartamento.

���12

CLIENTE(CodiceFiscale, Cognome, Nome, Residenza)APPARTAMENTO(CodAppartamento, Indirizzo, NumEdificio, Locali, Metratura, Piano)PALAZZO(Indirizzo, NumEdificio, NumPiani, NomeAmministratore, CognomeAmministratore)AFFITTO(CodiceCliente, CodAppartamento, DataInizio, DataFine, Prezzo)

Esercizio 2.3 - dal TdE 14/07/2006