Esercitazione Algebra Relazionale -...

24
Basi di Dati Esercitazione Algebra Relazionale 3 Novembre 2011

Transcript of Esercitazione Algebra Relazionale -...

Page 1: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Basi di Dati Esercitazione Algebra Relazionale

3 Novembre 2011

Page 2: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 2Algebra Relazionale

Esercizio 1

Considerando la seguente base di dati:

Fornitori (CodiceFornitore, Nome, Indirizzo, Città)Prodotti (CodiceProdotto, Nome, Marca, Modello)Catalogo (CodiceFornitore, CodiceProdotto, Costo)

formulare in Algebra Relazionale una interrogazione per ciascunodei seguenti punti:

1. Trovare Nome, Marca e Modello dei prodotti acquistabili con meno di2000 €.

2. Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM è lamarca di un prodotto).

3. Trovare i codici di tutti i prodotti che sono forniti da almeno duefornitori.

4. Trovare i nomi dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.

5. Trovare i nomi dei fornitori che forniscono tutti i prodotti IBMpresenti nel catalogo.

Page 3: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 3Algebra Relazionale

Le Relazioni

FornitoriNome CodiceFornitore Indirizzo CittàLadroni 001 Via Ostense RomaRisparmietti 002 Viale Marconi RomaTeloporto 010 Via Roma Milano

CodiceProdotto Nome Marca Modello0001 Notebook IBM 390 x0002 Desktop IBM 5100003 Desktop ACER 730

Prodotti

Catalogo

CodiceFornitore CodiceProdotto Costo001 0002 € 3.200001 0003 € 2.200002 0001 € 1.900002 0002 € 2.500002 0003 € 1.800010 0001 € 2.200010 0003 € 2.000

Page 4: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 4Algebra Relazionale

1.Trovare Nome, Marca e Modello dei prodotti acquistabili conmeno di 2000 €.

Soluzione Esercizio 1.1 (1/3)

Passo 1: (Prodotti ⋈ Catalogo)

CodiceProdotto Nome Marca Modello CodiceFornitore Costo

0001 Notebook IBM 390 x 002 € 1.900

0001 Notebook IBM 390 x 010 € 2.200

0002 Desktop IBM 510 002 € 2.500

0002 Desktop IBM 510 001 € 3.200

0003 Desktop ACER 730 001 € 2.200

0003 Desktop ACER 730 010 € 2.000

0003 Desktop ACER 730 002 € 1.800

Page 5: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 5Algebra Relazionale

1.Trovare Nome, Marca e Modello dei prodotti acquistabili conmeno di 2000 €.

Soluzione Esercizio 1.1 (2/3)

Passo 2: (Prodotti ⋈ Catalogo)(Costo < 2000 )

CodiceProdotto Nome Marca Modello CodiceFornitore Costo

0001 Notebook IBM 390 x 002 € 1.900

0003 Desktop ACER 730 002 € 1.800

Page 6: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 6Algebra Relazionale

1.Trovare Nome, Marca e Modello dei prodotti acquistabili con meno di 2000 €.

Nome, Marca, Modello(Costo < 2000(Prodotti ⋈ Catalogo))

Soluzione Esercizio 1.1 (3/3)

Passo 3:

Nome Marca Modello

Notebook IBM 390 x

Desktop ACER 730

Page 7: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 7Algebra Relazionale

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM(IBM è la marca di un prodotto).

Soluzione Esercizio 1.2 (1/4)

Passo 1: (Fornitori ⋈ Catalogo)

Nome Indirizzo Città CodiceFornitore CodiceProdotto CostoLadroni Via Ostense Roma 001 0003 € 2.200

Ladroni Via Ostense Roma 001 0002 € 3.200

Risparmietti Viale Marconi Roma 002 0001 € 1.900

Risparmietti Viale Marconi Roma 002 0002 € 2.500

Risparmietti Viale Marconi Roma 002 0003 € 1.800

Teloporto Via Roma Milano 010 0001 € 2.200

Teloporto Via Roma Milano 010 0003 € 2.000

Page 8: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 8Algebra Relazionale

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM(IBM è la marca di un prodotto).

Soluzione Esercizio 1.2 (2/4)

Passo 2: (Fornitori ⋈ Catalogo)

Nome Indirizzo Città CodiceFornitore Costo CodiceProdotto Marca

Ladroni Via Ostense Roma 001 € 2.200 0003 ACER

Risparmietti Viale Marconi Roma 002 € 1.900 0001 IBM

Risparmietti Viale Marconi Roma 002 € 2.500 0002 IBM

Teloporto Via Roma Milano 010 € 2.200 0001 IBM

Ladroni Via Ostense Roma 001 € 3.200 0002 IBM

Teloporto Via Roma Milano 010 € 2.000 0003 ACER

Risparmietti Viale Marconi Roma 002 € 1.800 0003 ACER

⋈(CodiceProdotto,Marca(Prodotti)))(

Page 9: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 9Algebra Relazionale

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM(IBM è la marca di un prodotto).

Marca =‘IBM’((Fornitori⋈ Catalogo)

⋈(CodiceProdotto,Marca(Prodotti))

Soluzione Esercizio 1.2 (3/4)

Passo 3:

Nome Indirizzo Città CodiceFornitore Costo CodiceProdotto Marca

Risparmietti Viale Marconi Roma 002 € 1.900 0001 IBM

Teloporto Via Roma Milano 010 € 2.200 0001 IBM

Risparmietti Viale Marconi Roma 002 € 2.500 0002 IBM

Ladroni Via Ostense Roma 001 € 3.200 0002 IBM

Page 10: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 10Algebra Relazionale

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM(IBM è la marca di un prodotto).

Nome (

Marca =‘IBM’((Fornitori⋈ Catalogo)

⋈(CodiceProdotto,Marca(Prodotti)) )

Soluzione Esercizio 1.2 (4/4)

Passo 4:

NomeLadroni

Risparmietti

Teloporto

Page 11: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 11Algebra Relazionale

3. Trovare i codici di tutti i prodotti che sono forniti da almenodue fornitori.

Soluzione Esercizio 1.3 (1/6)

Osservazione:

Le informazioni necessarie sonocontenute nella relazione Catalogo.La soluzione si ottiene generando larelazione mostrata in figura,osservando che è possibile individuare iprodotti forniti da due fornitori.

CF1 CP CF2002 0001 002010 0001 002002 0001 010010 0001 010002 0002 002001 0002 002002 0002 001001 0002 001001 0003 001010 0003 001002 0003 001001 0003 010010 0003 010002 0003 010001 0003 002010 0003 002002 0003 002

Page 12: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 12Algebra Relazionale

3. Trovare i codici di tutti i prodotti che sono forniti da almeno due fornitori.

Soluzione Esercizio 1.3 (2/6)

Passo 1:

CF ← CodiceFornitore(CodiceProdotto,CodiceFornitore Catalogo)

CF CodiceProdotto Costo001 0002 € 3.200001 0003 € 2.200002 0001 € 1.900002 0002 € 2.500002 0003 € 1.800010 0001 € 2.200010 0003 € 2.000

Page 13: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 13Algebra Relazionale

Soluzione Esercizio 1.3 (3/6)

3. Trovare i codici di tutti i prodotti che sono forniti da almeno due fornitori.

Per comodità diamo un nome alla relazione ottenuta al passo precedente

CopiaCatalogo :=CF ← CodiceFornitore(

CodiceProdotto,CodiceFornitore Catalogo)

Page 14: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 14Algebra Relazionale

3. Trovare i codici di tutti i prodotti che sono forniti da almeno due fornitori.

Soluzione Esercizio 1.3 (4/6)

Passo 2:

CF CodiceProdotto CodiceFornitore002 0001 002010 0001 002002 0001 010010 0001 010002 0002 002001 0002 002002 0002 001001 0002 001001 0003 001010 0003 001002 0003 001001 0003 010010 0003 010002 0003 010001 0003 002010 0003 002002 0003 002

Catalogo ⋈ ( CopiaCatalogo )

Page 15: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 15Algebra Relazionale

3. Trovare i codici di tutti i prodotti che sono forniti da almeno due fornitori.

Soluzione Esercizio 1.3 (5/6)

Passo 3:

CodiceFornitore > CF ( Catalogo ⋈ CopiaCatalogo )

CF CodiceProdotto CodiceFornitore001 0002 002002 0001 010001 0003 010002 0003 010001 0003 002

Page 16: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 16Algebra Relazionale

3. Trovare i codici di tutti i prodotti che sono forniti da almeno due fornitori.

CodiceProdotto ( CodiceFornitore > CF(Catalogo ⋈ CopiaCatalogo ))

Soluzione Esercizio 1.3 (6/6)

Passo 4:

CodiceProdotto000100020003

Page 17: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 17Algebra Relazionale

4.Trovare i nomi dei fornitori che distribuiscono tutti i prodotti presenti nel catalogo.

Soluzione Esercizio 1.4 (1/6)

Per risolvere l’esercizio è necessario una sorta diquantificatore universale.

L’algebra relazionale non possiede tale costrutto. La soluzione si ottiene sottraendo alla relazione Fornitori,

una relazione che contiene i Fornitori ai quali manca almenoun prodotto.

Indicheremo per brevità di esposizione:

CodiceFornitore con CF

CodiceProdotto con CP

Osservazioni:

Page 18: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 18Algebra Relazionale

Soluzione Esercizio 1.4 (2/6)

Passo 1:

Prodotto cartesiano

4.Trovare i nomi dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.

(CF(Fornitori)⋈ CP(Catalogo))

Tutte le coppie

possibili

CF CP

001 0001

001 0002

001 0003

002 0001

002 0002

002 0003

010 0001

010 0002

010 0003

Page 19: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 19Algebra Relazionale

Soluzione Esercizio 1.4 (3/6)

4.Trovare i nomi dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.

Passo 2:

Sottraggo alla relazione ottenuta nel passo 1 i CF e i CP contenuti nella relazione Catalogo.

( (CF(Fornitori)⋈ CP(Catalogo))– CF,CP(Catalogo) )

ottengo una relazione contenente i CF dei Fornitori associatiai CP dei prodotti che non hanno in catalogoquindi i CF dei Fornitori a cui manca almeno un prodotto diquelli in catalogo.

Page 20: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 20Algebra Relazionale

Soluzione Esercizio 1.4 (4/6)

… continua Passo 2:

-

CF CP

001 0003

002 0001

002 0002

010 0001

001 0002

010 0003

002 0003

=

CF CP001 0001

001 0002

001 0003

002 0001

002 0002

002 0003

010 0001

010 0002

010 0003

CF CP001 0001010 0002

CF,CP(Catalogo)

(CF(Fornitori)⋈ CP(Catalogo))

Page 21: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 21Algebra Relazionale

Soluzione Esercizio 1.4 (5/6)

4.Trovare i nomi dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.

Passo 3:

CF (

(CF(Fornitori)⋈ CP(Catalogo))

– CF,CP(Catalogo) )

Chiamiamo questa interrogazione con R.R corrisponde ai CF dei Fornitori ai quali manca almeno unprodotto di quelli in catalogo.

CF001010

Page 22: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 22Algebra Relazionale

Soluzione Esercizio 1.4 (6/6)

4.Trovare i nomi dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.

Passo 4:

( CF(Fornitori)- R )

Passo 5:Devo ricavare il Nome dei Fornitori

Nome((CF(Fornitori)- R )⋈ Fornitori )

CF di Fornitori chedistribuiscono tuttii prodotti presentinel Catalogo

NomeRisparmietti

Page 23: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 23Algebra Relazionale

5. Trovare i nomi dei fornitori che forniscono tutti i prodottiIBM presenti nel catalogo.

Esercizio 1.5

Page 24: Esercitazione Algebra Relazionale - torlone.dia.uniroma3.ittorlone.dia.uniroma3.it/bd/1112/Es1.pdf · Esercitazione Basi di Dati Algebra Relazionale 17 4.Trovare i nomi dei fornitori

Esercitazione Basi di Dati 24Algebra Relazionale

5. Trovare i nomi dei fornitori che forniscono tutti i prodottiIBM presenti nel catalogo.

La soluzione è identica a quella della interrogazione 4,perché, al posto della relazione Catalogo si usi la relazionecatalogoIBM definita come segue:

CatalogoIBM := CodiceProdotto,CodiceFornitore(

Marca=’IBM’(Catalogo ⋈ Prodotti))

Soluzione Esercizio 1.5