SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
Corso di Basi di Dati e Laboratorio




    Esercitazione di algebra
       relazionale e SQL
              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
Schema relazionale

• Schema relazionale

   – CENTRO(NomeC, Regione, Area(N/C/S),
     Abitanti)
   – FIUME(NomeF, Lunghezza)
   – ATTRAVERSAMENTI(NomeC, Fiume)




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




Schema relazionale
CENTRO               NOMEC                REGIONE              AREA     ABITANTI
                     Mantova              Lombardia              N       120.000
                        Torino             Piemonte              N       900.000
                        Napoli            Campania               S       1.000.000
                        Pavia             Lombardia              N        90.000
                         Pisa              Toscana               C       110.000
                      Firenze              Toscana               C       500.000


ATTRAVERSAMENTI                                              FIUME
   NOMEC          FIUME                                        NOMEF    LUNGHEZZA
    Torino         Po                                           Po       1.000.000
   Mantova         Po                                          Ticino     100.000
     Pavia        Ticino                                       Tevere     70.000
     Pisa         Arno                                          Arno      55.000
    Firenze       Arno


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




Domanda 1
  – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
  – FIUME(NomeF, Lunghezza)
  – ATTRAVERSAMENTI( NomeC, Fiume)


   – Formulare in algebra relazionale ottimizzata
     la seguente interrogazione:
   – Trovare nome e lunghezza dei fiumi che
     attraversano centri del nord con più di
     100000 abitanti




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




                                                                                     2
Soluzione 1
  – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
  – FIUME(NomeF, Lunghezza)
  – ATTRAVERSAMENTI( NomeC, Fiume)

Trovare nome e lunghezza dei fiumi che attraversano
centri del nord con più di 100000 abitanti


  ΠNomeF,Lunghezza ((FIUME)                          NomeF=Fiume

  (ΠFiume ((ATTRAVERSAMENTI) *
  (ΠNomeC (σAbitanti>100000 (σArea=‘N’ (CENTRO)))))))


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




Soluzione 1
                     NOMEC                REGIONE            AREA     ABITANTI
                     Mantova              Lombardia            N        90.000
                        Torino             Piemonte            N       900.000
                        Napoli            Campania             S       1.000.000
                        Pavia             Lombardia            N       110.000
                         Pisa              Toscana             C       110.000
                      Firenze              Toscana             C       500.000




   NOMEC          FIUME                                      NOMEF    LUNGHEZZA
    Torino         Po                                         Po       1.000.000
   Mantova         Po                                        Ticino     100.000
     Pavia        Ticino                                     Tevere     70.000
     Pisa         Arno                                        Arno      55.000
    Firenze       Arno


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




Domanda 2
  – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
  – FIUME(NomeF, Lunghezza)
  – ATTRAVERSAMENTI( NomeC, Fiume)


  – Formulare in algebra relazionale ottimizzata
    la seguente interrogazione:
  – Trovare nome e lunghezza dei fiumi che
    attraversano sia centri del Piemonte che
    della Lombardia




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




                                                                                   3
Soluzione 2
Trovare nome e lunghezza dei fiumi che attraversano sia
centri del Piemonte che della Lombardia

ΠNomeF,Lunghezza ((FIUME)                             NomeF=Fiume

((ΠFiume ((ATTRAVERSAMENTI) *
(ΠNomeC (σRegione=‘Piemonte’ (CENTRO)))))
                  ∩
(ΠFiume ((ATTRAVERSAMENTI) *
(ΠNomeC (σRegione=‘Lombardia’ (CENTRO)))))))

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




Soluzione 2
                        NOMEC                 REGIONE            AREA     ABITANTI
                        Mantova               Lombardia            N       120.000
                           Torino              Piemonte            N       900.000
                           Napoli             Campania             S       1.000.000
                           Pavia              Lombardia            N        90.000
                             Pisa              Toscana             C       110.000
                         Firenze               Toscana             C       500.000




   NOMEC          FIUME                                          NOMEF    LUNGHEZZA
    Torino            Po                                          Po       1.000.000
   Mantova            Po                                         Ticino     100.000
     Pavia        Ticino                                         Tevere     70.000
     Pisa             Arno                                        Arno      55.000
    Firenze           Arno


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




Domanda 3
  – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
  – FIUME(NomeF, Lunghezza)
  – ATTRAVERSAMENTI( NomeC, Fiume)


  – Formulare in algebra relazionale ottimizzata
    la seguente interrogazione:
  – Trovare il nome dei fiumi che non
    attraversano centri del sud




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




                                                                                       4
Soluzione 3
  – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
  – FIUME(NomeF, Lunghezza)
  – ATTRAVERSAMENTI( NomeC, Fiume)

Trovare il nome fiumi che non attraversano centri del
sud

((ΠNomeF (FIUME))
                  -
(ΠFiume((ΠNomeC(σArea=‘S’ (CENTRO))) *
(ATTRAVERSAMENTI))))

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




Soluzione 3
                         NOMEC                REGIONE            AREA     ABITANTI
                         Mantova              Lombardia            N       120.000
                            Torino             Piemonte            N       900.000
                            Napoli            Campania             S       1.000.000
                            Pavia             Lombardia            N        90.000
                             Pisa              Toscana             C       110.000
                          Firenze              Toscana             C       500.000




   NOMEC              FIUME                                      NOMEF    LUNGHEZZA
    Torino             Po                                         Po       1.000.000
   Mantova             Po                                        Ticino     100.000
     Pavia            Ticino                                     Tevere     70.000
     Pisa             Arno                                        Arno      55.000
    Firenze           Arno


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




Domanda 4
  – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
  – FIUME(NomeF, Lunghezza)
  – ATTRAVERSAMENTI( NomeC, Fiume)


  – Formulare in algebra relazionale ottimizzata
    la seguente interrogazione:
  – Trovare il nome dei fiumi che attraversano
    tutte le città del centro




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




                                                                                       5
Soluzione 4
    – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti)
    – FIUME(NomeF, Lunghezza)
    – ATTRAVERSAMENTI( NomeC, Fiume)

Trovare il nome dei fiumi che attraversano tutte le città
del centro

    (ATTRAVERSAMENTI) ÷
    (ΠNomeC(σArea=‘C’ (CENTRO)))




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




Soluzione 4
                      NOMEC                 REGIONE            AREA     ABITANTI
                      Mantova               Lombardia            N       120.000
                         Torino              Piemonte            N       900.000
                         Napoli             Campania             S       1.000.000
                         Pavia              Lombardia            N        90.000
                           Pisa              Toscana             C       110.000
                       Firenze               Toscana             C       500.000




     NOMEC         FIUME                                       NOMEF    LUNGHEZZA
      Torino        Po                                          Po       1.000.000
     Mantova        Po                                         Ticino     100.000
      Pavia        Ticino                                      Tevere     70.000
      Pisa          Arno                                        Arno      55.000
     Firenze        Arno


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




Schema Relazionale




–    RUOLO(id, nome, descrizione)
–    GRUPPO(id, nome, finanziamento)
–    PERSONA(id, nome, cognome, ruolo)
–    APPARTENENZA(id_persona, id_gruppo)




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




                                                                                     6
Query 1
–    RUOLO(id, nome, descrizione)
–    GRUPPO(id, nome, finanziamento)
–    PERSONA(id, nome, cognome, ruolo)
–    APPARTENENZA(id_persona, id_gruppo)



     Formulare in SQL la seguente interrogazione:

     Determinare nome, cognome delle persone
     che appartengono solo al gruppo “laboratorio”
     oppure solo al gruppo “progetto H”



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




Soluzione query 1
Estrazione delle persone appartenenti solo al
gruppo laboratorio (preparatoria alla query):

SELECT persona.id, persona.nome, persona.cognome,
   gruppo.nome AS gruppo
FROM persona, appartenenza, gruppo
WHERE ((persona.id=appartenenza.id_persona) AND
  (appartenenza.id_gruppo=gruppo.id) AND
  (gruppo.nome='laboratorio') AND NOT EXISTS
   (SELECT * FROM persona alias, appartenenza, gruppo
    WHERE ((persona.id=appartenenza.id_persona) AND
     (appartenenza.id_gruppo=gruppo.id) AND
     (gruppo.nome<>'laboratorio') AND
     (persona.id=alias.id))))
    A.A. 2005/2006          Basi di Dati e Laboratorio           20




Soluzione query 1
SELECT persona.id, persona.nome, persona.cognome,
  gruppo.nome AS gruppo
FROM persona, appartenenza, gruppo
WHERE ((persona.id=appartenenza.id_persona) AND
 (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome='laboratorio') AND
 NOT EXISTS (SELECT * FROM persona alias, appartenenza, gruppo
    WHERE ((persona.id=appartenenza.id_persona) AND
     (appartenenza.id_gruppo=gruppo.id) AND
     (gruppo.nome<>'laboratorio') AND (persona.id=alias.id))))
UNION
SELECT persona.id, persona.nome, persona.cognome,
  gruppo.nome AS gruppo
FROM persona, appartenenza, gruppo
WHERE ((persona.id=appartenenza.id_persona) AND
 (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome=‘progetto H') AND
 NOT EXISTS (SELECT * FROM persona alias, appartenenza, gruppo
    WHERE ((persona.id=appartenenza.id_persona) AND
     (appartenenza.id_gruppo=gruppo.id) AND
     (gruppo.nome<>' progetto H') AND (persona.id=alias.id))))
    A.A. 2005/2006          Basi di Dati e Laboratorio           21




                                                                          7
Query 2
–    RUOLO(id, nome, descrizione)
–    GRUPPO(id, nome, finanziamento)
–    PERSONA(id, nome, cognome, ruolo)
–    APPARTENENZA(id_persona, id_gruppo)



     Formulare in SQL la seguente interrogazione:

     Determinare ordinandoli alfabeticamente
     identificatore, nome, cognome delle persone
     che appartengono ad almeno due gruppi



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




Soluzione query 2
–    RUOLO(id, nome, descrizione)
–    GRUPPO(id, nome, finanziamento)
–    PERSONA(id, nome, cognome, ruolo)
–    APPARTENENZA(id_persona, id_gruppo)

Determinare, ordinandoli alfabeticamente, identificatore,
nome, cognome delle persone che appartengono ad almeno
due gruppi

SELECT persona.id, persona.nome,
  persona.cognome, COUNT(*) AS Numerogruppi
FROM persona, appartenenza
WHERE persona.id = appartenenza.id_persona
GROUP BY persona.id, persona.nome, persona.cognome
HAVING COUNT(*) > 1
ORDER BY persona.cognome, persona.nome
    A.A. 2005/2006         Basi di Dati e Laboratorio   23




Query 3
–    RUOLO(id, nome, descrizione)
–    GRUPPO(id, nome, finanziamento)
–    PERSONA(id, nome, cognome, ruolo)
–    APPARTENENZA(id_persona, id_gruppo)



     Formulare in SQL la seguente interrogazione:

     Determinare identificatore, nome, cognome
     della persona che appartiene al maggior
     numero di gruppi



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




                                                             8
Soluzione query 3
–    RUOLO(id, nome, descrizione)
–    GRUPPO(id, nome, finanziamento)
–    PERSONA(id, nome, cognome, ruolo)
–    APPARTENENZA(id_persona, id_gruppo)

Determinare identificatore, nome, cognome della persona
che appartiene al maggior numero di gruppi
SELECT DISTINCT persona.id, persona.nome,
  persona.cognome, COUNT(*) AS Numerogruppi
FROM persona, appartenenza
WHERE persona.id = appartenenza.id_persona
GROUP BY persona.id, persona.nome, persona.cognome
HAVING (COUNT(*) >= ALL (SELECT COUNT(*)
  FROM persona, appartenenza
  WHERE persona.id = appartenenza.id_persona
  GROUP BY persona.id))
    A.A. 2005/2006         Basi di Dati e Laboratorio   25




                                                             9

Mais conteúdo relacionado

Destaque

F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para ComerF Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comerkolelmelilla
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazioneguestbe916c
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Serverguestbe916c
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Clientguestbe916c
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Datiguestbe916c
 
09 Esercizi Generali
09  Esercizi Generali09  Esercizi Generali
09 Esercizi Generaliguestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioniguestbe916c
 
08 Introduzione All Architettura Di Un D B M S
08  Introduzione All Architettura Di Un  D B M S08  Introduzione All Architettura Di Un  D B M S
08 Introduzione All Architettura Di Un D B M Sguestbe916c
 
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H Pguestbe916c
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M Lguestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Queryguestbe916c
 
Fotos de mis compañeros
Fotos de mis compañerosFotos de mis compañeros
Fotos de mis compañerosCristian Villa
 
Consellos TIC
Consellos TICConsellos TIC
Consellos TICMaría L
 
Trabajo de reingeñeria en los procesos de negocios
Trabajo de reingeñeria en los procesos de negociosTrabajo de reingeñeria en los procesos de negocios
Trabajo de reingeñeria en los procesos de negociosRoberto Viteri L
 

Destaque (20)

F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para ComerF Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
F Rutas, Verificacion Y Limpieza Para Ser Aptas Como Casher Para Comer
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
PEREK SHIRA
PEREK SHIRAPEREK SHIRA
PEREK SHIRA
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Dati
 
09 Esercizi Generali
09  Esercizi Generali09  Esercizi Generali
09 Esercizi Generali
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
08 Introduzione All Architettura Di Un D B M S
08  Introduzione All Architettura Di Un  D B M S08  Introduzione All Architettura Di Un  D B M S
08 Introduzione All Architettura Di Un D B M S
 
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 
Fotos de mis compañeros
Fotos de mis compañerosFotos de mis compañeros
Fotos de mis compañeros
 
Consellos TIC
Consellos TICConsellos TIC
Consellos TIC
 
Elizabeth arquitectura
Elizabeth arquitecturaElizabeth arquitectura
Elizabeth arquitectura
 
Presentacion Final Estadisticas D&M
Presentacion Final Estadisticas D&MPresentacion Final Estadisticas D&M
Presentacion Final Estadisticas D&M
 
Trabajo de reingeñeria en los procesos de negocios
Trabajo de reingeñeria en los procesos de negociosTrabajo de reingeñeria en los procesos de negocios
Trabajo de reingeñeria en los procesos de negocios
 
Sabato trabajo vanina
Sabato trabajo vaninaSabato trabajo vanina
Sabato trabajo vanina
 
Las plantas
Las  plantasLas  plantas
Las plantas
 
Arquivo 10686
Arquivo 10686Arquivo 10686
Arquivo 10686
 

Mais de guestbe916c

Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apacheguestbe916c
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioniguestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q Lguestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionaleguestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q Lguestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioniguestbe916c
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logicaguestbe916c
 
Laboratorio Di Basi Di Dati 05 Architettura Del Web
Laboratorio Di  Basi Di  Dati 05  Architettura Del  WebLaboratorio Di  Basi Di  Dati 05  Architettura Del  Web
Laboratorio Di Basi Di Dati 05 Architettura Del Webguestbe916c
 
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
Laboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q LLaboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q L
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q Lguestbe916c
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logicaguestbe916c
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazioneguestbe916c
 

Mais de guestbe916c (16)

Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Algebra
AlgebraAlgebra
Algebra
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logica
 
Laboratorio Di Basi Di Dati 05 Architettura Del Web
Laboratorio Di  Basi Di  Dati 05  Architettura Del  WebLaboratorio Di  Basi Di  Dati 05  Architettura Del  Web
Laboratorio Di Basi Di Dati 05 Architettura Del Web
 
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
Laboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q LLaboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q L
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazione
 

Esercitazioni 03 Algebra + S Q L

  • 1. Corso di Basi di Dati e Laboratorio Esercitazione di algebra relazionale e SQL 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 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI(NomeC, Fiume) A.A. 2005/2006 Basi di Dati e Laboratorio 4 Schema relazionale CENTRO NOMEC REGIONE AREA ABITANTI Mantova Lombardia N 120.000 Torino Piemonte N 900.000 Napoli Campania S 1.000.000 Pavia Lombardia N 90.000 Pisa Toscana C 110.000 Firenze Toscana C 500.000 ATTRAVERSAMENTI FIUME NOMEC FIUME NOMEF LUNGHEZZA Torino Po Po 1.000.000 Mantova Po Ticino 100.000 Pavia Ticino Tevere 70.000 Pisa Arno Arno 55.000 Firenze Arno A.A. 2005/2006 Basi di Dati e Laboratorio 5 Domanda 1 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare nome e lunghezza dei fiumi che attraversano centri del nord con più di 100000 abitanti A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  • 3. Soluzione 1 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) Trovare nome e lunghezza dei fiumi che attraversano centri del nord con più di 100000 abitanti ΠNomeF,Lunghezza ((FIUME) NomeF=Fiume (ΠFiume ((ATTRAVERSAMENTI) * (ΠNomeC (σAbitanti>100000 (σArea=‘N’ (CENTRO))))))) A.A. 2005/2006 Basi di Dati e Laboratorio 7 Soluzione 1 NOMEC REGIONE AREA ABITANTI Mantova Lombardia N 90.000 Torino Piemonte N 900.000 Napoli Campania S 1.000.000 Pavia Lombardia N 110.000 Pisa Toscana C 110.000 Firenze Toscana C 500.000 NOMEC FIUME NOMEF LUNGHEZZA Torino Po Po 1.000.000 Mantova Po Ticino 100.000 Pavia Ticino Tevere 70.000 Pisa Arno Arno 55.000 Firenze Arno A.A. 2005/2006 Basi di Dati e Laboratorio 8 Domanda 2 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare nome e lunghezza dei fiumi che attraversano sia centri del Piemonte che della Lombardia A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  • 4. Soluzione 2 Trovare nome e lunghezza dei fiumi che attraversano sia centri del Piemonte che della Lombardia ΠNomeF,Lunghezza ((FIUME) NomeF=Fiume ((ΠFiume ((ATTRAVERSAMENTI) * (ΠNomeC (σRegione=‘Piemonte’ (CENTRO))))) ∩ (ΠFiume ((ATTRAVERSAMENTI) * (ΠNomeC (σRegione=‘Lombardia’ (CENTRO))))))) A.A. 2005/2006 Basi di Dati e Laboratorio 10 Soluzione 2 NOMEC REGIONE AREA ABITANTI Mantova Lombardia N 120.000 Torino Piemonte N 900.000 Napoli Campania S 1.000.000 Pavia Lombardia N 90.000 Pisa Toscana C 110.000 Firenze Toscana C 500.000 NOMEC FIUME NOMEF LUNGHEZZA Torino Po Po 1.000.000 Mantova Po Ticino 100.000 Pavia Ticino Tevere 70.000 Pisa Arno Arno 55.000 Firenze Arno A.A. 2005/2006 Basi di Dati e Laboratorio 11 Domanda 3 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare il nome dei fiumi che non attraversano centri del sud A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  • 5. Soluzione 3 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) Trovare il nome fiumi che non attraversano centri del sud ((ΠNomeF (FIUME)) - (ΠFiume((ΠNomeC(σArea=‘S’ (CENTRO))) * (ATTRAVERSAMENTI)))) A.A. 2005/2006 Basi di Dati e Laboratorio 13 Soluzione 3 NOMEC REGIONE AREA ABITANTI Mantova Lombardia N 120.000 Torino Piemonte N 900.000 Napoli Campania S 1.000.000 Pavia Lombardia N 90.000 Pisa Toscana C 110.000 Firenze Toscana C 500.000 NOMEC FIUME NOMEF LUNGHEZZA Torino Po Po 1.000.000 Mantova Po Ticino 100.000 Pavia Ticino Tevere 70.000 Pisa Arno Arno 55.000 Firenze Arno A.A. 2005/2006 Basi di Dati e Laboratorio 14 Domanda 4 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) – Formulare in algebra relazionale ottimizzata la seguente interrogazione: – Trovare il nome dei fiumi che attraversano tutte le città del centro A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  • 6. Soluzione 4 – CENTRO(NomeC, Regione, Area(N/C/S), Abitanti) – FIUME(NomeF, Lunghezza) – ATTRAVERSAMENTI( NomeC, Fiume) Trovare il nome dei fiumi che attraversano tutte le città del centro (ATTRAVERSAMENTI) ÷ (ΠNomeC(σArea=‘C’ (CENTRO))) A.A. 2005/2006 Basi di Dati e Laboratorio 16 Soluzione 4 NOMEC REGIONE AREA ABITANTI Mantova Lombardia N 120.000 Torino Piemonte N 900.000 Napoli Campania S 1.000.000 Pavia Lombardia N 90.000 Pisa Toscana C 110.000 Firenze Toscana C 500.000 NOMEC FIUME NOMEF LUNGHEZZA Torino Po Po 1.000.000 Mantova Po Ticino 100.000 Pavia Ticino Tevere 70.000 Pisa Arno Arno 55.000 Firenze Arno A.A. 2005/2006 Basi di Dati e Laboratorio 17 Schema Relazionale – RUOLO(id, nome, descrizione) – GRUPPO(id, nome, finanziamento) – PERSONA(id, nome, cognome, ruolo) – APPARTENENZA(id_persona, id_gruppo) A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  • 7. Query 1 – RUOLO(id, nome, descrizione) – GRUPPO(id, nome, finanziamento) – PERSONA(id, nome, cognome, ruolo) – APPARTENENZA(id_persona, id_gruppo) Formulare in SQL la seguente interrogazione: Determinare nome, cognome delle persone che appartengono solo al gruppo “laboratorio” oppure solo al gruppo “progetto H” A.A. 2005/2006 Basi di Dati e Laboratorio 19 Soluzione query 1 Estrazione delle persone appartenenti solo al gruppo laboratorio (preparatoria alla query): SELECT persona.id, persona.nome, persona.cognome, gruppo.nome AS gruppo FROM persona, appartenenza, gruppo WHERE ((persona.id=appartenenza.id_persona) AND (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome='laboratorio') AND NOT EXISTS (SELECT * FROM persona alias, appartenenza, gruppo WHERE ((persona.id=appartenenza.id_persona) AND (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome<>'laboratorio') AND (persona.id=alias.id)))) A.A. 2005/2006 Basi di Dati e Laboratorio 20 Soluzione query 1 SELECT persona.id, persona.nome, persona.cognome, gruppo.nome AS gruppo FROM persona, appartenenza, gruppo WHERE ((persona.id=appartenenza.id_persona) AND (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome='laboratorio') AND NOT EXISTS (SELECT * FROM persona alias, appartenenza, gruppo WHERE ((persona.id=appartenenza.id_persona) AND (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome<>'laboratorio') AND (persona.id=alias.id)))) UNION SELECT persona.id, persona.nome, persona.cognome, gruppo.nome AS gruppo FROM persona, appartenenza, gruppo WHERE ((persona.id=appartenenza.id_persona) AND (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome=‘progetto H') AND NOT EXISTS (SELECT * FROM persona alias, appartenenza, gruppo WHERE ((persona.id=appartenenza.id_persona) AND (appartenenza.id_gruppo=gruppo.id) AND (gruppo.nome<>' progetto H') AND (persona.id=alias.id)))) A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  • 8. Query 2 – RUOLO(id, nome, descrizione) – GRUPPO(id, nome, finanziamento) – PERSONA(id, nome, cognome, ruolo) – APPARTENENZA(id_persona, id_gruppo) Formulare in SQL la seguente interrogazione: Determinare ordinandoli alfabeticamente identificatore, nome, cognome delle persone che appartengono ad almeno due gruppi A.A. 2005/2006 Basi di Dati e Laboratorio 22 Soluzione query 2 – RUOLO(id, nome, descrizione) – GRUPPO(id, nome, finanziamento) – PERSONA(id, nome, cognome, ruolo) – APPARTENENZA(id_persona, id_gruppo) Determinare, ordinandoli alfabeticamente, identificatore, nome, cognome delle persone che appartengono ad almeno due gruppi SELECT persona.id, persona.nome, persona.cognome, COUNT(*) AS Numerogruppi FROM persona, appartenenza WHERE persona.id = appartenenza.id_persona GROUP BY persona.id, persona.nome, persona.cognome HAVING COUNT(*) > 1 ORDER BY persona.cognome, persona.nome A.A. 2005/2006 Basi di Dati e Laboratorio 23 Query 3 – RUOLO(id, nome, descrizione) – GRUPPO(id, nome, finanziamento) – PERSONA(id, nome, cognome, ruolo) – APPARTENENZA(id_persona, id_gruppo) Formulare in SQL la seguente interrogazione: Determinare identificatore, nome, cognome della persona che appartiene al maggior numero di gruppi A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  • 9. Soluzione query 3 – RUOLO(id, nome, descrizione) – GRUPPO(id, nome, finanziamento) – PERSONA(id, nome, cognome, ruolo) – APPARTENENZA(id_persona, id_gruppo) Determinare identificatore, nome, cognome della persona che appartiene al maggior numero di gruppi SELECT DISTINCT persona.id, persona.nome, persona.cognome, COUNT(*) AS Numerogruppi FROM persona, appartenenza WHERE persona.id = appartenenza.id_persona GROUP BY persona.id, persona.nome, persona.cognome HAVING (COUNT(*) >= ALL (SELECT COUNT(*) FROM persona, appartenenza WHERE persona.id = appartenenza.id_persona GROUP BY persona.id)) A.A. 2005/2006 Basi di Dati e Laboratorio 25 9