Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C

Slides:



Advertisements
Presentazioni simili
Unità di apprendimento 6 Dal problema al programma.
Advertisements

I Polinomi Prof.ssa A.Comis.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 4:SQL 24/09/2002.
POTENZE
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rileaborato da M. Lenzerini - Basi di dati
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Interrogazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
La circonferenza nel piano cartesiano
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
La circonferenza nel piano cartesiano
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Unità di apprendimento 7
Interrogazione di una base di dati relazionale
Corso di Basi di Dati Il Linguaggio SQL
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL, Definizione e interrogazione di basi di dati
Interrogazioni Nidificate
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
SQL per la modifica di basi di dati
Structured Query Language
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Operatori aggregati e raggruppamenti
Quantificazione Esistenziale ed Universale
Selezione e Proiezione
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere.
Docente: Sabato Bufano
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C. Batini 7. SQL DML 7.10 Interrogazioni nidificate Semantica

Semantica delle interrogazioni nidificate Fino ad ora abbiamo visto solo informalmente cosa accade quando e’ eseguita una interrogazione nidificata, ora lo vediamo in maniera piu’ formale. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Semantica delle interrogazioni nidificate Per capire quale sia il risultato della esecuzione di una interrogazione nidificata possiamo mentalmente eseguirla: Top-down, cioe’ dalla interrogazione esterna verso l’interna Bottom-up, dalla interna verso l’esterna 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Semantica top down 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome e reddito dei padri di persone che guadagnano più di 20 mila – Semantica “top down” select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20) )  Forma non nidificata Forma nidificata Domanda 7.10.1 Prova a dire a parole il risultato delle tre Sottointerrogazioni, e poi unisci le tre frasi. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome e reddito dei padri di persone che guadagnano più di 20 mila – Semantica “top down” select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20) )  Forma non nidificata Forma nidificata Seleziona Nome e Reddito delle Persone il cui Nome e’ nell’insieme formato da … ..le Persone che sono Padri nel legame di paternita’, in cui il Nome del generico Figlio coincide con uno qualunque de……… ..i nomi delle Persone in Persone che hanno reddito > 20 Si noti che al posto di = any si sarebbe potuto usare in, come detto in precedenza 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome e reddito dei padri di persone che guadagnano più di 20– Semantica “top down” select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20) ) Seleziona Nome e Reddito delle Persone il cui Nome e’ nell’insieme formato da lle Persone che sono Padri nel legame di paternita’, in cui il Nome del generico Figlio coincide con uno qualunque dei nomi delle Persone in Persone che hanno reddito > 20, cioe’ Nome e reddito dei padri di persone che guadagnano più di 20 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Semantica top-down Esegui la interrogazione a partire dai blocchi piu’ esterni. Quando in un blocco interno si fa riferimento a variabili (cioe’ a nomi di attributi e relazioni) definite in blocchi più esterni, l’interrogazione nidificata viene valutata separatamente per ogni n-pla prodotta nella valutazione della query esterna. 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome e reddito dei padri di persone che guadagnano più di 20 milioni – Semantica “bottom up” select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20) ) Forma non nidificata Seleziona Nome delle Persone Trova Padri legati a queste persone da legame di paternita’… Trova nomi di Persone con reddito > 20 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Semantica bottom-up Esegui prima l’interrogazione interna, dando luogo ad un risultato intermedio, e poi nella esecuzione della where esterna utilizza per tutte le n-ple il risultato intermedio 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Forma nidificata e forma semplice si possono comporre Nome e reddito dei padri di persone che guadagnano più di 20 mila select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in ( select Padre from Paternita, Persone where Figlio = Nome and Reddito > 20) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Operatori aggregati e insiemistici, e nidificazione 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Massimo e nidificazione La persona (o le persone) con il reddito massimo Dobbiamo trovare ogni persona il cui reddito e’ uguale al reddito massimo, che a sua volta troviamo con una Select Domanda 7.10.3: Prova a scrivere tu la interrogazione SQL. select * from persone where reddito = (select max(reddito) from persone) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Massimo e nidificazione Domanda 7.10.4 La persona (o le persone) con reddito strettamente inferiore al reddito massimo select * from persone where reddito < (select max(reddito) from persone) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Differenza e nidificazione: Trova i nomi di impiegati che non sono anche cognomi di qualche impiegato – forma semplice Forma semplice: dobbiamo costruire l’insieme dei Nomi in modo algebrico, trovandoli prima tutti e poi togliendo quelli che hanno nome e cognome coincidente select Nome from Impiegato except select Cognome as Nome from Impiegato 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Differenza e nidificazione: Trova i nomi di impiegati che non sono anche cognomi di qualche impiegato – forma nidificata Forma nidificata: dobbiamo trovare i nomi …… Che non sono, quindi non esistono, nell’insieme costituito dai cognomi…… Uguali a tali nomi select Nome from Impiegato I where not exists (select * from Impiegato where Cognome = I.Nome) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Interrogazioni nidificate complesse 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

Interrogazioni nidificate - commenti La prima versione di SQL prevedeva solo la forma nidificata, con una sola relazione in ogni clausola FROM. Il che è insoddisfacente: la dichiaratività, cioe’ la possibilita’ di esprimere cosa la interrogazione calcoli, senza dare tutta la procedura, è limitata Pone delle limitazioni riguardo agli attributi di relazioni relative a blocchi interni Infatti  15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome e reddito dei padri di persone che guadagnano più di 20 milioni, con indicazione del reddito del figlio Ricordate che in questo caso nella forma semplice noi dobbiamo fare riferimento due volte al reddito. Infatti: select distinct P.Nome, P.Reddito, F.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Nome e reddito dei padri di persone che guadagnano più di 20 milioni, con indicazione del reddito del figlio Forma nidificata select distinct P.Nome, P.Reddito, F.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito, ???? from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20)) Una sola relazione, un solo Reddito citabile nella target list 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

L’espressione, in SQL-2, diventa select Nome.P1, Reddito.P1, Reddito.P2 from Persone P1, Persone P2 where Nome.P1 in (select Padre from Paternita where Figlio = any (select Nome from P2 where Reddito > 20)) Questo porta ad un problema simile a quello dei linguaggi programmativi, cioe’ come citare le variabili in blocchi/subroutine interne 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

L’espressione, in SQL-2, diventa select Nome.P1, Reddito.P1, Reddito.P2 from Persone P1, Persone P2 where Nome.P1 in (select Padre from Paternita where Figlio = any (select Nome from P2 where Reddito > 20)) Nel fare riferimento a relazioni definite in blocchi diversi, occorre rispettare alcune regole di visibilita’  Le vedremo nella prossima lezione 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill

adattato da Atzeni-etal., Basi di dati, McGrawHill Concetti introdotti Semantica top-down delle interrogazioni nidificate Semantica bottom-up delle interrogazioni nidificate Regole di visibilita’ (motivazioni) 15/10/2001 adattato da Atzeni-etal., Basi di dati, McGrawHill