Algebrarelazionale - Intranet DEIBhome.deib.polimi.it/picozzi/teaching/20122013...

Post on 18-Feb-2019

219 views 0 download

transcript

Matteo Picozzihttp://home.dei.polimi.it/picozzi

{picozzi@elet.polimi.it}

Algebra relazionaleBasi di Dati 1Esercitazione16/10/2012

Mi presento

Matteo Picozzihttp://home.dei.polimi.it/picozzi

Ricevimento su appuntamento.

2

Note pratiche

• Orario esercitazioni: 13.45 - 17.00• Materiali: sul sito del corso trovate:

- Riferimento all’eserciziario• D. Braga, M. Brambilla, A. Campi. " Eserciziario di Basi di Dati". ISBN:

88-7488-139-8. Progetto Leonardo - BOLOGNA, 2006.- Esercizi supplementari- Temi d’esame

3

Algebra relazionale

• Linguaggio- Formale- Procedurale- Per formulare interrogazioni

4

Algebra relazionale - Operazioni• Fondamentali

- Unarie• Proiezione (∏)• Selezione (σ)

- Binarie• Unione (∪)• Differenza (-)• Prodotto cartesiano (×)

• Derivate- Binarie• Intersezione (∩)• Join (⋈)• Divisione (÷)

5

Algebra relazionale - Operazioni• Fondamentali

- Unarie• Proiezione (∏)• Selezione (σ)

- Binarie• Unione (∪)• Differenza (-)• Prodotto cartesiano (×)

• Derivate- Binarie• Intersezione (∩)• Join (⋈)• Divisione (÷)

5

Operazioni più usate

Esercizio 16

STUDENTE(matricola, nome, cognome, città, cds)ESAME(matricola, cod_corso, data, voto)CORSO(cod_corso, titolo, docente)

Esercizio 1.1

• Trovare cognomi e nomi degli studenti di Cremona del corso di studi (CDS) Ingegneria Informatica.

7

STUDENTE(matricola, nome, cognome, città, cds)ESAME(matricola, cod_corso, data, voto)CORSO(cod_corso, titolo, docente)

Esercizio 1.2

• Trovare il codice dei corsi di Informatica 1 in cui almeno uno studente non appartenente al CDS Ingegneria Gestionale ha preso 30.

8

STUDENTE(matricola, nome, cognome, città, cds)ESAME(matricola, cod_corso, data, voto)CORSO(cod_corso, titolo, docente)

Esercizio 1.3

• Trovare cognomi e nomi degli studenti che hanno preso 30 in qualche esame ma che hanno sostenuto anche Analisi 1.

9

STUDENTE(matricola, nome, cognome, città, cds)ESAME(matricola, cod_corso, data, voto)CORSO(cod_corso, titolo, docente)

Esercizio 1.4

• Trovare cognomi e nomi degli studenti che hanno preso almeno un 30 in qualche esame e non hanno mai preso meno di 24.

10

STUDENTE(matricola, nome, cognome, città, cds)ESAME(matricola, cod_corso, data, voto)CORSO(cod_corso, titolo, docente)

Esercizio 2 - dal TdE 23/11/200411

VITIGNO(nome, colore, data_fruttificazione, località)VINO(nome, colore, tipo, gradazione)PRODUTTORE(nome, località)PRODUZIONE(produttore, anno, vino, quantità)DISCIPLINARE(vino, vitigno, percentuale)

Esercizio 2.1 - dal TdE 23/11/2004

• Trovare i nomi dei vini prodotti da produttori di Milano ma che non hanno vitigni che sorgono in Franciacorta.

12

VITIGNO(nome, colore, data_fruttificazione, località)VINO(nome, colore, tipo, gradazione)PRODUTTORE(nome, località)PRODUZIONE(produttore, anno, vino, quantità)DISCIPLINARE(vino, vitigno, percentuale)

Esercizio 2.2 - dal TdE 23/11/2004

• Trovare i nomi dei produttori che hanno prodotto almeno due vini nel 2000 ma che non hanno mai usato uve “Grignolino” per più del 20%.

13

VITIGNO(nome, colore, data_fruttificazione, località)VINO(nome, colore, tipo, gradazione)PRODUTTORE(nome, località)PRODUZIONE(produttore, anno, vino, quantità)DISCIPLINARE(vino, vitigno, percentuale)

Esercizio 3 - Eserciziario esercizio 3.614

CITTÀ(nome, regione, abitanti)ATTRAVERSAMENTI(città, fiume)FIUMI(fiume, lunghezza)

Esercizio 3.1 - Eserciziario esercizio 3.6

• Trovare nome, regione e abitanti di città che hanno più di 50.000 abitanti e sono attraversate dal Po o dall’Adige.

15

CITTÀ(nome, regione, abitanti)ATTRAVERSAMENTI(città, fiume)FIUMI(fiume, lunghezza)

Esercizio 3.2 - Eserciziario esercizio 3.6

• Trovare il nome delle città attraversate da almeno due fiumi e il nome del più lungo dei fiumi che la attraversano.

16

CITTÀ(nome, regione, abitanti)ATTRAVERSAMENTI(città, fiume)FIUMI(fiume, lunghezza)

Esercizio 417

IMPIEGATO(nome, età, stipendio)DIPENDENZA(manager, dipendente)

nome età stipendioMario 31 60000Luca 32 40000

Andrea 35 30000Stefano 36 20000

manager dipendenteMario LucaMario Andrea

Andrea Stefano

Esercizio 4.1

• Trovare il nome degli impiegati dipendenti direttamente da Mario.

18

IMPIEGATO(nome, età, stipendio)DIPENDENZA(manager, dipendente)

nome età stipendioMario 31 60000Luca 32 40000

Andrea 35 30000Stefano 36 20000

manager dipendenteMario LucaMario Andrea

Andrea Stefano

Esercizio 4.2

• Trovare l’età dei dipendenti sottoposti di Mario.

19

IMPIEGATO(nome, età, stipendio)DIPENDENZA(manager, dipendente)

nome età stipendioMario 31 60000Luca 32 40000

Andrea 35 30000Stefano 36 20000

manager dipendenteMario LucaMario Andrea

Andrea Stefano

Esercizio 4.3

• Trovare i nomi degli impiegati che non hanno un manager.

20

IMPIEGATO(nome, età, stipendio)DIPENDENZA(manager, dipendente)

nome età stipendioMario 31 60000Luca 32 40000

Andrea 35 30000Stefano 36 20000

manager dipendenteMario LucaMario Andrea

Andrea Stefano

Esercizio 4.4

• Trovare il nome delle coppie di impiegati che collaborano e sono alle dipendenze di Mario.

21

IMPIEGATO(nome, età, stipendio)DIPENDENZA(manager, dipendente)

nome età stipendioMario 31 60000Luca 32 40000

Andrea 35 30000Stefano 36 20000

manager dipendenteMario LucaMario Andrea

Andrea Stefano

Esercizio 522

CLIENTI(codice, cognome, nome, indirizzo)NOLEGGI(cliente, vettura, data)VETTURE(codice, modello, anno_immatricolazione)MODELLO(codice_modello, nome)

Esercizio 5.1

• Trovare cognome e nome dei clienti che hanno noleggiato una Fiat Panda prima del 01/09/2012.

23

CLIENTI(codice, cognome, nome, indirizzo)NOLEGGI(cliente, vettura, data)VETTURE(codice, modello, anno_immatricolazione)MODELLO(codice_modello, nome)

Esercizio 5.2

• Trovare cognome e nome dei clienti che hanno noleggiato lo stesso modello almeno due volte.

24

CLIENTI(codice, cognome, nome, indirizzo)NOLEGGI(cliente, vettura, data)VETTURE(codice, modello, anno_immatricolazione)MODELLO(codice_modello, nome)

Esercizio 625

VIAGGI(codice, descrizione, luogo, durata)VACANZE(codice, viaggio, data_partenza, costo)PARTECIPAZIONE(cliente, vacanza)CLIENTI(codice, cognome, nome, indirizzo, città)

Esercizio 6.1

• Trovare luoghi, descrizione e durata dei viaggi a cui hanno partecipato i clienti di Firenze con partenza in data successiva al 25/03/2010.

26

VIAGGI(codice, descrizione, luogo, durata)VACANZE(codice, viaggio, data_partenza, costo)PARTECIPAZIONE(cliente, vacanza)CLIENTI(codice, cognome, nome, indirizzo, città)

Esercizio 6.2

• Trovare date di partenza e costo di vacanze a cui hanno partecipato almeno 2 clienti di Cremona.

27

VIAGGI(codice, descrizione, luogo, durata)VACANZE(codice, viaggio, data_partenza, costo)PARTECIPAZIONE(cliente, vacanza)CLIENTI(codice, cognome, nome, indirizzo, città)

Esercizio 728

ESAMI(studente, materia, voto, data)PIANIDISTUDIO(studente, materia, anno, semestre)

Esercizio 7.1

• Studenti che hanno passato tutti gli esami nel piano di studi.

29

ESAMI(studente, materia, voto, data)PIANIDISTUDIO(studente, materia, anno, semestre)

Esercizio 830

CLIENTE(num_tessera, nome, cognome, genere, via, città, iscritto_piscina, data_iscrizione)ISTRUTTORE(cod_fiscale, nome, cognome, genere, via, città, data_assunzione)CORSO(nome_corso, turno, città_corso, cf_istruttore)ISCRIZIONE_CORSO(num_tessera, nome_corso, turno, data)

Esercizio 8.1

• Trovare i turni dei corsi tenuti dalle istruttrici assunte dopo il 01/01/2010 e che al 01/06/2012 non abbiano ancora nessun iscritto a Milano.

31

CLIENTE(num_tessera, nome, cognome, genere, via, città, iscritto_piscina, data_iscrizione)ISTRUTTORE(cod_fiscale, nome, cognome, genere, via, città, data_assunzione)CORSO(nome_corso, turno, città_corso, cf_istruttore)ISCRIZIONE_CORSO(num_tessera, nome_corso, turno, data)

Esercizio 8.1

• Trovare i turni dei corsi tenuti dalle istruttrici assunte dopo il 01/01/2010 e che al 01/06/2012 non abbiano ancora nessun iscritto a Milano.

31

CLIENTE(num_tessera, nome, cognome, genere, via, città, iscritto_piscina, data_iscrizione)ISTRUTTORE(cod_fiscale, nome, cognome, genere, via, città, data_assunzione)CORSO(nome_corso, turno, città_corso, cf_istruttore)ISCRIZIONE_CORSO(num_tessera, nome_corso, turno, data)

di

Esercizio 8.2

• Trovare i corsi di aerobica che hanno almeno due iscritti di Sesto S. Giovanni ma nessuno iscritto di Lodi.

32

CLIENTE(num_tessera, nome, cognome, genere, via, città, iscritto_piscina, data_iscrizione)ISTRUTTORE(cod_fiscale, nome, cognome, genere, via, città, data_assunzione)CORSO(nome_corso, turno, città_corso, cf_istruttore)ISCRIZIONE_CORSO(num_tessera, nome_corso, turno, data)