Corso di Basi di Dati
Esercitazione:
L’algebra relazionale
Home page del corso:
http://www.cs.unibo.it/~difelice/dbsi/
Esercizio 1
 Dato il seguente schema:
POETA(Nome, Cognome, AnnoNascita, LuogoNascita)
ROMANZIERE (Nome, Cognome, Anno, LuogoNatio)
Scrivere in algebra relazionale la query che
determina:
1. Il cognome dei poeti nati a Bologna nel 1966.
Esercizio 1
 Dato il seguente schema:
POETA(Nome, Cognome, AnnoNascita, LuogoNascita)
ROMANZIERE (Nome, Cognome, Anno, LuogoNatio)
Scrivere in algebra relazionale la query che
determina:
2. Nome, cognome e Luogo di nascita dei poeti
che NON sono romanzieri.
Esercizio 1
 Dato il seguente schema:
POETA(Nome, Cognome, AnnoNascita, LuogoNascita)
ROMANZIERE (Nome, Cognome, Anno, LuogoNatio)
Scrivere in algebra relazionale la query che
determina:
3. Nome e cognome degli scrittori (poeti +
romanzieri) il cui anno di nascita non sia definito.
Esercizio 2
 Dato il seguente schema:
UTENTE(CODICE,NOME,COGNOME)
LIBRO(TITOLO,AUTORE)
PRESTITI(TITLIBRO,CODUTENTE,DATA)
Scrivere in algebra relazionale la query che
determina:
1. I titoli dei libri avuti in prestito da “Giovanni
Rossi”.
Esercizio 2
 Dato il seguente schema:
UTENTE(CODICE,NOME,COGNOME)
LIBRO(TITOLO,AUTORE)
PRESTITI(TITLIBRO,CODUTENTE,DATA)
Scrivere in algebra relazionale la query che
determina:
2. I titoli dei libri che non sono in prestito.
Esercizio 2
 Dato il seguente schema:
UTENTE(CODICE,NOME,COGNOME)
LIBRO(TITOLO,AUTORE)
PRESTITI(TITLIBRO,CODUTENTE,DATA)
Scrivere in algebra relazionale la query che
determina:
3. Nome e cognome degli utenti che hanno avuto in
prestito libri di “Verga” in data 10/5/2012.
Esercizio 3
Data la seguente relazione:
R(A, B, C, D, E, F)
Quali delle seguenti proiezioni hanno lo stesso
numero di righe di R?
P A,B,C,D,E,F (R)
P A,B,D,E (R)
P A,B,C,F (R)
P A,D (R)
Esercizio 4
Data la seguenti relazioni:
R1(A,B,C)
R2(D,E,F)
Con cardinalita’: |R1|=N1 e |R2|=N2.
Indicare la cardinalita’ del join nei seguenti casi:
R1
A=D
R2
R1
A=E
R2
R1
R1
A=E
B=E
R2
R2
(con vincolo di integrita’ referenziale tra A ed E)
Esercizio 5
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
 Scrivere in algebra relazionale la query
(ottimizzata) che determina Nome, Cognome e
Data di Nascita dei clienti che in data 15/01/2013
hanno noleggiato veicoli immatricolati nel 2005.
Esercizio 5
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
PNOME,COGNOME,DATANASCITA (
((VEICOLI
TARGA=TARGAVEICOLOÙANNOIMMATRICOLAZIONE=2005ÙDATA=15/01/2013
NRPATENTE=PATENTECLIENTE
CLIENTI)))
NOLEGGIO)
Esercizio 5
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
PNOME,COGNOME,DATANASCITA (
((s ANNOIMMATRICOLAZIONE=2005VEICOLI
s
TARGA=TARGAVEICOLO DATA=15/01/2013
NRPATENTE=PATENTECLIENTE
CLIENTI)))
NOLEGGIO)
Esercizio 5
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
Esercizio 5
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
 Scrivere in algebra relazionale (ottimizzazione
NON richiesta) la query che determina le targhe
dei veicoli che non sono stati MAI noleggiati a
Bologna.
Esercizio 5
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
Esercizio 6
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
 Scrivere in SQL ed algebra relazionale la query
che determina il Modello di veicolo piu’
noleggiato tra quelli immatricolati tra il 2000 ed il
2010.
Esercizio 6
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
 Algebra relazionale  NON esprimibile!
Esercizio 6
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
CREATE VIEW NUM_NOLEGGI(MOD,TOTALE) AS
SELECT MODELLO, COUNT(*)
FROM NOLEGGIO, VEICOLI
WHERE ((TARGAVEICOLO=TARGA)
AND (ANNOIMMATRICOLAZIONE IN
(2000,2010)))
GROUPBY MODELLO
Esercizio 6
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
SELECT MODELLO
FROM NUM_NOLEGGI
WHERE TOTALE = (SELECT MAX(TOTALE)
FROM NUM_NOLEGGI)
Esercizio 6
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
 Scrivere in SQL ed algebra relazionale la query
che determina Nome e Cognome dei Clienti che
hanno noleggiato almeno 2 veicoli presso la sede
di Bologna.
Esercizio 6
Data la seguenti relazioni:
VEICOLI(Targa, Modello, AnnoImmatricolazione)
CLIENTI(NrPatente, Nome, Cognome,DataNascita)
NOLEGGIO(TargaVeicolo,Data,PatenteCliente,SedeCitta)
SELECT NOME, COGNOME
FROM CLIENTI, NOLEGGIO
WHERE ((PATENTECLIENTE = NRPATENTE)
AND (SEDECITTA=BOLOGNA))
GROUP BY PATENTECLIENTE, NRPATENTE
HAVING COUNT(*) >=2