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?! A,B,C,D,E,F (R)! A,B,D,E (R)! A,B,C,F (R)! A,D (R)
Esercizio 4 R 1 (A,B,C) R 2 (D,E,F) Con cardinalita : R 1 =N 1 e R 2 =N 2. Indicare la cardinalita del join nei seguenti casi: R 1!" A=D R 2 R 1!" A=E R 2 R 1!" A=E R 2 (con vincolo di integrita referenziale tra A ed E) R 1!" B=E R 2
Esercizio 5 Ø 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! NOME,COGNOME,DATANASCITA ( ((VEICOLI!" TARGA=TARGAVEICOLO!ANNOIMMATRICOLAZIONE=2005!DATA=15/01/2013 NOLEGGIO)!" NRPATENTE=PATENTECLIENTE CLIENTI)))
Esercizio 5! NOME,COGNOME,DATANASCITA ( ((! ANNOIMMATRICOLAZIONE=2005 VEICOLI!" TARGA=TARGAVEICOLO! DATA=15/01/2013 NOLEGGIO)!" NRPATENTE=PATENTECLIENTE CLIENTI)))
Esercizio 5
Esercizio 5 Ø 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
Esercizio 6 Ø 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 Ø Algebra relazionale à NON esprimibile!
Esercizio 6 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 SELECT MODELLO FROM NUM_NOLEGGI WHERE TOTALE = (SELECT MAX(TOTALE) FROM NUM_NOLEGGI)
Esercizio 6 Ø 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 SELECT NOME, COGNOME FROM CLIENTI, NOLEGGIO WHERE ((PATENTECLIENTE = NRPATENTE) AND (SEDECITTA=BOLOGNA)) GROUP BY PATENTECLIENTE, NRPATENTE HAVING COUNT(*) >=2