Esercitazioni 01  Algebra Relazionale
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,467
On Slideshare
2,466
From Embeds
1
Number of Embeds
1

Actions

Shares
Downloads
58
Comments
0
Likes
0

Embeds 1

http://www.slideshare.net 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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 1 Simbologia SELEZIONE σ< condizione >(R) PROIEZIONE Π< attributi >(R) THETA JOIN R1 < condizione >R2 EQUIJOIN R1 < condizione ‘=‘ >R2 JOIN NATURALE R1 * R2 A.A. 2005/2006 Basi di Dati e Laboratorio 2 Simbologia UNIONE R1 ∪ R2 INTERSEZIONE R1 ∩ R2 DIFFERENZA R1 – R2 PRODOTTO R1 × R2 CARTESIANO R1(Z) ÷ R2(Y) DIVISIONE con Z = X ∪ Y A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  • 2. 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 4 Schema relazionale CODICE NOME INDIRIZZO SCONTO K1 Rossi Roma no CLIENTE K2 Bianchi Milano yes K3 Verdi Palermo yes K4 Neri Cagliari no CODICE CODNEGOZIO NOMEP DATA LUOGO K1 N1 H-Match 22/10/2002 Pavia ACQUISTO K3 N7 GMS 03/04/2001 Torino K2 N6 GMS 05/04/2003 Milano K2 N4 OpenOffice 28/04/2004 Milano NOMEP TIPO PRODUTTORE COSTO H-Match SW ISLab 6000 PRODOTTO GMS Gestionale baLSI 2500 Oracle DBMS Oracle 1020 OpenOffice OA OO.org 0 A.A. 2005/2006 Basi di Dati e Laboratorio 5 Interrogazione 1 –CLIENTE (codice, nome, indirizzo, sconto) –ACQUISTO (codice, codnegozio, nomep, data, luogo) –PRODOTTO (nomep, tipo, produttore, costo) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Determinare codice e nome dei clienti che hanno acquistato prodotti gestionali in Milano A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  • 3. Soluzione 1 –CLIENTE (codice, nome, indirizzo, sconto) –ACQUISTO (codice, codnegozio, nomep, data, luogo) –PRODOTTO (nomep, tipo, produttore, costo) Determinare codice e nome dei clienti che hanno acquistato prodotti gestionali in Milano (Πcodice,nome(CLIENTE)) * (Πcodice((Πcodice,nomep(σluogo=‘Milano’(ACQUISTO))) * (Πnomep(σtipo=‘gestionale’(PRODOTTO))))) A.A. 2005/2006 Basi di Dati e Laboratorio 7 Soluzione 1 CODICE NOME INDIRIZZO SCONTO K1 Rossi Roma no K2 Bianchi Milano yes K3 Verdi Palermo yes K4 Neri Cagliari no CODICE CODNEGOZIO NOMEP DATA LUOGO K1 N1 H-Match 22/10/2002 Pavia K3 N7 GMS 03/04/2001 Torino K2 N6 GMS 05/04/2003 Milano K2 N4 OpenOffice 28/04/2004 Milano NOMEP TIPO PRODUTTORE COSTO H-Match SW ISLab 6000 GMS Gestionale baLSI 2500 Oracle DBMS Oracle 1020 OpenOffice OA OO.org 0 A.A. 2005/2006 Basi di Dati e Laboratorio 8 Interrogazione 2 –CLIENTE (codice, nome, indirizzo, sconto) –ACQUISTO (codice, codnegozio, nomep, data, luogo) –PRODOTTO (nomep, tipo, produttore, costo) – 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 A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  • 4. Soluzione 2 –CLIENTE (codice, nome, indirizzo, sconto) –ACQUISTO (codice, codnegozio, nomep, data, luogo) –PRODOTTO (nomep, tipo, produttore, costo) Determinare i codici dei clienti con sconto che hanno acquistato prodotti gestionali e prodotti di office automation (Π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 10 Soluzione 2 CODICE NOME INDIRIZZO SCONTO K1 Rossi Roma no K2 Bianchi Milano yes K3 Verdi Palermo yes K4 Neri Cagliari no CODICE CODNEGOZIO NOMEP DATA LUOGO K1 N1 H-Match 22/10/2002 Pavia K3 N7 GMS 03/04/2001 Torino K2 N6 GMS 05/04/2003 Milano K2 N4 OpenOffice 28/04/2004 Milano NOMEP TIPO PRODUTTORE COSTO H-Match SW ISLab 6000 GMS Gestionale baLSI 2500 Oracle DBMS Oracle 1020 OpenOffice OA OO.org 0 A.A. 2005/2006 Basi di Dati e Laboratorio 11 Interrogazione 3 –CLIENTE (codice, nome, indirizzo, sconto) –ACQUISTO (codice, codnegozio, nomep, data, luogo) –PRODOTTO (nomep, tipo, produttore, costo) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Determinare il nome dei prodotti acquistati da tutti i clienti con sconto A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  • 5. Soluzione 3 –CLIENTE (codice, nome, indirizzo, sconto) –ACQUISTO (codice, codnegozio, nomep, data, luogo) –PRODOTTO (nomep, tipo, produttore, costo) Determinare il nome dei prodotti acquistati da tutti i clienti con sconto ((Πcodice,nomep(ACQUISTO)) ÷ (Πcodice(σsconto=‘yes’ (CLIENTE)))) A.A. 2005/2006 Basi di Dati e Laboratorio 13 Soluzione 3 CODICE NOME INDIRIZZO SCONTO K1 Rossi Roma no K2 Bianchi Milano yes K3 Verdi Palermo yes K4 Neri Cagliari no CODICE CODNEGOZIO NOMEP DATA LUOGO K1 N1 H-Match 22/10/2002 Pavia K3 N7 GMS 03/04/2001 Torino K2 N6 GMS 05/04/2003 Milano K2 N4 OpenOffice 28/04/2004 Milano NOMEP TIPO PRODUTTORE COSTO H-Match SW ISLab 6000 GMS Gestionale baLSI 2500 Oracle DBMS Oracle 1020 OpenOffice OA OO.org 0 A.A. 2005/2006 Basi di Dati e Laboratorio 14 Schema relazionale • Schema relazionale – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  • 6. Schema relazionale PIVA NOMINATIVO CITTAF EMAIL 128943 Montanelli Bergamo mon@is.lab FORNITORE 878737 Ferrara Milano af@is.lab 564725 Flint London fl@is.lab 432561 Neri Milano NULL MATRICOLA NOME CITTAC C1 Rossi Milano CLIENTE C2 Neri Roma C3 Bianchi Taranto C4 Verdi Ginevra FORNITURA FORNITORE CLIENTE CODPRODOTTO DATA QUANTITA 128943 C3 P1 22/04/2004 6780 564725 C4 P1 28/04/2004 2500 878737 C1 P5 11/09/2001 1000 564725 C1 P6 12/08/1999 40 A.A. 2005/2006 Basi di Dati e Laboratorio 16 Ridenominazione • Operatore che cambia il nome degli attributi (contenuto delle relazioni inalterato) ρNuovoNome ← Nome (R) Paternità Maternità PADRE FIGLIO MADRE FIGLIO Adamo Caino Eva Caino Adamo Abele Eva Abele Abramo Isacco Sara Isacco Abramo Israele Agar Israele ρGenitore ← Padre (Paternità) ∪ ρGenitore ← Madre (Maternità) A.A. 2005/2006 Basi di Dati e Laboratorio 17 Interrogazione 1 – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare matricola e nome dei clienti che hanno ricevuto forniture da fornitori milanesi A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  • 7. Soluzione 1 – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) Trovare matricola e nome dei clienti che hanno ricevuto forniture da fornitori milanesi Π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 19 Soluzione 1 PIVA NOMINATIVO CITTAF EMAIL 128943 Montanelli Bergamo mon@is.lab 878737 Ferrara Milano af@is.lab 564725 Flint London fl@is.lab 432561 Neri Milano NULL MATRICOLA NOME CITTAC C1 Rossi Milano C2 Neri Roma C3 Bianchi Taranto C4 Verdi Ginevra FORNITORE CLIENTE CODPRODOTTO DATA QUANTITA 128943 C3 P1 22/04/2004 6780 564725 C4 P1 28/04/2004 2500 878737 C1 P5 11/09/2001 1000 564725 C1 P6 12/08/1999 40 A.A. 2005/2006 Basi di Dati e Laboratorio 20 Interrogazione 2 – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare le città in cui risiedono sia clienti che fornitori A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  • 8. Soluzione 2 – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) Trovare le città in cui risiedono sia clienti che fornitori ((ρCitta←CittaC(ΠCittaC (CLIENTE))) ∩ (ρCitta←CittaF (ΠCittaF (FORNITORE)))) A.A. 2005/2006 Basi di Dati e Laboratorio 22 Soluzione 2 PIVA NOMINATIVO CITTAF EMAIL 128943 Montanelli Bergamo mon@is.lab 878737 Ferrara Milano af@is.lab 564725 Flint London fl@is.lab 432561 Neri Milano NULL MATRICOLA NOME CITTAC C1 Rossi Milano C2 Neri Roma C3 Bianchi Taranto C4 Verdi Ginevra FORNITORE CLIENTE CODPRODOTTO DATA QUANTITA 128943 C3 P1 22/04/2004 6780 564725 C4 P1 28/04/2004 2500 878737 C1 P5 11/09/2001 1000 564725 C1 P6 12/08/1999 40 A.A. 2005/2006 Basi di Dati e Laboratorio 23 Interrogazione 3 – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare il nome del fornitore che ha effettuato forniture a tutti i clienti A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  • 9. Soluzione 3 – FORNITORE(PIVA, Nominativo, CittaF, Email) – CLIENTE(Matricola, Nome, CittaC) – FORNITURA(Fornitore, Cliente, CodProdotto, Data, Quantita) Trovare il nome del fornitore che ha effettuato forniture a tutti i clienti ΠNominativo((ΠPIVA,Nominativo(FORNITORE)) PIVA=Fornitore ((ΠCliente,Fornitore(FORNITURA)) ÷ (ρCliente←Matricola(ΠMatricola(CLIENTE))))) A.A. 2005/2006 Basi di Dati e Laboratorio 25 Soluzione 3 PIVA NOMINATIVO CITTAF EMAIL 128943 Montanelli Bergamo mon@is.lab 878737 Ferrara Milano af@is.lab 564725 Flint London fl@is.lab 432561 Neri Milano NULL MATRICOLA NOME CITTAC C1 Rossi Milano C2 Neri Roma C3 Bianchi Taranto C4 Verdi Ginevra FORNITORE CLIENTE CODPRODOTTO DATA QUANTITA 128943 C3 P1 22/04/2004 6780 564725 C4 P1 28/04/2004 2500 878737 C1 P5 11/09/2001 1000 564725 C1 P6 12/08/1999 40 A.A. 2005/2006 Basi di Dati e Laboratorio 26 9