Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Matteo Picozzihttp://home.dei.polimi.it/picozzi
SQLDDL e vincoli
Basi di Dati 1Esercitazione 427/11/2012
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 ])
Esercizio 1 - dal TdE 07/09/20063
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à)
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
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à)
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à)
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à)
Esercizio 2 - dal TdE 14/07/20068
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)
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
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
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
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