Esercizi sulle interrogazioni

Esercizi sulle interrogazioni
Esercizio 1. Si consideri una base di dati che contiene le informazioni relative a uno zoo, descritte
dal seguente schema relazionale:
Animale(Ident, NomeProp, NomeGen, Specie, Sesso, Anni, Gab)
Gabbia(NumGabbia, NumAnimali, Zona)
Madre(IdMadre, IdFiglio)
La tabella Animale descrive ciascun animale tramite un identificatore, il nome proprio (es.
"Fufi"), il nome generico (es. "struzzo"), la specie (es. "uccello"), il sesso, l'età, e il numero di
gabbia che lo contiene (attributo Gab). La tabella Gabbia contiene la descrizione delle gabbie che
ospitano gli animali, e cioè il numero di identificazione della gabbia, il numero di animali contenuti,
e la zona dello zoo in cui si trova. Nella tabella Madre si hanno le relazioni madre-cucciolo degli
animali nati nello zoo.
Esprimere in linguaggio SQL le seguenti interrogazioni:
1. Restituire i nomi propri degli animali che stanno nella gabbia 3.
2. Trovare la zona dello zoo in cui si trova la scimmia Cheeks (dove "scimmia" è nome
generico).
3. Restituire i numeri delle gabbie e i numeri degli animali contenuti, per ogni gabbia in cui
siano presenti figli maschi di I53 (dove I53 è un identificatore di animale).
4. Trovare tutte le zone dello zoo in cui si trovano delle foche (dove "foca" è nome generico)
senza includere la zona in cui si trova la foca Pallina.
5. Restituire tutte le zone in cui si trovano sia mammiferi sia uccelli (dove "mammifero" e
"uccello" sono specie).
6. Trovare la gabbia in cui si trova la madre del leone Basil (dove "leone" è nome generico).
7. Calcolare l'età media dei serpenti (dove "serpente" è una specie).
8. Restituire il numero dei felini nati nello zoo (dove "felino" è una specie).
Esprimere in algebra relazionale le prime due interrogazioni dell’elenco precedente (1.5 punti per
interrogazione).
1
Esercizio 2. Si consideri una base di dati che contiene le informazioni relative a un reparto di
maternità, descritte dal seguente schema relazionale:
Degente(Ident, Cogn, Nome, Sesso, Età, StanzaDeg)
Neonato(Id,Peso)
Stanza(NumStan, NumOsp)
Madre(IdMadre, IdFiglio)
La tabella Degente descrive ciascun degente del reparto tramite un identificatore, il cognome, il
nome, il sesso, l’età, e il numero di stanza che lo ospita (attributo StanzaDeg). La tabella
Neonato mostra gli identificatori dei degenti neonati e il loro peso. La tabella Stanza contiene il
numero di identificazione delle stanze e il numero di degenti contenuti in esse. Nella tabella Madre
si hanno le relazioni madre-figlio dei bambini nati nel reparto.
Esprimere in linguaggio SQL le seguenti interrogazioni:
1. Restituire i nomi dei degenti che stanno nella stanza 3.
2. Trovare la stanza in cui si trova la neonata Maria.
3. Restituire il numero di degenti presenti nella stanza del figlio di I53 (dove I53 è un
identificatore).
4. Restituire il numero di degenti presenti nella stanza del figlio di Lucia?
5. Elencare le stanze in cui si trovano le mamme.
6. Restituire i numeri delle stanze in cui la mamma sta con il suo bambino.
7. Trovare i cognomi e i nomi delle madri di almeno 2 gemelli.
8. Trovare il peso del gemello di Luca Bianchi.
9. Trovare l'età media delle madri.
10. Contare il numero dell bambine nate nel reparto.
Esprimere in algebra relazionale le prime otto interrogazioni.
2
Esercizio 3. Si consideri una base di dati che contiene i dati relativi a una catena di negozi di
abbigliamento, definita dal seguente schema relazionale:
Negozio(CodNegozio, NomeNegozio, Via, NumCiv, CAP, Citta, CodProp)
Persona(CodiceFiscale, Nome, Cognome, Sesso, Eta)
Cliente(CodCli, NegPref, UltNeg, DataUltAcq, CodUltAcq)
Collezione(CodCol, NomeCol, Stagione, Anno)
NegHaCol(CN, CC)
La tabella Negozio riporta il codice del negozio, il nome del negozio, l'indirizzo del negozio e il
codice fiscale del proprietario. La tabella Persona contiene il codice fiscale, il nome, il cognome,
il sesso e l'età delle persone. La tabella Cliente raccoglie il codice fiscale del cliente, il suo
negozio preferito, l'ultimo negozio in cui ha acquistato, la data dell'ultimo acquisto e la collezione a
cui questo appartiene (codice). La tabella Collezione riporta il codice della collezione, il nome,
la stagione e l'anno della stessa. La tabella NegHaCol contiene dati su quale negozio (individuato
dal suo codice) ha quale collezione (individuata dal suo codice).
Esprimere in linguaggio SQL le seguenti interrogazioni:
1.
2.
3.
4.
Restituire tutti i dati dei negozi ubicati in Torino.
Trovare tutti i nomi delle collezioni a partire dall'anno 1986.
Restituire i nomi dei negozi il cui proprietario è una donna.
Trovare l'elenco dei clienti (nome e cognome) il cui negozio preferito è diverso dal negozio
in cui hanno fatto l'ultimo acquisto.
5. Trovare l'elenco dei clienti (indicandone il nome e cognome) il cui ultimo acquisto è di una
collezione del 2000.
6. Trovare tutti i nomi dei negozi che hanno la collezione di cui fa parte l'ultimo acquisto di
Orsola Rossi.
7. Restituire i dati di tutti i clienti maschi che hanno come negozio preferito il negozio di
proprietà di Dario Bianchi.
8. Trovare tutte le città che hanno almeno due negozi.
9. Trovare tutte le città che hanno un solo negozio (suggerimento: usare l’interrogazione al
punto 8).
10. Contare tutti i negozi il cui proprietario è una donna.
Esprimere in algebra relazionale le prime nove interrogazioni.
3