Esercitazioni 01 Algebra Relazionale

9
1 A.A. 2005/2006 Basi di Dati e Laboratorio 1 Corso di Basi di Dati e Laboratorio Esercitazione di algebra relazionale Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 2 Simbologia R 1 * R 2 JOIN NATURALE R 1 < condizione ‘=‘ > R 2 EQUIJOIN R 1 < condizione > R 2 THETA JOIN Π < attributi > (R) PROIEZIONE σ < condizione > (R) SELEZIONE A.A. 2005/2006 Basi di Dati e Laboratorio 3 Simbologia R 1 (Z) ÷ R 2 (Y) con Z = X Y DIVISIONE R 1 × R 2 PRODOTTO CARTESIANO R 1 –R 2 DIFFERENZA R 1 R 2 INTERSEZIONE R 1 R 2 UNIONE

Transcript of Esercitazioni 01 Algebra Relazionale

1

A.A. 2005/2006 Basi di Dati e Laboratorio 1

Corso di Basi di Dati e Laboratorio

Esercitazione di algebra relazionale

Alfio Ferrara - Stefano Montanelli

A.A. 2005/2006 Basi di Dati e Laboratorio 2

Simbologia

R1 * R2JOIN NATURALE

R1 < condizione ‘=‘ >R2EQUIJOIN

R1 < condizione >R2THETA JOIN

Π< attributi >(R)PROIEZIONE

σ< condizione >(R)SELEZIONE

A.A. 2005/2006 Basi di Dati e Laboratorio 3

Simbologia

R1(Z) ÷ R2(Y)con Z = X ∪ Y

DIVISIONE

R1 × R2PRODOTTOCARTESIANO

R1 – R2DIFFERENZA

R1 ∩ R2INTERSEZIONE

R1 ∪ R2UNIONE

2

A.A. 2005/2006 Basi di Dati e Laboratorio 4

Schema relazionale

• Schema relazionale– CLIENTE (codice, nome, indirizzo, sconto)– ACQUISTO (codice, codnegozio, nomep,

data, luogo)– PRODOTTO (nomep, tipo, produttore, costo)

A.A. 2005/2006 Basi di Dati e Laboratorio 5

Schema relazionale

noCagliariNeriK4yesPalermoVerdiK3yesMilanoBianchiK2noRomaRossiK1

SCONTOINDIRIZZONOMECODICE

CLIENTE

K2K2K3K1

CODICE

Milano28/04/2004OpenOfficeN4Milano05/04/2003GMSN6Torino03/04/2001GMSN7Pavia22/10/2002H-MatchN1

LUOGODATANOMEPCODNEGOZIO

ACQUISTO

0OO.orgOAOpenOffice1020OracleDBMSOracle2500baLSIGestionaleGMS6000ISLabSWH-Match

COSTOPRODUTTORETIPONOMEP

PRODOTTO

A.A. 2005/2006 Basi di Dati e Laboratorio 6

Interrogazione 1

– Formulare in algebra relazionale ottimizzata la seguente interrogazione:

– Determinare codice e nome dei clienti che hanno acquistato prodotti gestionali in Milano

–CLIENTE (codice, nome, indirizzo, sconto)–ACQUISTO (codice, codnegozio, nomep, data, luogo)–PRODOTTO (nomep, tipo, produttore, costo)

3

A.A. 2005/2006 Basi di Dati e Laboratorio 7

Soluzione 1

Determinare codice e nome dei clienti che hanno acquistato prodotti gestionali in Milano

–CLIENTE (codice, nome, indirizzo, sconto)–ACQUISTO (codice, codnegozio, nomep, data, luogo)–PRODOTTO (nomep, tipo, produttore, costo)

(Πcodice,nome(CLIENTE)) *

(Πcodice((Πcodice,nomep(σluogo=‘Milano’(ACQUISTO))) *

(Πnomep(σtipo=‘gestionale’(PRODOTTO)))))

A.A. 2005/2006 Basi di Dati e Laboratorio 8

Soluzione 1

noCagliariNeriK4yesPalermoVerdiK3yesMilanoBianchiK2noRomaRossiK1

SCONTOINDIRIZZONOMECODICE

K2K2K3K1

CODICE

Milano28/04/2004OpenOfficeN4Milano05/04/2003GMSN6Torino03/04/2001GMSN7Pavia22/10/2002H-MatchN1

LUOGODATANOMEPCODNEGOZIO

0OO.orgOAOpenOffice1020OracleDBMSOracle2500baLSIGestionaleGMS6000ISLabSWH-Match

COSTOPRODUTTORETIPONOMEP

A.A. 2005/2006 Basi di Dati e Laboratorio 9

Interrogazione 2

– Formulare in algebra relazionale ottimizzata la seguente interrogazione:

– Determinare i codici dei clienti con sconto che hanno acquistato prodotti gestionali e prodotti di office automation

–CLIENTE (codice, nome, indirizzo, sconto)–ACQUISTO (codice, codnegozio, nomep, data, luogo)–PRODOTTO (nomep, tipo, produttore, costo)

4

A.A. 2005/2006 Basi di Dati e Laboratorio 10

Soluzione 2

Determinare i codici dei clienti con sconto che hanno acquistato prodotti gestionali e prodotti di office automation

–CLIENTE (codice, nome, indirizzo, sconto)–ACQUISTO (codice, codnegozio, nomep, data, luogo)–PRODOTTO (nomep, tipo, produttore, costo)

(Πcodice(σsconto=‘yes’ (CLIENTE))) *(Πcodice((Πcodice,nomep(ACQUISTO)) *(Πnomep(σtipo=‘gestionale’(PRODOTTO)))))∩(Πcodice(σsconto=‘yes’ (CLIENTE))) *(Πcodice((Πcodice,nomep(ACQUISTO)) *(Πnomep(σtipo=‘OA’(PRODOTTO)))))

A.A. 2005/2006 Basi di Dati e Laboratorio 11

Soluzione 2

noCagliariNeriK4yesPalermoVerdiK3yesMilanoBianchiK2noRomaRossiK1

SCONTOINDIRIZZONOMECODICE

K2K2K3K1

CODICE

Milano28/04/2004OpenOfficeN4Milano05/04/2003GMSN6Torino03/04/2001GMSN7Pavia22/10/2002H-MatchN1

LUOGODATANOMEPCODNEGOZIO

0OO.orgOAOpenOffice1020OracleDBMSOracle2500baLSIGestionaleGMS6000ISLabSWH-Match

COSTOPRODUTTORETIPONOMEP

A.A. 2005/2006 Basi di Dati e Laboratorio 12

Interrogazione 3

– Formulare in algebra relazionale ottimizzata la seguente interrogazione:

– Determinare il nome dei prodotti acquistati da tutti i clienti con sconto

–CLIENTE (codice, nome, indirizzo, sconto)–ACQUISTO (codice, codnegozio, nomep, data, luogo)–PRODOTTO (nomep, tipo, produttore, costo)

5

A.A. 2005/2006 Basi di Dati e Laboratorio 13

Soluzione 3

Determinare il nome dei prodotti acquistati da tutti i clienti con sconto

–CLIENTE (codice, nome, indirizzo, sconto)–ACQUISTO (codice, codnegozio, nomep, data, luogo)–PRODOTTO (nomep, tipo, produttore, costo)

((Πcodice,nomep(ACQUISTO)) ÷

(Πcodice(σsconto=‘yes’ (CLIENTE))))

A.A. 2005/2006 Basi di Dati e Laboratorio 14

Soluzione 3

noCagliariNeriK4yesPalermoVerdiK3yesMilanoBianchiK2noRomaRossiK1

SCONTOINDIRIZZONOMECODICE

K2K2K3K1

CODICE

Milano28/04/2004OpenOfficeN4Milano05/04/2003GMSN6Torino03/04/2001GMSN7Pavia22/10/2002H-MatchN1

LUOGODATANOMEPCODNEGOZIO

0OO.orgOAOpenOffice1020OracleDBMSOracle2500baLSIGestionaleGMS6000ISLabSWH-Match

COSTOPRODUTTORETIPONOMEP

A.A. 2005/2006 Basi di Dati e Laboratorio 15

Schema relazionale

• Schema relazionale

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto,

Data, Quantita)

6

A.A. 2005/2006 Basi di Dati e Laboratorio 16

Schema relazionale

[email protected]@is.labMilanoFerrara878737

[email protected]

FORNITORE

C4C3C2C1

MATRICOLA

GinevraVerdiTarantoBianchiRomaNeriMilanoRossi

CITTACNOME

CLIENTE

12/08/199911/09/200128/04/200422/04/2004

DATA

40P6C15647251000P5C18787372500P1C45647256780P1C3128943

QUANTITACODPRODOTTOCLIENTEFORNITOREFORNITURA

A.A. 2005/2006 Basi di Dati e Laboratorio 17

Ridenominazione

• Operatore che cambia il nome degli attributi (contenuto delle relazioni inalterato)

ρNuovoNome ← Nome (R)

ρGenitore ← Padre (Paternità) ∪ ρGenitore ← Madre (Maternità)

PADRE FIGLIO

Adamo Caino

Adamo Abele

Abramo Isacco

Abramo Israele

MADRE FIGLIO

Eva Caino

Eva Abele

Sara Isacco

Agar Israele

Paternità Maternità

A.A. 2005/2006 Basi di Dati e Laboratorio 18

Interrogazione 1

– Formulare in algebra relazionale ottimizzata la seguente interrogazione:

– Trovare matricola e nome dei clienti che hanno ricevuto forniture da fornitori milanesi

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita)

7

A.A. 2005/2006 Basi di Dati e Laboratorio 19

Soluzione 1

Trovare matricola e nome dei clienti che hanno ricevuto forniture da fornitori milanesi

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita)

Πmatricola,nome((Πmatricola,nome (CLIENTE)) Matricola=Cliente

(ΠCliente((ΠCliente,Fornitore(FORNITURA)) Fornitore=PIVA

(ΠPIVA(σCittaF=‘Milano’(FORNITORE))))))

A.A. 2005/2006 Basi di Dati e Laboratorio 20

Soluzione 1

[email protected]@is.labMilanoFerrara878737

[email protected]

C4C3C2C1

MATRICOLA

GinevraVerdiTarantoBianchiRomaNeriMilanoRossi

CITTACNOME

12/08/199911/09/200128/04/200422/04/2004

DATA

40P6C15647251000P5C18787372500P1C45647256780P1C3128943

QUANTITACODPRODOTTOCLIENTEFORNITORE

A.A. 2005/2006 Basi di Dati e Laboratorio 21

Interrogazione 2

– Formulare in algebra relazionale ottimizzata la seguente interrogazione:

– Trovare le città in cui risiedono sia clienti che fornitori

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita)

8

A.A. 2005/2006 Basi di Dati e Laboratorio 22

((ρCitta←CittaC(ΠCittaC (CLIENTE)))

(ρCitta←CittaF (ΠCittaF (FORNITORE))))

Soluzione 2

Trovare le città in cui risiedono sia clienti che fornitori

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita)

A.A. 2005/2006 Basi di Dati e Laboratorio 23

Soluzione 2

[email protected]@is.labMilanoFerrara878737

[email protected]

C4C3C2C1

MATRICOLA

GinevraVerdiTarantoBianchiRomaNeriMilanoRossi

CITTACNOME

12/08/199911/09/200128/04/200422/04/2004

DATA

40P6C15647251000P5C18787372500P1C45647256780P1C3128943

QUANTITACODPRODOTTOCLIENTEFORNITORE

A.A. 2005/2006 Basi di Dati e Laboratorio 24

Interrogazione 3

– Formulare in algebra relazionale ottimizzata la seguente interrogazione:

– Trovare il nome del fornitore che haeffettuato forniture a tutti i clienti

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita)

9

A.A. 2005/2006 Basi di Dati e Laboratorio 25

Soluzione 3

Trovare il nome del fornitore che ha effettuato forniture a tutti i clienti

– FORNITORE(PIVA, Nominativo, CittaF, Email)– CLIENTE(Matricola, Nome, CittaC)– FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita)

ΠNominativo((ΠPIVA,Nominativo(FORNITORE)) PIVA=Fornitore

((ΠCliente,Fornitore(FORNITURA)) ÷

(ρCliente←Matricola(ΠMatricola(CLIENTE)))))

A.A. 2005/2006 Basi di Dati e Laboratorio 26

Soluzione 3

[email protected]@is.labMilanoFerrara878737

[email protected]

C4C3C2C1

MATRICOLA

GinevraVerdiTarantoBianchiRomaNeriMilanoRossi

CITTACNOME

12/08/199911/09/200128/04/200422/04/2004

DATA

40P6C15647251000P5C18787372500P1C45647256780P1C3128943

QUANTITACODPRODOTTOCLIENTEFORNITORE