Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… ·...

32
Basi di Dati Basi di Dati Esercitazione Algebra Relazionale Esercitazione Algebra Relazionale ed SQL 10 Novembre 2009

Transcript of Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… ·...

Page 1: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Basi di DatiBasi di Dati Esercitazione Algebra RelazionaleEsercitazione Algebra Relazionale

ed SQL10 Novembre 2009

Page 2: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1

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

con vincoli di integrità referenzialef P d tt l hi di P d ttifra Prodotto e la chiave di Prodottifra Fornitore e la chiave di Fornitori

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

2 Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM è la2. 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.fornitori.

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

5 Trovare i nomi dei fornitori che forniscono tutti i prodotti IBM

Esercitazione Basi di Dati 2Algebra Relazionale e SQL

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

Page 3: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Le Relazioni

Nome CodiceFornitore Indirizzo Citta

L d i 01 Vi O ti RLadroni 01 Via Ostiense Roma

Risparmietti 02 Viale Marconi Roma

Teloporto 10 Via Roma MilanoFornitori

Teloporto 10 Via Roma Milano

TuttoIBM 13 Corso Italia Perugia

Nome CodiceProdotto Marca Modello

Notebook 01 IBM 390xProdotti

Desktop 02 IBM 510

Desktop 10 Acer 730

Prodotti

Esercitazione Basi di Dati 3Algebra Relazionale e SQL

Page 4: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Le Relazioni

Fornitore Prodotto Costo

01 002 3200

01 003 2200

02 001 1900Catalogo02 002 2500

02 003 1800

10 001 2200

Catalogo

10 001 2200

10 003 2000

13 001 2600

13 002 2850

Esercitazione Basi di Dati 4Algebra Relazionale e SQL

Page 5: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.1

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP Nome Marca Modello)Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

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

Esercitazione Basi di Dati 5Algebra Relazionale e SQL

Page 6: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.1

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

πNome, Marca, Modello, ,

(σCosto < 2000(Prodotti ⋈CP=P Catalogo))

Esercitazione Basi di Dati 6Algebra Relazionale e SQL

Page 7: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.1

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

1 T N M M d ll d i d tti i t bili

( , , , )

Catalogo (F, P, Costo)

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

πNome, Marca, Modello(σCosto < 2000(Prodotti ⋈CP=P Catalogo))

select distinct nome, marca, modello

from prodotti, catalogo

where codiceProdotto = prodotto

and costo < 2000

Esercitazione Basi di Dati 7Algebra Relazionale e SQL

Page 8: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.1

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

Nome Marca Modello

Notebook IBM 390x

Desktop Acer 730

Esercitazione Basi di Dati 8Algebra Relazionale e SQL

Page 9: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.2

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

Esercitazione Basi di Dati 9Algebra Relazionale e SQL

Page 10: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.2

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM

( , , , )

Catalogo (F, P, Costo)

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

πNome (

σMarca =‘IBM’((Fornitori⋈CF=F Catalogo)

⋈P=CP(πCP,Marca(Prodotti)))C CP,Marca

Esercitazione Basi di Dati 10Algebra Relazionale e SQL

Page 11: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.2

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM

Catalogo (F, P, Costo)

è la marca di un prodotto).πNome(σMarca=‘IBM’((Fornitori⋈CF=FCatalogo)⋈P=CP(πCP,Marca(Prodotti)))

select distinct fornitori.nome

f d tti t l f it ifrom prodotti, catalogo, fornitori

where codiceProdotto = prodotto

and fornitore = codiceFornitore

and marca = 'IBM'

Esercitazione Basi di Dati 11Algebra Relazionale e SQL

Page 12: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.2

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

2.Trovare i nomi dei fornitori che distribuiscono prodotti IBM (IBM

( , , , )

Catalogo (F, P, Costo)

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

Nome

Ladroni

Risparmietti

T lTeloporto

TuttoIBM

Esercitazione Basi di Dati 12Algebra Relazionale e SQL

Page 13: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.3

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

Esercitazione Basi di Dati 13Algebra Relazionale e SQL

Page 14: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.3

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

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

( , , , )

Catalogo (F, P, Costo)

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

πP ( σF ≠ F’(Catalogo ⋈P=P’ ρX’←X(Catalogo))P ( F ≠ F ( g P=P ρX ←X( g ))

ρX’←X indica una ridenominazione in cui ciascun attributo A viene cambiato in A’

Esercitazione Basi di Dati 14Algebra Relazionale e SQL

Page 15: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.3

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

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

( , , , )

Catalogo (F, P, Costo)

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

πP ( σF ≠ F’(Catalogo ⋈P=P’ ρX’←X(Catalogo))P ( F ≠ F ( g P=P ρX ←X( g ))

select distinct c1 prodottoselect distinct c1.prodottofrom catalogo c1, catalogo c2where c1 prodotto = c2 prodottowhere c1.prodotto c2.prodottoand c1.fornitore > c2.fornitore

Esercitazione Basi di Dati 15Algebra Relazionale e SQL

Page 16: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.3

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

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

( , , , )

Catalogo (F, P, Costo)

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

CodiceProdotto

001001

002

003003

Esercitazione Basi di Dati 16Algebra Relazionale e SQL

Page 17: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.4

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

4.Trovare i codici dei fornitori che distribuiscono tutti iprodotti presenti nel catalogo.p odott p ese t e cata ogo

Esercitazione Basi di Dati 17Algebra Relazionale e SQL

Page 18: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.4

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

πF(Catalogo) -πF((πF(Catalogo)⋈ πP(Catalogo))πF((πF(Catalogo)⋈ πP(Catalogo))

– π F,P(Catalogo) ))

Esercitazione Basi di Dati 18Algebra Relazionale e SQL

Page 19: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.4

4.Trovare i codici dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.πF(Catalogo) -πF((πF(Catalogo)⋈ πP(Catalogo)) – π F,P(Catalogo) ))

create view fornituraMancanteas select c1.fornitore, c2.prodotto

from catalogo c1, catalogo c2exceptexcept

select fornitore, prodotto from catalogo

select fornitorefrom catalogo

exceptselect fornitorefrom fornituraMancante;

Esercitazione Basi di Dati 19Algebra Relazionale e SQL

Page 20: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.4

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

Fornitore

2

Esercitazione Basi di Dati 20Algebra Relazionale e SQL

Page 21: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.4

4.Trovare i codici dei fornitori che distribuiscono tutti i prodottipresenti nel catalogo.πF(Catalogo) -πF((πF(Catalogo)⋈ πP(Catalogo)) – π F,P(Catalogo) ))

select distinct fornitorefrom catalogo c1where not existswhere not exists

(select * from catalogo c2gwhere not exists (select *from catalogo c3where c2.prodotto = c3.prodottoand c1 fornitore = c3 fornitore))

Esercitazione Basi di Dati 21Algebra Relazionale e SQL

and c1.fornitore = c3.fornitore))

Page 22: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.4

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP Nome Marca Modello)Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

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

Fornitore

2

Esercitazione Basi di Dati 22Algebra Relazionale e SQL

Page 23: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.5

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

5 Trovare i nomi dei fornitori che forniscono tutti i5. Trovare i nomi dei fornitori che forniscono tutti iprodotti IBM presenti nel catalogo.

Esercitazione Basi di Dati 23Algebra Relazionale e SQL

Page 24: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.5

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

5 T i i d i f it i h f i t tti i d tti

( , , , )

Catalogo (F, P, Costo)

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

In algebra, come interrogazione 4, usando, al posto dellaa geb a, co e te oga o e , usa do, a posto de arelazione Catalogo, relazione catalogoIBM:

CatalogoIBM := πP,F(

σ ’ ’(Catalogo ⋈ C Prodotti))σMarca=’IBM’(Catalogo ⋈P=CP Prodotti))

Esercitazione Basi di Dati 24Algebra Relazionale e SQL

Page 25: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.5create view catalogoIBMas select catalogo.fornitore, catalogo.prodotto,

from catalogo c, prodotti pwhere marca =‘IBM’and p.codiceProdotto=c.prodotto;

select distinct fornitorefrom catalogoIBM c1where not exists(select * from catalogoIBM c2where not exists ( l t *(select *from catalogoIBM c3where c2.prodotto = c3.prodottoand c1 fornitore = c3 fornitore));and c1.fornitore = c3.fornitore));

Esercitazione Basi di Dati 25Algebra Relazionale e SQL

Page 26: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 1.5

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

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

FornitoreFornitore

2

13

Esercitazione Basi di Dati 26Algebra Relazionale e SQL

Page 27: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 2

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

2. Trovare i codici ed i nomi dei fornitori che vendono più prodotti ed il numero di prodotti vendono più prodotti ed il numero di prodotti venduti.

Esercitazione Basi di Dati 27Algebra Relazionale e SQL

Page 28: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 2

2. Trovare il codice ed i nomi dei fornitori che vendono più prodotti ed il numero di prodotti p p pvenduti.

select f2.codiceFornitore, f2.nome, count(*) as SommaProdotti

from fornitori f2 catalogo c2from fornitori f2, catalogo c2

where f2.codicefornitore = c2.fornitore

group by f2.codiceFornitore, f2.nomegroup by f2.codiceFornitore, f2.nome

having count(*) >= all (

select count(*)

from catalogo c

group by c.fornitore );

Esercitazione Basi di Dati 28Algebra Relazionale e SQL

Page 29: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 2

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)( , , , )

Catalogo (F, P, Costo)

2. Trovare i codici ed i nomi dei fornitori che vendono piùprodotti ed il numero di prodotti venduti.

CodiceFornitore Nome NumeroProdottiCodiceFornitore Nome NumeroProdotti

2 Risparmietti 3

Esercitazione Basi di Dati 29Algebra Relazionale e SQL

Page 30: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 3

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

3. Trovare per ogni prodotto il fornitore che lo vende a prezzo più bassoprezzo più basso.

Esercitazione Basi di Dati 30Algebra Relazionale e SQL

Page 31: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 3

3. Trovare per ogni prodotto il fornitore che lo vende a prezzo più basso.

select c.prodotto, c.fornitore, f.nomep

from ES.catalogo c, ES.fornitori f

where f.codiceFornitore = c.fornitore

and costo <= all (

select costo

from ES.catalogo c1

where c.prodotto = c1.prodotto);p p );

Esercitazione Basi di Dati 31Algebra Relazionale e SQL

Page 32: Esercitazione Algebra Relazionale ed SQLatzeni/didattica/BDN/20092010/EsercitazioneS… · Esercitazione Basi di Dati Algebra Relazionale e SQL 11. Esercizio 1.2 Fornitori (CF, Nome,

Esercizio 3

Fornitori (CF, Nome, Indirizzo, Città)

Prodotti (CP, Nome, Marca, Modello)

Catalogo (F, P, Costo)

3. Trovare per ogni prodotto il fornitore che lo vende a prezzo più bassoprezzo più basso.

Prodotto Fornitore Nome

1 2 Risparmietti

2 2 Risparmietti

3 2 Risparmietti

Esercitazione Basi di Dati 32Algebra Relazionale e SQL