Sei sulla pagina 1di 61

Corso di Laurea in Ingegneria Gestionale

SAPIENZA Universit di Roma


Esercitazioni del corso di Basi di Dati
Prof.ssa Catarci e Prof.ssa Scannapieco

Anno Accademico 2010/2011

2 Algebra Relazionale
Andrea Marrella

Ultimo aggiornamento : 30/03/2011


Lalgebra relazionale
Algebra Relazionale : linguaggio procedurale (specifica
come viene generato il risultato) di interrogazione
Costituita da un insieme di operatori:
definiti su relazioni
che producono relazioni
e possono essere composti per formulare interrogazioni complesse
Operatori dellalgebra relazionale:
Insiemistici (unione, intersezione, differenza)
Ridenominazione
Prodotto cartesiano
Selezione
Proiezione
Join (naturale, equi-join, condizionale o theta-join)
Divisione
2 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Operatori insiemistici
Una relazione un insieme di tuple omogenee (cio definite sugli
stessi attributi)
E possibile applicare gli operatori insiemistici solo a relazioni per
cui valga la propriet di compatibilit rispetto allunione:
le relazioni in ingresso hanno lo stesso numero di campi
campi corrispondenti delle due relazioni, presi in ordine da sinistra a
destra, hanno lo stesso dominio (la compatibilit non si verifica con i
nomi degli attributi)
Se due relazioni R1 e R2 sono compatibili rispetto allunione, ma
hanno i nomi degli attributi differenti, la relazione che si ottiene
come risultato eredita per convenzione i nomi di R1 ATTENZIONE :
Si rischia di
R1 R2 R3 ottenere un
Nome Anno
U Nome Et Nome Anno insieme di tuple
disomogenee...
3 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Operatori insiemistici - Unione
Laureati Dirigenti
Matricola Cognome Et Matricola
Matricola Et
Cognome Et
7274
7432
Rossi
Neri
37
39 U 9297
9297
7432
7432
Neri
Neri
56
56
39
39
9824 Verdi 38 9824
9824 Verdi 38
38

Laureati U Dirigenti
Matricola Cognome Et Lunione di due relazioni r1 e r2
7274 Rossi 37 indicata con r1 U r2 e contiene tutte le
tuple (prese una sola volta) presenti in
7432 Neri 39
r1, in r2 oppure in entrambe
9824 Verdi 38 Lo schema del risultato identico allo
9297 Neri 56 schema di r1

4 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Operatori insiemistici - Intersezione
Laureati Dirigenti
Matricola Cognome Et Matricola Cognome Et
7274 Rossi 37 9297 Neri 56
7432 Neri 39 7432 Neri 39
9824 Verdi 38 9824 Verdi 38

Laureati Dirigenti
Matricola Cognome Et Lintersezione di due relazioni r1 e r2
indicata con r1 r2 e contiene tutte le
7432 Neri 39 tuple (prese una sola volta) presenti
9824 Verdi 38 contemporaneamente sia in r1 che in r2
Lo schema del risultato identico allo
schema di r1

5 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Operatori insiemistici - Differenza
Laureati Dirigenti
Matricola Cognome Et Matricola Cognome Et
7274 Rossi 37 9297 Neri 56
7432
9824
Neri
Verdi
39
38
- 7432
9824
Neri
Verdi
39
38

Laureati - Dirigenti La differenza tra due relazioni r1 e r2


indicata con r1- r2 e contiene tutte le
Matricola Cognome Et tuple presenti in r1 ma non in r2
Lo schema del risultato identico allo
7274 Rossi 37
schema di r1

6 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Un unione sensata...ma impossibile
Paternit Maternit
Padre Figlio Madre Figlio
Francesco
Francesco
Maurizio
Carla U Adriana
Adriana
Maurizio
Paolo
Giuseppe Maria Eleonora Maria

Padre Figlio
Francesco Maurizio
Paternit U Maternit ?? Francesco Carla
Giuseppe Maria
Lunione rispetta la propriet
di compatibilit rispetto Adriana Maurizio
allunione, ma il risultato Adriana Paolo
disomogeneo... Eleonora Maria

7 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


La ridenominazione 1\3
Sintassi delloperatore : (R(F),E)
E : espressione arbitraria di algebra relazionale (es. Paternit U
Maternit)
R : istanza di relazione che rappresenta il risultato della esecuzione
di E (contiene le stesse tuple di E, ma con alcuni campi rinominati)
F : lista di ridenominazione nella forma:
Vecchio nome Nuovo nome Genitore
Padre Figlio
Figlio
Posizione Nuovo nome Francesco Maurizio
(C(PadreGenitore), Paternit U Maternit) Francesco Carla
oppure Giuseppe Maria
(C(1Genitore), Paternit U Maternit) Adriana Maurizio
Adriana Paolo
C(Genitore:String, Figlio:String) Eleonora Maria
8 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
La ridenominazione 2\3
Per ottenere la relazione Genitore-Figlio, si pu anche scrivere alternativamente....

Paternit
Padre Figlio Genitore Figlio
Francesco Maurizio ((PadreGenitore), Paternit) Francesco Maurizio
Francesco Carla Francesco Carla
Giuseppe Maria Giuseppe Maria

Maternit
Madre Figlio Genitore Figlio
Adriana Maurizio Adriana Maurizio
((MadreGenitore), Maternit)
Adriana Paolo Adriana Paolo
Eleonora Maria Eleonora Maria

((PadreGenitore), Paternit) U ((MadreGenitore), Maternit)


9 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
La ridenominazione 3\3
Impiegati Operai
Cognome Ufficio Stipendio Cognome Fabbrica Salario
Rossi Roma 55 Bruni Monza 45
Neri Milano 64 Verdi Latina 55

((Ufficio Sede, Stipendio Retribuzione), Impiegati)

U
((Fabbrica Sede, Salario Retribuzione), Operai)

Cognome Sede Retribuzione


Rossi Roma 55
Neri Milano 64
Bruni Monza 45
Verdi Latina 55

10 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Il prodotto cartesiano 1\3
E anchesso un operatore insiemistico
Per essere utilizzato non richiede che sia valida la propriet di
compatibilit rispetto allunione
Sintassi delloperatore : R x S
restituisce unistanza di relazione il cui schema contiene tutti i
campi di R (nellordine originale) seguiti da tutti i campi di S
(nellordine originale)

R S RxS
A B C X D E A B C D E

11 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Il prodotto cartesiano 2\3
contiene una tupla <r,s> per ogni coppia di tuple r R e s S
contiene un numero di tuple pari al prodotto delle cardinalit degli
operandi Impiegati Reparti
ATTENZIONE : Se due relazioni
hanno degli attributi con nomi in Impiegato Codice
comune, i campi corrispondenti nel Capo Codice
prod.cartesiano non hanno nome (per Rossi A
convenzione) e ci si pu riferire a loro Mori A
solo attraverso la posizione che Neri B
occupano nello schema... Bruni B
Bianchi B
Impiegati X Reparti
conflitto
Impiegato (Codice) Capo (Codice) di nomi
Rossi A Mori A
Rossi A Bruni B
Neri B Mori A si pu risolvere con
una
Neri B Bruni B ridenominazione...
Bianchi B Mori A
Bianchi B Bruni B 2 Algebra Relazionale
Il prodotto cartesiano 3\3
(nuovaRelazione(2CodImpiegato, 4CodReparto), Impiegati X Reparti)

In questo caso
necessario sfruttare la
notazione posizionale...
nuovaRelazione
Impiegato CodImpiegato Capo CodReparto
Rossi A Mori A
Rossi A Bruni B
conflitto di
Neri B Mori A nomi risolto
Neri B Bruni B
Bianchi B Mori A
Bianchi B Bruni B

13 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Selezione 1\2
Operatore unario per selezionare righe da una relazione
Sintassi : condizione(R)
condizione di selezione = espressione booleana del tipo:
attributo OP costante oppure attributo1 OP attributo2
OP = {< , <= , > , >= , = , }
Espandibile con i connettivi logici V ,

Semantica :
la relazione risultato ha gli stessi attributi delloperando e contiene le tuple
delloperando che soddisfano la condizione specificata
Impiegati
Impiegato Codice Impiegato Codice
Esempio
Rossi A Rossi A
Tutti gli Impiegati con codice = A
Neri B
Codice=A (Impiegati) Bianchi B
14 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Selezione 2\2
Laureati
Esempio Matricola Cognome Uni Et
Tutti i Laureati con Cognome = Rossi versit
ed Et>37
7274 Rossi Roma 37

Cognome=Rossi Et>37(Laureati)
7432
9824
Rossi
Roma
Roma
Roma
39
38

Matricola Cognome Universit Et

Esempio 7432 Rossi Roma 39


Tutti i Laureati con lo stesso Cognome
dellUniversit in cui hanno studiato

Cognome=Universit(Laureati)
Matricola

9824
Cognome

Roma
Universit

Roma
Et

38

15 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Proiezione
Operatore unario per estrarre colonne da una relazione

Sintassi : lista_di_Attributi( R)
Semantica :
la relazione risultato ha i soli attributi contenuti in ListaAttributi e contiene le
tuple ristrette agli attributi nella lista (senza duplicati)

Esempio Laureati
Cognome e Universit Matricola Cognome Universit Et
di tutti i laureati 7274 Rossi Roma 37
ATTENZIONE : 7432 Rossi Roma 39
gli attributi non
9824 Roma Roma 38
contenuti nella lista
vengono proiettati fuori

Cognome,Universit(Laureati) Cognome
Rossi
Universit
Roma
16 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Roma Roma
Selezione e Proiezione
Gli operatori di selezione e proiezione si possono
combinare efficientemente
Esempio
Cognome e Universit dei laureati con pi di 37 anni
Laureati
Matricola Cognome Uni Et
versit
7274 Rossi Roma 37 Cognome Universit
7432 Rossi Roma 39 Rossi Roma
9824 Roma Roma 38 Roma Roma

Cognome,Universit (Et>37(Laureati) )
17 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Join condizionale
JOIN = Operatore molto usato per combinare
informazioni tra due o pi relazioni Un JOIN condizionale tra R1
e R2 fondamentalmente una
JOIN condizionale: SELECT applicata sul
Sintassi e semantica: prodotto cartesiano tra R1 e
R2
c R2 equivale a c (R1xR2)

R1
La condizione di JOIN identica (nella forma) alla condizione di
selezione
R1 R2



R1 R2 R1.Stipendio>20

Impiegato Stipendio Impiegat (Stipen Capo (Stipe


Capo Stipendio
o dio) ndio)
Rossi 20 Mori 10
Bianchi 30 Mori 10
Neri 20 Bruni 20 Bianchi 30 2 Algebra
BruniRelazionale
20
Bianchi
18 30

18 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Equi-Join
EQUI-JOIN :
Se la condizione di JOIN composta solo da uguaglianze
(eventualmente connesse da )
R1 R2 R1 R2



R1.Stipendio=R2.Stipendio
Impiegato Stipendio Capo Stipendio
Impiegato Stipendio Capo
Rossi 20 Mori 10
Neri 20 Bruni 20 Rossi 20 Bruni
Bianchi
19 30 Neri 20 Bruni

Lo schema di un risultato di un EQUI-JOIN contiene tutti gli


attributi di R1 e quegli attributi di R2 che non compaiono nella
condizione di JOIN
Solo un attributo Stipendio appare nel risultato (mantenerli entrambe
ridondante)

19 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Join naturale 1\2
E un EQUI-JOIN in cui le uguaglianze sono specificate su
tutti gli attributi aventi lo stesso nome in R1 e R2
Le tuple del risultato sono ottenute combinando le tuple
degli operandi con valori uguali sugli attributi comuni
R1 R2 R1 R2



Impiegato Reparto Capo Reparto Impiegato Reparto Capo
Rossi A Mori A Rossi A Mori
Neri B Bruni B Neri B Bruni
Bianchi B
Bianchi B bruni

Se le due relazioni non hanno attributi in comune, il JOIN


naturale si riduce ad essere un semplice prodotto cartesiano

20 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Join naturale 2\2
Esempio : Un JOIN non completo
R1 R2 R1 R2



Impiegato Reparto Capo Reparto Impiegato Reparto Capo
Rossi A Mori B Neri B Mori
Neri B Bruni C Bianchi B Mori
Bianchi B

Esempio : Un JOIN vuoto


R1 R2 R1 R2



Impiegato Reparto Capo Reparto
Impiegato Reparto Capo
Rossi A Mori D
Neri B Bruni C
Bianchi B

21 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Esercizio - Massimo e Minimo Assoluto
Dato R(Impiegato,Stipendio), trovare il minimo stipendio
in R. Nella seconda parte dellinterrogazione vengono trovati tutti quei
valori di Stipendio che non sono il minimo. Per far questo viene
fatto un join tra la relazione R e se stessa, ridenominando tutti gli
attributi della copia di R. La condizione di join seleziona quei
valori dellattributo Stipendio che sono maggiori di almeno un
Stipendio(R) valore della sua controparte rinominata.

Stipendio(R ((R1(1Imp,2Stip), R) ))

R.Stipendio>R1.Stip
In questo modo vengono mantenute tutte le
R tuple tranne quella in cui l attributo
Impiegato Stipendio Stipendio assume il valore minore. Quindi
per il principio di complementariet
Rossi 10 sottraendo dall insieme iniziale l insieme
Stipendio
Neri 20 delle tuple dove Stipendio non il minimo,
10 otteniamo proprio il valore minimo che
Bianchi 30 cercavamo.

22 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Esercizio - Massimo e Minimo Relativo
Dato R(Studente,Esame,Voto), trovare il massimo voto
per ogni studente in R.
E' molto simile al caso precedente. Il
join in questo caso seleziona tutti i

Studente,Voto (R) valori minimi di Voto per ogni valore


dellattributo Studente.

Studente,Voto(R

R.Voto<R1.Vot AND R.Studente=R1.Stud

((R1(1Stud, 2Vot, 3Exam), R) ))


R
Studente Esame Voto Studente Voto
Rossi Analisi 18 Rossi 20
Rossi Basi di Dati 20 Bianchi 30
Bianchi Analisi 30
23 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esercizio - Cardinalit
Dato R(Nome,Cognome,CF), trovare le persone omonime
(stesso nome e cognome, ma diverso CF).
Viene ancora fatto un join tra la relazione R e se stessa,
con per tutti gli attributi ridenominati. Il join permette
di mantenere tutte quelle tuple in cui i valori degli
attributi Nome e Cognome sono uguali alla loro
controparte ridenominata, mentre il valore dellattributo
CF diverso.
Nome,Cognome ,CF(R


R.Nome=R1.Nom AND R.Cognome=R1.Cog AND R.CF <> R1.Cod

((R1(1Nom, 2Cog, 3Cod), R) ))


R
Nome Cognome CF
Nome Cognome CF
Marco Rossi AAAAA
Marco Rossi AAAAA
Marco Rossi BBBBBB
Marco Rossi BBBBB
Andrea Bianchi CCCCC
24 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Divisione
Non supportata come operatore primitivo, ma utile per alcuni tipi di
interrogazione
Sia A una relazione con due campi, x e y; sia B una relazione con il solo
campo y:
A/B = {x | per ogni y B, x, y A}
cio, A/B contiene tutte le tuple x tali che per ogni tupla y in B, ci sia una tupla
xy in A

ESEMPIO : Trovare gli Impiegati che lavorano in tutti i reparti

R1 R2
Impiegato Reparto Reparto
R1 / R2
Rossi A A Impiegato
Rossi B B Rossi
Bianchi B
25 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Condizioni di selezione e valori NULL
Impiegati
Matricola Cognome Universit Et Eta>40(Impiegati) ???
7274 Rossi Roma 37
7432 Rossi Roma 41
La condizione vera solo per
9824 Roma Roma NULL valori NON NULLI

Per riferirsi a valori NULLI esistono forme apposite di


condizioni
IS NULL
IS NOT NULL
Matricola Cognome Universit Et

Eta>40 V Eta IS NULL(Impiegati) 7432


9824
Rossi
Roma
Roma
Roma
41
NULL
26 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esempi Relazioni di riferimento
Impiegati
Matricola Nome Et Stipendio
7309 Rossi 34 45
5998 Bianchi 37 38
9553 Neri 42 35
5698 Bruni 43 42
Supervisione
4076 Mori 45 50 Impiegato Capo
8123 Lupi 46 60 7309 5698
5998 5698
9553 4076
5698 4076
4076 8123

27 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Esempio 1
Impiegati
Matricola Nome Et Stipendio Trovare Matricola, Nome, Et,
7309 Rossi 34 45 Stipendio degli impiegati che
5998 Bianchi 37 38 guadagnano pi di 40 milioni
9553
5698
Neri
Bruni
42
43
35
42 Stipendio>40(Impiegati)

4076 Mori 45 50
8123 Lupi 46 60
Matricola Nome Et Stipendio
7309 Rossi 34 45
5698 Bruni 43 42
4076 Mori 45 50
8123 Lupi 46 60

28 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Esempio 2
Impiegati
Matricola Nome Et Stipendio
Trovare Matricola, Nome, Et degli
impiegati che guadagnano pi di 40
7309 Rossi 34 45
milioni
5998 Bianchi 37 38
9553 Neri 42 35
Matricola
MatricolaNome Nome
Et Stipendio
Et
5698 Bruni 43 42
7309
7309 Rossi Rossi
34 4534
4076 Mori 45 50
5698
5698 Bruni Bruni
43 4243
8123 Lupi 46 60
4076
4076 Mori Mori
45 5045
8123
8123 Lupi Lupi
46 6046

Matricola,Nome,Et (Stipendio>40(Impiegati) )
29 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esempio 3 1\4
Impiegati Supervisione
Matricola Nome Et Stipendio Impiegato Capo
7309 Rossi 34 45 7309 5698
5998 Bianchi 37 38 5998 5698
9553 Neri 42 35 9553 4076
5698 Bruni 43 42 5698 4076
4076 Mori 45 50 4076 8123
8123 Lupi 46 60
Una buona tecnica per ricavare le
Trovare le Matricole dei capi degli espressioni dellalgebra relazionale
impiegati che guadagnano pi di 40 quella di procedere per passi,
milioni ricordando che i risultati di
interrogazioni intermedie sono
sempre relazioni
30 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esempio 3 2\4
Impiegati
PASSO 1 : si cercano tutti gli
Matricola Nome Et Stipendio impiegati che guadagnano pi di 40
7309 Rossi 34 45 milioni
5998 Bianchi 37 38
9553
5698
Neri
Bruni
42
43
35
42 Stipendio>40(Impiegati)

4076 Mori 45 50
8123 Lupi 46 60
Matricola Nome Et Stipendio
7309 Rossi 34 45
5698 Bruni 43 42
4076 Mori 45 50
8123 Lupi 46 60
31 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esempio 3 3\4
(Impiegati)
Stipendio>40
PASSO 2 : si associano tutti gli
Matricola Nome Et Stipendio
impiegati che guadagnano pi di 40
7309 Rossi 34 45 milioni ai loro capi, sfruttando un
5698 Bruni 43 42 equi-join con
4076 Mori 45 50 Supervisione.Impiegato=Matricola
8123 Lupi 46 60

Supervisione Supervisione



Stipendio>40(Impiegati)
Impiegato=Matricola
Impiegato Capo
7309 5698
5998 5698 Nome Et Stipendio Impiegato Capo

9553 4076 Rossi 34 45 7309 5698

5698 4076 Bruni 43 42 5698 4076

4076 8123 Mori 45 50 4076 8123


32 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esempio 3 4\4
Supervisione

Stipendio>40(Impiegati)
Impiegato=Matricola

Nome Et Stipendio Impiegato Capo


Rossi 34 45 7309 5698
Bruni 43 42 5698 4076
Mori 45 50 4076 8123

PASSO 3 : proietto la relazione Capo


ottenuta solo sullattributo Capo
5698
4076
capo(Supervisione

Impiegato=Matricola 8123

Stipendio>40(Impiegati) )
33 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esempio 4
Impiegati Supervisione
Matricola Nome Et Stipendio Impiegato Capo

Trovare nome e stipendio dei capi degli


impiegati che guadagnano pi di 40
milioni
nome,stipendio (
Impiegato

Matricola=Capo

Nome Stipendio



capo (Supervisione Impiegato=Matricola Bruni 42

( Stipendio>40 (Impiegati) ))) Mori


Lupi
50
60

34 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Esempio 5
Impiegati Supervisione
Matricola Nome Et Stipendio Impiegato Capo

Si pu sfruttare Trovare le matricole dei capi i cui


loperatore
rappresentante la
impiegati guadagnano tutti pi di 40
differenza... milioni.

(Supervisione) -
capo

(Supervisione Capo


capo Impiegato=Matricola
8123
( Stipendio<=40 (Impiegati) ))

35 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Esempio 6
Impiegati Supervisione
Matricola Nome Et Stipendio Impiegato Capo

Trovare gli impiegati che guadagnano


pi del proprio capo, mostrando
Matricola,Nome,Stipendio,MatrC,NomeC,StipC ( matricola, nome e stipendio


dell'impiegato e del capo
Stipendio>StipC (
( (Matricola MatrC, Nome NomeC , Stipendio StipC , Et EtC), Impiegati)

MatrC=Capo

(Supervisione Impiegato=Matricola
Impiegati )))
MatrC NomeC StipC Matricola Nome Stipendio

5698 Bruni 42 7309 Rossi 45


36 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Esercizio 1
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

Formulare in algebra relazionale le seguenti interrogazioni:


1. Trovare i nomi dei fornitori che forniscono pezzi rossi
2. Trovare i fid dei fornitori che forniscono pezzi rossi o pezzi verdi
3. Trovare i fid dei fornitori che forniscono pezzi rossi o si trovano a via Cavour
4. Trovare i fid dei fornitori che forniscono pezzi rossi e pezzi verdi
5. Trovare i fid dei fornitori che forniscono tutti i pezzi
6. Trovare i fid dei fornitori che forniscono tutti i pezzi rossi
7. Trovare i fid dei fornitori che forniscono tutti i pezzi rossi o verdi
8. Trovare i fid dei fornitori che forniscono tutti i pezzi rossi oppure tutti i pezzi verdi
9. Trovare coppie di fid tali che il fornitore con il primo fid applica per alcune parti un prezzo
maggiore di quello del fornitore con il secondo fid
10. Trovare i pid dei pezzi forniti da almeno due diversi fornitori
11. Trovare i pid dei pezzi pi costosi forniti dai fornitori chiamati Sapienza
12. Trovare i pid dei pezzi forniti da tutti i fornitori a meno di 200 (se qualche fornitore non ne
fornisce, o chiede pi di 200 , il pezzo non viene selezionato)

37 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 1\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

1. Trovare i nomi dei fornitori che forniscono pezzi rossi

fnome (
fid((pid (colore=rosso (Pezzi)))

Catalogo)

Fornitori) Le proiezioni fid e pid sono


ridondanti...migliorano la
leggibilit dei risultati
intermedi, ma in questo caso non
sono strettamente necessarie
38 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 1 - 2\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

2. Trovare i fid dei fornitori che forniscono pezzi rossi o pezzi verdi

fid(pid (colore=rosso U colore=verde (Pezzi))



Catalogo)

39 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 3\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

3. Trovare i fid dei fornitori che forniscono pezzi rossi o si trovano a via
Cavour

(R1, fid((pid(colore=rosso (Pezzi)))



Catalogo))


(R2, fid(indirizzo=Via Cavour (Fornitori))) Si sfrutta loperatore di
ridenominazione per creare le due
nuove relazioni R1 e R2, sulle quali
R1 R2 si pu successivamente calcolare
lunione
40 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 1 - 4\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

4. Trovare i fid dei fornitori che forniscono pezzi rossi e pezzi verdi

(R1, fid(pid(colore=rosso (Pezzi))



Catalogo))


(R2, fid(pid(colore=verde (Pezzi)) Catalogo))

R1 R2

41 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 5\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

5. Trovare i fid dei fornitori che forniscono tutti i pezzi

(fid, pid (Catalogo)) / (pid (Pezzi))


Si sfrutta loperatore
di divisione

42 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 6\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

6. Trovare i fid dei fornitori che forniscono tutti i pezzi rossi

(fid, pid (Catalogo) / (pid (colore=rosso (Pezzi))

43 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 7\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

7. Trovare i fid dei fornitori che forniscono tutti i pezzi rossi o verdi

(fid, pid (Catalogo)) / (pid (colore=rosso U colore=verde (Pezzi)))

44 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 8\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

8. Trovare i fid dei fornitori che forniscono tutti i pezzi rossi oppure tutti i
pezzi verdi

(R1, ((fid, pid (Catalogo)) / (pid (colore=rosso (Pezzi))))


(R2, ((fid, pid (Catalogo)) / (pid (colore=verde (Pezzi))))
R1 R2

45 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 9\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

9. Trovare coppie di fid tali che il fornitore con il primo fid applica per
alcuni pezzi un prezzo maggiore di quello del fornitore con il secondo fid

(R1, Catalogo)
(R2, Catalogo)

R1.fid, R2.fid( R1.pid = R2.pid R1.fid R2.fid R1.costo > R2.costo (R1xR2))

46 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 10\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

10. Trovare i pid dei pezzi forniti da almeno due diversi fornitori

(R1, Catalogo)
(R2, Catalogo)

R1.pid ( R1.pid = R2.pid R1.fid R2.fid (R1xR2))

47 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 1 - 11\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

11. Trovare i pid dei pezzi pi costosi forniti dai fornitori chiamati
Sapienza

(R1, fid (fnome=Sapienza (Fornitori)))


(R2, (R1 Catalogo))

(R3, R2)
(R4(1 fid, 2 pid, 3 costo), (R3.costo > R2.costo (R3xR2))
pid (R2 fid, pid, costo (R4))
48 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 1 - 12\12
Si consideri il database che contiene le seguenti relazioni:
FORNITORI (fid : integer, fnome : String, indirizzo : String)
PEZZI(pid : integer , pnome : String, colore : String)
CATALOGO (fid : integer, pid : integer, costo : real)

12. Trovare i pid dei pezzi forniti da tutti i fornitori a meno di 200 (se
qualche fornitore non ne fornisce, o chiede pi di 200 , il pezzo non
viene selezionato)

(pid, fid (costo<=200(Catalogo))) / (fid (Fornitori))

49 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Vincoli di integrit referenziale tra:
Commissioni.Presidente e Deputati.Codice
Esercizio 2

Deputati.Commissione e Commissioni.Numero
Deputati.Provincia e Province.Sigla
Deputati.Collegio e Collegi.Numero
Province.Regioni e Regioni.Codice
Collegi.Provincia e Province.Sigla
Si consideri il database che contiene le seguenti relazioni:
DEPUTATI (Codice, Cognome, Nome, Commissione, Provincia,Collegio)
COLLEGI (Provincia , Numero, Nome)
PROVINCE (Sigla, Nome, Regione)
REGIONI (Codice, Nome)
COMMISSIONI (Numero, Nome, Presidente)

Formulare in algebra relazionale le seguenti interrogazioni:


1. Trovare nome e cognome dei presidenti di commissioni cui partecipa almeno un deputato
eletto in una provincia della Sicilia
2. Trovare nome e cognome dei deputati della commissione Bilancio
3. Trovare nome, cognome e provincia di elezione dei deputati della commissione Bilancio
4. Trovare nome, cognome, provincia e regione di elezione dei deputati della commissione
Bilancio
5. Trovare le regioni in cui vi sia un solo collegio, indicando nome e cognome del deputato
ivi eletto
6. Trovare i collegi di una stessa regione in cui siano stati eletti deputati con lo stesso nome
proprio
50 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 2 - 1\6
Si consideri il database che contiene le seguenti relazioni:
DEPUTATI (Codice, Cognome, Nome, Commissione, Provincia,Collegio)
COLLEGI (Provincia , Numero, Nome)
PROVINCE (Sigla, Nome, Regione)
REGIONI (Codice, Nome)
COMMISSIONI (Numero, Nome, Presidente)

1. Trovare nome e cognome dei presidenti di commissioni cui partecipa


almeno un deputato eletto in una provincia della Sicilia
nom, cogn

(( ((nomenom, cognomecogn),Deputati) Presidente=Codice


(Commissioni Numero=Comm (((CommissioneComm),Deputati Provincia=Sigla

(Province Regione=Codice

Nome=Sicilia (Regioni)))))))
51 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 2 - 2\6
Si consideri il database che contiene le seguenti relazioni:
DEPUTATI (Codice, Cognome, Nome, Commissione, Provincia,Collegio)
COLLEGI (Provincia , Numero, Nome)
PROVINCE (Sigla, Nome, Regione)
REGIONI (Codice, Nome)
COMMISSIONI (Numero, Nome, Presidente)

2. Trovare nome e cognome dei deputati della commissione Bilancio

NomeC, Cognome ( ((NomeNomeC),Deputati)



Commissione=Numero
(nome=Bilancio (Commissioni)))

52 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 2 - 3\6
Si consideri il database che contiene le seguenti relazioni:
DEPUTATI (Codice, Cognome, Nome, Commissione, Provincia,Collegio)
COLLEGI (Provincia , Numero, Nome)
PROVINCE (Sigla, Nome, Regione)
REGIONI (Codice, Nome)
COMMISSIONI (Numero, Nome, Presidente)

3. Trovare nome, cognome e provincia di elezione dei deputati della


commissione Bilancio

nomeC, Cognome, nom1(


((Nomenom1),Province)

Sigla=Provincia
(((NomenomeC),Deputati) Commissione=Numero

(nome=Bilancio (Commissioni)))
53 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 2 - 4\6
Si consideri il database che contiene le seguenti relazioni:
DEPUTATI (Codice, Cognome, Nome, Commissione, Provincia,Collegio)
COLLEGI (Provincia , Numero, Nome)
PROVINCE (Sigla, Nome, Regione)
REGIONI (Codice, Nome)
COMMISSIONI (Numero, Nome, Presidente)

4. Trovare nome, cognome, provincia e regione di elezione dei deputati


della commissione Bilancio
nomeC, Cognome, nom1,reg(
((Nomereg),Regioni)

Codice=Regione
((Nomenom1),Province)

Sigla=Provincia
(((NomenomeC),Deputati)

Commissione=Numero

(nome=Bilancio (Commissioni)))
54 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale
Soluzione Esercizio 2 - 5\6
5. Trovare le regioni in cui vi sia un solo collegio, indicando nome e
cognome del deputato ivi eletto

La soluzione pu essere ottenuta procedendo per passi :


1) Calcolare la lista completa delle regioni e dei rispettivi collegi
associati
2) Calcolare la lista completa delle regioni che hanno pi di un
collegio associato
3) Effettuare la differenza insiemistica tra la relazione ottenuta al
punto (1) e la relazione ottenuta la punto (2) ; la relazione risultato
conterr SOLO quelle regioni che hanno esattamente un unico
collegio associato
4) Per quelle regioni che hanno esattamente un solo collegio, indicare
nome e cognome del deputato eletto

55 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 2 - 5\6
5. Trovare le regioni in cui vi sia un solo collegio, indicando nome e
cognome del deputato ivi eletto

1) Calcolare la lista completa delle regioni e dei rispettivi collegi


associati

(R1,
(Regione, CodiceCollegio(
((NomeNomeColl, Numero CodiceCollegio),Collegi)



Provincia=Sigla

((NomeNomeReg),Regioni))))

(Province Regione=Codice

Per aumentare la
R1 leggibilit, si rinomina
con R1 il risultato
Regione CodiceCollegio
dellinterrogazione

56 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 2 - 5\6
5. Trovare le regioni in cui vi sia un solo collegio, indicando nome e
cognome del deputato ivi eletto

2) Calcolare la lista completa delle regioni che hanno pi di un


collegio associato Si costruisce una nuova
relazione R2 identica ad
(R2 (RegioneRegione2, CodiceCollegio CodiceCollegio2), R1) R1, ridenominando gli
attributi

(R3, (Regione, CodiceCollegio( R3 conterr tutte le regioni


che hanno almeno due collegi
R1 R2))) differenti.quindi R3 NON

Regione=Regione2 AND CodiceCollegio CodiceCollegio2


CONTERRA le regioni che
hanno un solo collegio
Esempio
R1 R2 R3
Regione CodiceCollegio Regione2 CodiceCollegio2 Regione CodiceCollegio
C_Lazio C01 C_Lazio C01 C_Lazio C01
C_Lazio C02 C_Lazio C02 C_Lazio C02
C_Toscana C03 C_Toscana C03
Soluzione Esercizio 2 - 5\6
5. Trovare le regioni in cui vi sia un solo collegio, indicando nome e
cognome del deputato ivi eletto

3) Effettuare la differenza insiemistica tra la relazione ottenuta al


punto (1) e la relazione ottenuta la punto (2) ; la relazione risultato
conterr SOLO quelle regioni che hanno esattamente un unico
collegio associato

(R4, R1 R3) R4 conterr tutte le regioni


che hanno un solo collegio
Esempio
R1 R3
Regione CodiceCollegio Regione CodiceCollegio
R4
Regione CodiceCollegio
C_Lazio C01 C_Lazio C01
C_Toscana C03
C_Lazio C02 C_Lazio C02
C_Toscana C03

58 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 2 - 5\6
5. Trovare le regioni in cui vi sia un solo collegio, indicando nome e
cognome del deputato ivi eletto

4) Per quelle regioni che hanno esattamente un solo collegio, indicare


nome e cognome del deputato eletto (JOIN con la relazione Deputati
e PROJ sugli attributi Nome, Cognome, Regione e Collegio
questultimo attributo facoltativo nella proiezione)

(R5, (Nome,Cognome,Regione,Collegio(

R4 )))

Deputati Collegio=CodiceCollegio

R5
Nome Cognome Regione Collegio

59 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 2 - 6\6
6. Trovare i collegi di una stessa regione in cui siano stati eletti deputati con
lo stesso nome proprio
1)
(R1,
Regione, NomeReg, Collegio, NomeColl, Cognome, Nome(

Deputati Collegio=CodiceCollegio

((NomeNomeColl, Numero CodiceCollegio, Provincia ProvColl),Collegi



ProvColl=Sigla

((NomeNomeProv),Province


Regione=Codice

((NomeNomeReg),Regioni)))))

R1 la relazione che
descrive la lista completa
delle Regioni, dei Collegi
associati e dei Deputati
eletti

60 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale


Soluzione Esercizio 2 - 6\6
6. Trovare i collegi di una stessa regione in cui siano stati eletti deputati con
lo stesso nome proprio

2)
(R2(Regione Regione2, NomeReg NomeReg2, Collegio Collegio2, NomeColl NomeColl2,
Nome Nome2, CognomeCognome2 ), R1)
Si costruisce una nuova
relazione R2 identica ad
3) R1, ridenominando gli
attributi
(R3, NomeReg, NomeColl, Nome, Cognome (

R1 R2))

Collegio Collegio2 AND Regione=Regione2 AND Nome=Nome2

R3 fornisce tutti i collegi di una stessa


Si effettua un JOIN condizionale fra
regione in cui siano stati eletti deputati con
R1 e R2, mantenendo quei deputati
lo stesso nome proprio. La soluzione
con lo stesso Nome eletti in diversi
ammette che uno stesso Deputato possa
Collegi della stessa Regione
essere stato eletto per pi collegi
61 Esercitazioni di Basi di Dati A.A.10\11 2 Algebra Relazionale

Potrebbero piacerti anche