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