Basi di Dati
         Basi di Dati

Linguaggi di interrogazione
Basi di Dati – Dove ci troviamo?
Basi di Dati Dove ci troviamo?
                                                 A) Introd...
Classificazione

    A linguaggi formali
      Algebra relazionale
      Calcolo relazionale
      Programmazione logica

...
Algebra relazionale
Algebra relazionale

    Definita da Codd (1970) 

    Molto utile per imparare a formulare query

   ...
Una visione d insieme
Una visione d'insieme


                                       selezione
                    unarie
...
Esempio: gestione degli esami  universitari 
Esempio: gestione degli esami universitari
studente
MATR    NOME       CITTA’...
Selezione (σ)
Selezione (σ)


                  SELECT [PredSel] TABELLA

È una tabella (priva di nome) con
  schema : 
  ...
Esempio di Selezione: 
Esempio di Selezione:
            SELECT [NOME='Paola'] STUDENTE

È una tabella (priva di nome) con...
Sintassi del PREDICATO di SELEZIONE 
Sintassi del PREDICATO di SELEZIONE
       Espressione booleana di predicati semplici...
Esempio di selezione
Esempio di selezione
SELECT 
 [(CITTA'='Torino') OR  ((CITTA'='Roma') 
  AND NOT (C DIP log ))] STUDE...
Proiezione (π)
Proiezione (π)


           PROJECT [attributiProiez] TABELLA 


È una tabella (priva di nome) con
È       ...
Esempio di Proiezione:
Esempio di Proiezione:
           PROJECT [NOME,C‐DIP] STUDENTE
È una tabella (priva di nome) con
 ...
Proiezione e duplicati 
Proiezione e duplicati

  Nel modello formale la proiezione elimina i duplicati

  Nel modello inf...
Assegnamento (=)
Assegnamento (=)
  Serve per dare un nome al risultato di una espressione 
  algebrica

  Non fa parte de...
Unione (U) 
Unione (U)
                TABELLA1  UNION  TABELLA2

  Si può fare se TABELLA1 e TABELLA2 sono compatibili (c...
Esempio di Unione:
Esempio di Unione:
             INFORMATICI UNION TORINESI

È una tabella (priva di nome) con
È una tab...
Differenza (‐)
Differenza ( )

                 TABELLA1  MINUS  TABELLA2
  Si può fare se TABELLA1 e TABELLA2 sono compat...
Esempio di Differenza:
Esempio di Differenza:
                INFORMATICI MINUS TORINESI

È una tabella (priva di nome) co...
Join (      )
Join ( )

           TABELLA1 JOIN [PredJoin] TABELLA2

È una tabella (priva di nome) con
   schema : 
   sc...
Esempio di Join
  Esempio di Join
                STUDENTE JOIN [MATR=MATR] ESAME
  È una tabella (priva di nome) con
    ...
Sintassi del predicato di join
Sintassi del predicato di join
  Espressione congiuntiva di predicati semplici:

          ...
Equi‐join e Join naturale
Equi join e Join naturale
 EQUI‐JOIN : 
      soli confronti di uguaglianza 
 JOIN NATURALE : 
 ...
Join naturale di tre tabelle 
      Join naturale di tre tabelle

        Es. STUDENTE JOIN ESAME JOIN CORSO

MATR        ...
Espressioni algebriche
Espressioni algebriche

 Concatenazione di più operazioni algebriche

 Esprimono interrogazioni in ...
Selezione e proiezione
Selezione e proiezione
           MATR    NOME       CITTA
                              CITTA’    ...
Selezione e proiezione
Selezione e proiezione
          MATR     NOME      CITTA’       C‐DIP
          123      Carlo    ...
Esempio: gestione degli esami universitari 
Esempio: gestione degli esami universitari
studente
MATR    NOME       CITTA’ ...
Selezione, proiezione e join
      Selezione proiezione e join

        Quali studenti hanno preso 30 in matematica?

MATR...
Selezione, proiezione e join
Selezione proiezione e join

 Quali studenti hanno preso 30 in matematica?

     PROJECT [NOM...
Equivalenza di espressioni
Equivalenza di espressioni
 Quali studenti hanno preso 30 in matematica?

PROJECT [NOME] 
  SEL...
Selezione, proiezione e join
Selezione proiezione e join

 Quali professori hanno esaminato Antonio?


PROJECT [DOCENTE]
 ...
Equivalenza di espressioni
Equivalenza di espressioni

PROJECT [DOCENTE]
PROJECT [DOCENTE]
 SELECT [NOME = 'Antonio']
(STU...
Espressioni con unione e differenza
Espressioni con unione e differenza
 Estrarre la matricola degli studenti romani oppur...
Espressioni con unione e differenza
Espressioni con unione e differenza
Estrarre la matricola degli studenti che hanno pre...
Esercizi
  Riprendere le basi di dati per la gestione del personale e 
    p                        p      g            p
...
Esempio : gestione personale 
Esempio : gestione personale
impiegato
MATR   NOME       DATA‐
                  DATA‐ASS   ...
Esempio : gestione ordini 
Esempio : gestione ordini
 COD‐
 COD‐CLI     INDIRIZZO    P‐IVA   cliente



                  ...
Upcoming SlideShare
Loading in …5
×

C2 Ling Interrog

555 views
508 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
555
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

C2 Ling Interrog

  1. 1. Basi di Dati Basi di Dati Linguaggi di interrogazione
  2. 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. 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. 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. 5. Una visione d insieme Una visione d'insieme selezione unarie proiezione operazioni unione     binarie differenza join 5 Basi di Dati ‐ Linguaggi interrogazione
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×