SlideShare a Scribd company logo
1 of 37
Download to read offline
Basi di Dati
         Basi di Dati

Linguaggi di interrogazione
Basi di Dati – Dove ci troviamo?
Basi di Dati Dove ci troviamo?
                                                 A) Introduzione
                                                     1    2

     B) Prog Concettuale (ER)
     B) Prog. Concettuale (ER)                                     C) Modello Relazionale, 
                                                                    )                     ,
                                                                   Algebra relazionale, SQL

      1   2    3       4       5       6     7                 1       2     3    4    5    6     7

          D) Prog. Logica e                                    E) Tecnologia di un DBMS
          Normalizzazione

           1       2       3       4                               1   2      3    4    5     6


                                           F) Programmazione DB


                                                      1   2

2                                                                          Basi di Dati ‐ Linguaggi interrogazione
Classificazione

    A linguaggi formali
      Algebra relazionale
      Calcolo relazionale
      Programmazione logica


    Linguaggi programmativi
       g gg p g
      SQL: Structured Query Language
      QBE: Query By Example




3                                      Basi di Dati ‐ Linguaggi interrogazione
Algebra relazionale
Algebra relazionale

    Definita da Codd (1970) 

    Molto utile per imparare a formulare query

    Insieme minimo di 5 operatori che danno l'intero potere 
    espressivo del linguaggio
    espressivo del linguaggio




4                                        Basi di Dati ‐ Linguaggi interrogazione
Una visione d insieme
Una visione d'insieme


                                       selezione
                    unarie
                                       proiezione
    operazioni                         unione    
                    binarie            differenza
                                       join



5                             Basi di Dati ‐ Linguaggi interrogazione
Esempio: gestione degli esami  universitari 
Esempio: gestione degli esami universitari
studente
MATR    NOME       CITTA’        C‐DIP
123     Carlo      Bologna
                       g         Inf
415     Paola      Torino        Inf
702     Antonio    Roma          Log
esame                                  corso
MATR    COD‐
        COD‐      DATA      VOTO         COD‐
                                         COD‐    TITOLO               DOCENTE
        CORSO                            CORSO
123     1         7‐9‐04    30            1      matematica           Barozzi
123     2         8‐1‐05    28            2      informatica          Meo
702     2         7‐9‐04    20

 6                                               Basi di Dati ‐ Linguaggi interrogazione
Selezione (σ)
Selezione (σ)


                  SELECT [PredSel] TABELLA

È una tabella (priva di nome) con
  schema : 
    h
       lo stesso schema di ‘TABELLA’
     istanza :
       le tuple di ‘TABELLA’ che soddisfano il predicato di selezione 
       ‘PredSel’
       ‘P dS l’



 7                                               Basi di Dati ‐ Linguaggi interrogazione
Esempio di Selezione: 
Esempio di Selezione:
            SELECT [NOME='Paola'] STUDENTE

È una tabella (priva di nome) con
È una tabella (priva di nome) con
  schema :
       lo stesso schema di STUDENTE
       lo stesso schema di STUDENTE
     istanza :  
       le tuple di STUDENTE che soddisfano il predicato di selezione 
       le tuple di STUDENTE che soddisfano il predicato di selezione
       [NOME='Paola']

              MATR       NOME        CITTA’       C‐DIP
              415        Paola       Torino       Inf
 8                                              Basi di Dati ‐ Linguaggi interrogazione
Sintassi del PREDICATO di SELEZIONE 
Sintassi del PREDICATO di SELEZIONE
       Espressione booleana di predicati semplici
operazioni booleane :
• AND (P1 AND P2)
  AND (P1 AND P2             comparatore :
                             comparatore :
• OR (P1 OR P2)              • =, !=, <, <=, >, >=
• NOT (NOT P1)
                             termine :
predicati semplici :         • costante, attributo
• TRUE, FALSE
  TRUE, FALSE                • espressione aritmetica
                               espressione   aritmetica 
• termine    comparatore       di costanti e attributi
  termine
  t    i
9                                     Basi di Dati ‐ Linguaggi interrogazione
Esempio di selezione
Esempio di selezione
SELECT 
 [(CITTA'='Torino') OR  ((CITTA'='Roma') 
  AND NOT (C DIP log ))] STUDENTE
  AND NOT (C‐DIP='log'))] STUDENTE


     MATR    NOME       CITTA’     C‐DIP
     123     Carlo      Bologna    Inf
     415     Paola      Torino     Inf
     702     Antonio    Roma       Log


10                                       Basi di Dati ‐ Linguaggi interrogazione
Proiezione (π)
Proiezione (π)


           PROJECT [attributiProiez] TABELLA 


È una tabella (priva di nome) con
È       b ll (       d      )
   schema : 
      gli attributi ‘attributiProiez’
  istanza :  
      la restrizione delle tuple sugli attributi ‘attributiProiez’  


 11                                                Basi di Dati ‐ Linguaggi interrogazione
Esempio di Proiezione:
Esempio di Proiezione:
           PROJECT [NOME,C‐DIP] STUDENTE
È una tabella (priva di nome) con
  schema : 
  schema :
      gli attributi NOME e C‐DIP
  istanza :  
  istanza :
      la restrizione delle tuple sugli attributi NOME e C‐DIP  

                        NOME         C‐DIP
                        Carlo        Inf
                        Paola        Inf
                        Antonio      Log
 12                                             Basi di Dati ‐ Linguaggi interrogazione
Proiezione e duplicati 
Proiezione e duplicati

  Nel modello formale la proiezione elimina i duplicati

  Nel modello informale (e nei sistemi) la  eliminazione dei 
  duplicati va richiesta esplicitamente
    p                      p

Es.
Es
                                              C‐DIP
PROJECT [C‐DIP] STUDENTE
                                              Inf
                                              Log

 13                                      Basi di Dati ‐ Linguaggi interrogazione
Assegnamento (=)
Assegnamento (=)
  Serve per dare un nome al risultato di una espressione 
  algebrica

  Non fa parte delle operazioni algebriche


INFORMATICI =
SELECT  [C‐DIP= Inf ]  STUDENTI
SELECT [C DIP 'Inf'] STUDENTI


TORINESI =
SELECT  [CITTA'='Torino']  STUDENTI
 14                                     Basi di Dati ‐ Linguaggi interrogazione
Unione (U) 
Unione (U)
                TABELLA1  UNION  TABELLA2

  Si può fare se TABELLA1 e TABELLA2 sono compatibili (con 
  Si può fare se TABELLA1 e TABELLA2 sono compatibili (con
  domini ordinatamente dello stesso tipo)

È una tabella (priva di nome) con
  schema : 
  schema :
      lo schema di TABELLA1
  istanza :  
  it
      l’unione delle tuple di TABELLA1 e TABELLA2

 15                                          Basi di Dati ‐ Linguaggi interrogazione
Esempio di Unione:
Esempio di Unione:
             INFORMATICI UNION TORINESI

È una tabella (priva di nome) con
È una tabella (priva di nome) con
  schema : 
      lo schema di INFORMATICI
      lo schema di INFORMATICI
  istanza :  
      la unione delle tuple di INFORMATICI e TORINESI
      la unione delle tuple di INFORMATICI e TORINESI

           MATR      NOME        CITTA’      C‐DIP
           123       Carlo       Bologna     Inf
           415       Paola       Torino      Inf
 16                                          Basi di Dati ‐ Linguaggi interrogazione
Differenza (‐)
Differenza ( )

                 TABELLA1  MINUS  TABELLA2
  Si può fare se TABELLA1 e TABELLA2 sono compatibili
  Si ò f         TABELLA1 TABELLA2             tibili

È una tabella (priva di nome) con
È una tabella (priva di nome) con
  schema : 
      lo schema di TABELLA1
  istanza :  
      la differenza delle tuple di TABELLA1 e TABELLA2

ATTENZIONE: non e' commutativa!

 17                                               Basi di Dati ‐ Linguaggi interrogazione
Esempio di Differenza:
Esempio di Differenza:
                INFORMATICI MINUS TORINESI

È una tabella (priva di nome) con
È una tabella (priva di nome) con
  schema : 
      lo schema di INFORMATICI
      lo schema di INFORMATICI
  istanza :  
      la differenza delle tuple di INFORMATICI e TORINESI
      la differenza delle tuple di INFORMATICI e TORINESI

MATR       NOME        CITTA
                       CITTA’       C‐DIP             ATTENZIONE: 
                                                      ATTENZIONE
123        Carlo       Bologna      Inf               non e' 
                                                      commutativa !
                                                      commutativa !
 18                                           Basi di Dati ‐ Linguaggi interrogazione
Join (      )
Join ( )

           TABELLA1 JOIN [PredJoin] TABELLA2

È una tabella (priva di nome) con
   schema : 
   schema :
      la concatenazione degli schemi di TABELLA1 e TABELLA2 
  istanza: 
  istanza:
      le tuple ottenute concatenando quelle tuple di TABELLA1 e di 
      TABELLA2 che soddisfano il predicato  PredJoin
      TABELLA2 che soddisfano il predicato ‘PredJoin’



 19                                           Basi di Dati ‐ Linguaggi interrogazione
Esempio di Join
  Esempio di Join
                STUDENTE JOIN [MATR=MATR] ESAME
  È una tabella (priva di nome) con
    schema : 
    schema :
            la concatenazione degli schemi di STUDENTE e ESAME 
           istanza: 
            le tuple ottenute concatenando le tuple di STUDENTE e di ESAME che 
            soddisfano [MATR=MATR]

STUDENTE.          NOME      CITTA’    C‐DIP   ESAME.    COD‐
                                                         COD‐           DATA          VOTO
MATR                                           MATR      CORSO
123                Carlo     Bologna   Inf     123       1              7‐9‐04        30
123                Carlo     Bologna   Inf     123       2              8‐1‐05        28
702                Antonio   Roma      Log     702       2              7‐9‐04        20
      20                                                Basi di Dati ‐ Linguaggi interrogazione
Sintassi del predicato di join
Sintassi del predicato di join
  Espressione congiuntiva di predicati semplici:

                        ATTR1 comp ATTR2

  Dove
      ATTR1 appartiene a TAB1
      ATTR2 appartiene a TAB2
      comp:  , ! , <, < , >, >
      comp: =, !=, <, <=, >, >=


  Attributi omonimi sono resi non ambigui usando la notazione 
                                      g
  “puntata”
      es: ESAME.MATR, STUDENTE.MATR

 21                                         Basi di Dati ‐ Linguaggi interrogazione
Equi‐join e Join naturale
Equi join e Join naturale
 EQUI‐JOIN : 
      soli confronti di uguaglianza 
 JOIN NATURALE : 
      equi‐join di tutti gli attributi omonimi 


 Es: STUDENTE JOIN ESAME

     MATR    NOME      CITTA’      C‐DIP    COD‐
                                            COD‐          DATA          VOTO
                                            CORSO
     123     Carlo     Bologna     Inf      1             7‐9‐04        30
     123     Carlo     Bologna     Inf      2             8‐1‐05        28
     702     Antonio   Roma        Log      2             7‐9‐04        20

22                                                Basi di Dati ‐ Linguaggi interrogazione
Join naturale di tre tabelle 
      Join naturale di tre tabelle

        Es. STUDENTE JOIN ESAME JOIN CORSO

MATR        NOME    CITTA’    C‐DIP   COD‐
                                      COD‐    DATA     VOTO TITOLO DOCENTE
                                      CORSO
123         Carlo   Bologna   Inf     1       7‐9‐04 30           matem          barozzi
123         Carlo   Bologna   Inf     2       8‐1‐05 28           infor          meo
702         Antonio Roma      Log     3       7‐9‐04 20           infor          meo




       23                                            Basi di Dati ‐ Linguaggi interrogazione
Espressioni algebriche
Espressioni algebriche

 Concatenazione di più operazioni algebriche

 Esprimono interrogazioni in modo formale

 Consentono di estrarre informazioni dai dati




24                                    Basi di Dati ‐ Linguaggi interrogazione
Selezione e proiezione
Selezione e proiezione
           MATR    NOME       CITTA
                              CITTA’       C‐DIP
           123     Carlo      Bologna      Inf
           415     Paola      Torino       Inf
           702     Antonio    Roma         Log

 Quali studenti sono iscritti al diploma di informatica?

     PROJECT [NOME]                              NOME
      SELECT [C‐DIP='Inf']
      SELECT [C
      SELECT [C‐DIP= Inf ]                       Carlo
        STUDENTE                                 Paola

25                                      Basi di Dati ‐ Linguaggi interrogazione
Selezione e proiezione
Selezione e proiezione
          MATR     NOME      CITTA’       C‐DIP
          123      Carlo     Bologna      Inf
          415      Paola     Torino       Inf
          702      Antonio   Roma         Log

 Quali studenti di Logistica non sono di Milano?

PROJECT [NOME] 
                                                    NOME
 SELECT [C‐DIP='Log' AND 
 SELECT [C
 SELECT [C‐DIP= Log AND
        [C‐
           CITTA’ != 'Milano']
           CITTA’ != 'Milano']                      Antonio

           STUDENTE
26                                     Basi di Dati ‐ Linguaggi interrogazione
Esempio: gestione degli esami universitari 
Esempio: gestione degli esami universitari
studente
MATR    NOME       CITTA’        C‐DIP
123     Carlo      Bologna       Inf
415     Paola      Torino        Inf
702     Antonio    Roma          Log
esame                                  corso
MATR    COD‐
        COD‐      DATA      VOTO         COD‐
                                         COD‐    TITOLO               DOCENTE
        CORSO                            CORSO
123     1         7‐9‐04    30            1      matematica           Barozzi
123     2         8‐1‐05    28            2      informatica          Meo
702     2         7‐9‐04    20

 27                                              Basi di Dati ‐ Linguaggi interrogazione
Selezione, proiezione e join
      Selezione proiezione e join

        Quali studenti hanno preso 30 in matematica?

MATR        NOME    CITTA’    C‐DIP   COD‐
                                      COD‐    DATA     VOTO TITOLO DOCENTE
                                      CORSO
123         Carlo   Bologna   Inf     1       7‐9‐04 30           matem          barozzi
123         Carlo   Bologna   Inf     2       8‐1‐05 28           infor          meo
702         Antonio Roma      Log     3       7‐9‐04 20           infor          meo




       28                                            Basi di Dati ‐ Linguaggi interrogazione
Selezione, proiezione e join
Selezione proiezione e join

 Quali studenti hanno preso 30 in matematica?

     PROJECT [NOME] 
             [
      SELECT [VOTO=30 AND
               TITOLO='matematica']
     (STUDENTE JOIN ESAME JOIN CORSO)
     (STUDENTE JOIN ESAME JOIN CORSO)

                     NOME
                     Carlo

29                                   Basi di Dati ‐ Linguaggi interrogazione
Equivalenza di espressioni
Equivalenza di espressioni
 Quali studenti hanno preso 30 in matematica?

PROJECT [NOME] 
  SELECT [VOTO=30 AND
  SELECT [VOTO 30 AND
          TITOLO='matematica']
(STUDENTE JOIN ESAME JOIN CORSO)
(STUDENTE JOIN ESAME JOIN CORSO)

PROJECT [NOME] 
 ( STUDENTE JOIN
   (SELECT [VOTO=30] ESAME)  JOIN 
   (SELECT [TITOLO='matematica'] CORSO))

30                                   Basi di Dati ‐ Linguaggi interrogazione
Selezione, proiezione e join
Selezione proiezione e join

 Quali professori hanno esaminato Antonio?


PROJECT [DOCENTE]
 SELECT [NOME = 'Antonio']
 SELECT [NOME 'A t i ']
(STUDENTE JOIN ESAME JOIN CORSO)

                   DOCENTE
                   Meo


31                                  Basi di Dati ‐ Linguaggi interrogazione
Equivalenza di espressioni
Equivalenza di espressioni

PROJECT [DOCENTE]
PROJECT [DOCENTE]
 SELECT [NOME = 'Antonio']
(STUDENTE JOIN ESAME JOIN CORSO)
(STUDENTE JOIN ESAME JOIN CORSO)


PROJECT [DOCENTE]
 (CORSO JOIN
 ( O SO O
  (ESAME JOIN
   SELECT [NOME = 'Antonio'] STUDENTE))
   SELECT [NOME 'A      i '] STUDENTE))


32                              Basi di Dati ‐ Linguaggi interrogazione
Espressioni con unione e differenza
Espressioni con unione e differenza
 Estrarre la matricola degli studenti romani oppure degli 
 studenti che hanno sostenuto un esame il giorno 8‐1‐05
     ( PROJECT [MATR] 
     ( PROJECT [MATR]
       SELECT [CITTA'='Roma'] STUDENTE)
     UNION
     ( PROJECT [MATR] (STUDENTE JOIN
         SELECT [DATA=8‐1‐05] ESAME))
         SELECT [DATA=8
         SELECT [DATA 8‐ 05] ESAME))
     MATR                 MATR                      MATR
               UNION                                702
     702                  123
                                                    123
33                                     Basi di Dati ‐ Linguaggi interrogazione
Espressioni con unione e differenza
Espressioni con unione e differenza
Estrarre la matricola degli studenti che hanno preso  almeno 
un voto superiore a 28 e non sono mai scesi sotto il 25

            (PROJECT [MATR]    
            (PROJECT [MATR]
             SELECT [VOTO>=28] ESAME)
             MINUS
             (PROJECT [MATR] 
              SELECT [VOTO<25] ESAME)
              SELECT [VOTO<25] ESAME)
     MATR                MATR                      MATR
               MINUS
     123                 702                       123

34                                     Basi di Dati ‐ Linguaggi interrogazione
Esercizi
  Riprendere le basi di dati per la gestione del personale e 
    p                        p      g            p
  degli ordini e esprimere in forma algebrica le 
  interrogazioni:
      in quali tipi di progetti lavora Giovanni?
      chi e' il manager di Piero?
      quale impiegato e' stato assunto per primo?
      quali ordini ha emesso Paolo?
      quali prodotti sono ordinati da un cliente di Milano?
      quali prodotti hanno prezzo inferiore a 10 € e non sono 
      presenti in nessun ordine?
               ti i          di ?



 35                                           Basi di Dati ‐ Linguaggi interrogazione
Esempio : gestione personale 
Esempio : gestione personale
impiegato
MATR   NOME       DATA‐
                  DATA‐ASS   SALARIO   MATR‐
                                       MATR‐MGR
1      Piero      1‐1‐02     1500 €
                             1500 €    2
2      Giorgio    1‐1‐04     2000 €
                             2000 €    null
3      Giovanni   1‐7‐03     1000 €
                             1000 €    2 

assegnamento                    progetto
MATR   NUM‐
       NUM‐PROG      PERC        NUM‐
                                 NUM‐PROG         TITOLO          TIPO
1      3             50          3                Idea            Esprit
1      4             50          4                Wide            Esprit
2      3             100
3      4             100
 36                                        Basi di Dati ‐ Linguaggi interrogazione
Esempio : gestione ordini 
Esempio : gestione ordini
 COD‐
 COD‐CLI     INDIRIZZO    P‐IVA   cliente



                                                    ordine
                                                      di
 COD‐
 COD‐ORD     COD‐CLI
             COD‐        DATA      IMPORTO
                         DATA      IMPORTO



 COD‐ORD       COD‐PROD
 COD‐ORD       COD‐         QTA    dettaglio



 COD‐
 COD‐PROD      NOME   PREZZO           prodotto

37                                      Basi di Dati ‐ Linguaggi interrogazione

More Related Content

More from Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

More from Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

C2 Ling Interrog

  • 1. Basi di Dati Basi di Dati Linguaggi di interrogazione
  • 2. Basi di Dati – Dove ci troviamo? Basi di Dati Dove ci troviamo? A) Introduzione 1 2 B) Prog Concettuale (ER) B) Prog. Concettuale (ER) C) Modello Relazionale,  ) , Algebra relazionale, SQL 1 2 3 4 5 6 7 1 2 3 4 5 6 7 D) Prog. Logica e  E) Tecnologia di un DBMS Normalizzazione 1 2 3 4 1 2 3 4 5 6 F) Programmazione DB 1 2 2 Basi di Dati ‐ Linguaggi interrogazione
  • 3. Classificazione A linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica Linguaggi programmativi g gg p g SQL: Structured Query Language QBE: Query By Example 3 Basi di Dati ‐ Linguaggi interrogazione
  • 4. Algebra relazionale Algebra relazionale Definita da Codd (1970)  Molto utile per imparare a formulare query Insieme minimo di 5 operatori che danno l'intero potere  espressivo del linguaggio espressivo del linguaggio 4 Basi di Dati ‐ Linguaggi interrogazione
  • 5. Una visione d insieme Una visione d'insieme selezione unarie proiezione operazioni unione     binarie differenza join 5 Basi di Dati ‐ Linguaggi interrogazione
  • 6. Esempio: gestione degli esami  universitari  Esempio: gestione degli esami universitari studente MATR NOME CITTA’ C‐DIP 123 Carlo Bologna g Inf 415 Paola Torino Inf 702 Antonio Roma Log esame corso MATR COD‐ COD‐ DATA VOTO COD‐ COD‐ TITOLO DOCENTE CORSO CORSO 123 1 7‐9‐04 30 1 matematica Barozzi 123 2 8‐1‐05 28 2 informatica Meo 702 2 7‐9‐04 20 6 Basi di Dati ‐ Linguaggi interrogazione
  • 7. Selezione (σ) Selezione (σ) SELECT [PredSel] TABELLA È una tabella (priva di nome) con schema :  h lo stesso schema di ‘TABELLA’ istanza : le tuple di ‘TABELLA’ che soddisfano il predicato di selezione  ‘PredSel’ ‘P dS l’ 7 Basi di Dati ‐ Linguaggi interrogazione
  • 8. Esempio di Selezione:  Esempio di Selezione: SELECT [NOME='Paola'] STUDENTE È una tabella (priva di nome) con È una tabella (priva di nome) con schema : lo stesso schema di STUDENTE lo stesso schema di STUDENTE istanza :   le tuple di STUDENTE che soddisfano il predicato di selezione  le tuple di STUDENTE che soddisfano il predicato di selezione [NOME='Paola'] MATR NOME CITTA’ C‐DIP 415 Paola Torino Inf 8 Basi di Dati ‐ Linguaggi interrogazione
  • 9. Sintassi del PREDICATO di SELEZIONE  Sintassi del PREDICATO di SELEZIONE Espressione booleana di predicati semplici operazioni booleane : • AND (P1 AND P2) AND (P1 AND P2 comparatore : comparatore : • OR (P1 OR P2)  • =, !=, <, <=, >, >= • NOT (NOT P1) termine : predicati semplici : • costante, attributo • TRUE, FALSE TRUE, FALSE  • espressione aritmetica espressione   aritmetica  • termine    comparatore di costanti e attributi termine t i 9 Basi di Dati ‐ Linguaggi interrogazione
  • 10. Esempio di selezione Esempio di selezione SELECT  [(CITTA'='Torino') OR  ((CITTA'='Roma')  AND NOT (C DIP log ))] STUDENTE AND NOT (C‐DIP='log'))] STUDENTE MATR NOME CITTA’ C‐DIP 123 Carlo Bologna Inf 415 Paola Torino Inf 702 Antonio Roma Log 10 Basi di Dati ‐ Linguaggi interrogazione
  • 11. Proiezione (π) Proiezione (π) PROJECT [attributiProiez] TABELLA  È una tabella (priva di nome) con È b ll ( d ) schema :  gli attributi ‘attributiProiez’ istanza :   la restrizione delle tuple sugli attributi ‘attributiProiez’   11 Basi di Dati ‐ Linguaggi interrogazione
  • 12. Esempio di Proiezione: Esempio di Proiezione: PROJECT [NOME,C‐DIP] STUDENTE È una tabella (priva di nome) con schema :  schema : gli attributi NOME e C‐DIP istanza :   istanza : la restrizione delle tuple sugli attributi NOME e C‐DIP   NOME C‐DIP Carlo Inf Paola Inf Antonio Log 12 Basi di Dati ‐ Linguaggi interrogazione
  • 13. Proiezione e duplicati  Proiezione e duplicati Nel modello formale la proiezione elimina i duplicati Nel modello informale (e nei sistemi) la  eliminazione dei  duplicati va richiesta esplicitamente p p Es. Es C‐DIP PROJECT [C‐DIP] STUDENTE Inf Log 13 Basi di Dati ‐ Linguaggi interrogazione
  • 14. Assegnamento (=) Assegnamento (=) Serve per dare un nome al risultato di una espressione  algebrica Non fa parte delle operazioni algebriche INFORMATICI = SELECT  [C‐DIP= Inf ]  STUDENTI SELECT [C DIP 'Inf'] STUDENTI TORINESI = SELECT  [CITTA'='Torino']  STUDENTI 14 Basi di Dati ‐ Linguaggi interrogazione
  • 15. Unione (U)  Unione (U) TABELLA1  UNION  TABELLA2 Si può fare se TABELLA1 e TABELLA2 sono compatibili (con  Si può fare se TABELLA1 e TABELLA2 sono compatibili (con domini ordinatamente dello stesso tipo) È una tabella (priva di nome) con schema :  schema : lo schema di TABELLA1 istanza :   it l’unione delle tuple di TABELLA1 e TABELLA2 15 Basi di Dati ‐ Linguaggi interrogazione
  • 16. Esempio di Unione: Esempio di Unione: INFORMATICI UNION TORINESI È una tabella (priva di nome) con È una tabella (priva di nome) con schema :  lo schema di INFORMATICI lo schema di INFORMATICI istanza :   la unione delle tuple di INFORMATICI e TORINESI la unione delle tuple di INFORMATICI e TORINESI MATR NOME CITTA’ C‐DIP 123 Carlo Bologna Inf 415 Paola Torino Inf 16 Basi di Dati ‐ Linguaggi interrogazione
  • 17. Differenza (‐) Differenza ( ) TABELLA1  MINUS  TABELLA2 Si può fare se TABELLA1 e TABELLA2 sono compatibili Si ò f TABELLA1 TABELLA2 tibili È una tabella (priva di nome) con È una tabella (priva di nome) con schema :  lo schema di TABELLA1 istanza :   la differenza delle tuple di TABELLA1 e TABELLA2 ATTENZIONE: non e' commutativa! 17 Basi di Dati ‐ Linguaggi interrogazione
  • 18. Esempio di Differenza: Esempio di Differenza: INFORMATICI MINUS TORINESI È una tabella (priva di nome) con È una tabella (priva di nome) con schema :  lo schema di INFORMATICI lo schema di INFORMATICI istanza :   la differenza delle tuple di INFORMATICI e TORINESI la differenza delle tuple di INFORMATICI e TORINESI MATR NOME CITTA CITTA’ C‐DIP ATTENZIONE:  ATTENZIONE 123 Carlo Bologna Inf non e'  commutativa ! commutativa ! 18 Basi di Dati ‐ Linguaggi interrogazione
  • 19. Join (      ) Join ( ) TABELLA1 JOIN [PredJoin] TABELLA2 È una tabella (priva di nome) con schema :  schema : la concatenazione degli schemi di TABELLA1 e TABELLA2  istanza:  istanza: le tuple ottenute concatenando quelle tuple di TABELLA1 e di  TABELLA2 che soddisfano il predicato  PredJoin TABELLA2 che soddisfano il predicato ‘PredJoin’ 19 Basi di Dati ‐ Linguaggi interrogazione
  • 20. Esempio di Join Esempio di Join STUDENTE JOIN [MATR=MATR] ESAME È una tabella (priva di nome) con schema :  schema : la concatenazione degli schemi di STUDENTE e ESAME  istanza:  le tuple ottenute concatenando le tuple di STUDENTE e di ESAME che  soddisfano [MATR=MATR] STUDENTE. NOME CITTA’ C‐DIP ESAME. COD‐ COD‐ DATA VOTO MATR MATR CORSO 123 Carlo Bologna Inf 123 1 7‐9‐04 30 123 Carlo Bologna Inf 123 2 8‐1‐05 28 702 Antonio Roma Log 702 2 7‐9‐04 20 20 Basi di Dati ‐ Linguaggi interrogazione
  • 21. Sintassi del predicato di join Sintassi del predicato di join Espressione congiuntiva di predicati semplici: ATTR1 comp ATTR2 Dove ATTR1 appartiene a TAB1 ATTR2 appartiene a TAB2 comp:  , ! , <, < , >, > comp: =, !=, <, <=, >, >= Attributi omonimi sono resi non ambigui usando la notazione  g “puntata” es: ESAME.MATR, STUDENTE.MATR 21 Basi di Dati ‐ Linguaggi interrogazione
  • 22. Equi‐join e Join naturale Equi join e Join naturale EQUI‐JOIN :  soli confronti di uguaglianza  JOIN NATURALE :  equi‐join di tutti gli attributi omonimi  Es: STUDENTE JOIN ESAME MATR NOME CITTA’ C‐DIP COD‐ COD‐ DATA VOTO CORSO 123 Carlo Bologna Inf 1 7‐9‐04 30 123 Carlo Bologna Inf 2 8‐1‐05 28 702 Antonio Roma Log 2 7‐9‐04 20 22 Basi di Dati ‐ Linguaggi interrogazione
  • 23. Join naturale di tre tabelle  Join naturale di tre tabelle Es. STUDENTE JOIN ESAME JOIN CORSO MATR NOME CITTA’ C‐DIP COD‐ COD‐ DATA VOTO TITOLO DOCENTE CORSO 123 Carlo Bologna Inf 1 7‐9‐04 30 matem barozzi 123 Carlo Bologna Inf 2 8‐1‐05 28 infor meo 702 Antonio Roma Log 3 7‐9‐04 20 infor meo 23 Basi di Dati ‐ Linguaggi interrogazione
  • 24. Espressioni algebriche Espressioni algebriche Concatenazione di più operazioni algebriche Esprimono interrogazioni in modo formale Consentono di estrarre informazioni dai dati 24 Basi di Dati ‐ Linguaggi interrogazione
  • 25. Selezione e proiezione Selezione e proiezione MATR NOME CITTA CITTA’ C‐DIP 123 Carlo Bologna Inf 415 Paola Torino Inf 702 Antonio Roma Log Quali studenti sono iscritti al diploma di informatica? PROJECT [NOME]  NOME SELECT [C‐DIP='Inf'] SELECT [C SELECT [C‐DIP= Inf ]     Carlo STUDENTE Paola 25 Basi di Dati ‐ Linguaggi interrogazione
  • 26. Selezione e proiezione Selezione e proiezione MATR NOME CITTA’ C‐DIP 123 Carlo Bologna Inf 415 Paola Torino Inf 702 Antonio Roma Log Quali studenti di Logistica non sono di Milano? PROJECT [NOME]  NOME SELECT [C‐DIP='Log' AND  SELECT [C SELECT [C‐DIP= Log AND [C‐ CITTA’ != 'Milano'] CITTA’ != 'Milano'] Antonio STUDENTE 26 Basi di Dati ‐ Linguaggi interrogazione
  • 27. Esempio: gestione degli esami universitari  Esempio: gestione degli esami universitari studente MATR NOME CITTA’ C‐DIP 123 Carlo Bologna Inf 415 Paola Torino Inf 702 Antonio Roma Log esame corso MATR COD‐ COD‐ DATA VOTO COD‐ COD‐ TITOLO DOCENTE CORSO CORSO 123 1 7‐9‐04 30 1 matematica Barozzi 123 2 8‐1‐05 28 2 informatica Meo 702 2 7‐9‐04 20 27 Basi di Dati ‐ Linguaggi interrogazione
  • 28. Selezione, proiezione e join Selezione proiezione e join Quali studenti hanno preso 30 in matematica? MATR NOME CITTA’ C‐DIP COD‐ COD‐ DATA VOTO TITOLO DOCENTE CORSO 123 Carlo Bologna Inf 1 7‐9‐04 30 matem barozzi 123 Carlo Bologna Inf 2 8‐1‐05 28 infor meo 702 Antonio Roma Log 3 7‐9‐04 20 infor meo 28 Basi di Dati ‐ Linguaggi interrogazione
  • 29. Selezione, proiezione e join Selezione proiezione e join Quali studenti hanno preso 30 in matematica? PROJECT [NOME]  [ SELECT [VOTO=30 AND TITOLO='matematica'] (STUDENTE JOIN ESAME JOIN CORSO) (STUDENTE JOIN ESAME JOIN CORSO) NOME Carlo 29 Basi di Dati ‐ Linguaggi interrogazione
  • 30. Equivalenza di espressioni Equivalenza di espressioni Quali studenti hanno preso 30 in matematica? PROJECT [NOME]  SELECT [VOTO=30 AND SELECT [VOTO 30 AND TITOLO='matematica'] (STUDENTE JOIN ESAME JOIN CORSO) (STUDENTE JOIN ESAME JOIN CORSO) PROJECT [NOME]  ( STUDENTE JOIN (SELECT [VOTO=30] ESAME)  JOIN  (SELECT [TITOLO='matematica'] CORSO)) 30 Basi di Dati ‐ Linguaggi interrogazione
  • 31. Selezione, proiezione e join Selezione proiezione e join Quali professori hanno esaminato Antonio? PROJECT [DOCENTE] SELECT [NOME = 'Antonio'] SELECT [NOME 'A t i '] (STUDENTE JOIN ESAME JOIN CORSO) DOCENTE Meo 31 Basi di Dati ‐ Linguaggi interrogazione
  • 32. Equivalenza di espressioni Equivalenza di espressioni PROJECT [DOCENTE] PROJECT [DOCENTE] SELECT [NOME = 'Antonio'] (STUDENTE JOIN ESAME JOIN CORSO) (STUDENTE JOIN ESAME JOIN CORSO) PROJECT [DOCENTE] (CORSO JOIN ( O SO O (ESAME JOIN SELECT [NOME = 'Antonio'] STUDENTE)) SELECT [NOME 'A i '] STUDENTE)) 32 Basi di Dati ‐ Linguaggi interrogazione
  • 33. Espressioni con unione e differenza Espressioni con unione e differenza Estrarre la matricola degli studenti romani oppure degli  studenti che hanno sostenuto un esame il giorno 8‐1‐05 ( PROJECT [MATR]  ( PROJECT [MATR] SELECT [CITTA'='Roma'] STUDENTE) UNION ( PROJECT [MATR] (STUDENTE JOIN SELECT [DATA=8‐1‐05] ESAME)) SELECT [DATA=8 SELECT [DATA 8‐ 05] ESAME)) MATR MATR MATR UNION 702 702 123 123 33 Basi di Dati ‐ Linguaggi interrogazione
  • 34. Espressioni con unione e differenza Espressioni con unione e differenza Estrarre la matricola degli studenti che hanno preso  almeno  un voto superiore a 28 e non sono mai scesi sotto il 25 (PROJECT [MATR]     (PROJECT [MATR] SELECT [VOTO>=28] ESAME) MINUS (PROJECT [MATR]  SELECT [VOTO<25] ESAME) SELECT [VOTO<25] ESAME) MATR MATR MATR MINUS 123 702 123 34 Basi di Dati ‐ Linguaggi interrogazione
  • 35. Esercizi Riprendere le basi di dati per la gestione del personale e  p p g p degli ordini e esprimere in forma algebrica le  interrogazioni: in quali tipi di progetti lavora Giovanni? chi e' il manager di Piero? quale impiegato e' stato assunto per primo? quali ordini ha emesso Paolo? quali prodotti sono ordinati da un cliente di Milano? quali prodotti hanno prezzo inferiore a 10 € e non sono  presenti in nessun ordine? ti i di ? 35 Basi di Dati ‐ Linguaggi interrogazione
  • 36. Esempio : gestione personale  Esempio : gestione personale impiegato MATR NOME DATA‐ DATA‐ASS SALARIO MATR‐ MATR‐MGR 1 Piero 1‐1‐02 1500 € 1500 € 2 2 Giorgio 1‐1‐04 2000 € 2000 € null 3 Giovanni 1‐7‐03 1000 € 1000 € 2  assegnamento progetto MATR NUM‐ NUM‐PROG PERC NUM‐ NUM‐PROG TITOLO TIPO 1 3 50 3 Idea Esprit 1 4 50 4 Wide Esprit 2 3 100 3 4 100 36 Basi di Dati ‐ Linguaggi interrogazione
  • 37. Esempio : gestione ordini  Esempio : gestione ordini COD‐ COD‐CLI     INDIRIZZO P‐IVA cliente ordine di COD‐ COD‐ORD COD‐CLI COD‐ DATA      IMPORTO DATA      IMPORTO COD‐ORD       COD‐PROD COD‐ORD COD‐ QTA dettaglio COD‐ COD‐PROD NOME   PREZZO prodotto 37 Basi di Dati ‐ Linguaggi interrogazione