algebra
Post on 16-Jun-2015
274 Views
Preview:
TRANSCRIPT
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
NULLMilanoNeri432561fl@is.labLondonFlint564725af@is.labMilanoFerrara878737
mon@is.labBergamoMontanelli128943EMAILCITTAFNOMINATIVOPIVA
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
NULLMilanoNeri432561fl@is.labLondonFlint564725af@is.labMilanoFerrara878737
mon@is.labBergamoMontanelli128943EMAILCITTAFNOMINATIVOPIVA
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
NULLMilanoNeri432561fl@is.labLondonFlint564725af@is.labMilanoFerrara878737
mon@is.labBergamoMontanelli128943EMAILCITTAFNOMINATIVOPIVA
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
NULLMilanoNeri432561fl@is.labLondonFlint564725af@is.labMilanoFerrara878737
mon@is.labBergamoMontanelli128943EMAILCITTAFNOMINATIVOPIVA
C4C3C2C1
MATRICOLA
GinevraVerdiTarantoBianchiRomaNeriMilanoRossi
CITTACNOME
12/08/199911/09/200128/04/200422/04/2004
DATA
40P6C15647251000P5C18787372500P1C45647256780P1C3128943
QUANTITACODPRODOTTOCLIENTEFORNITORE
top related