Informatica Introduzione alle basi di dati Lezione 8 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico: 2005-2006 Esercitazione Che cos’è StudentiLavoratori? Studenti Matricola Cognome Nome 123456 Bruni Andrea 654321 Neri Dario 456123 Reale Carla Cognome Nome 321654 Bianco Giovanni 654321 Neri Dario 456123 Reale Carla Lavoratori Matricola 2 Esercitazione Che cos’è StudentiLavoratori? Studenti Matricola Cognome Nome 123456 Bruni Andrea 654321 Neri Dario 456123 Reale Carla Cognome Nome 321654 Bianco Giovanni 654321 Neri Dario 456123 Reale Carla Lavoratori Matricola 3 Esercitazione Che cos’è Studenti - Lavoratori? Studenti Matricola Cognome Nome 123456 Bruni Andrea 654321 Neri Dario 456123 Reale Carla Cognome Nome 321654 Bianco Giovanni 654321 Neri Dario 456123 Reale Carla Lavoratori Matricola 4 Esercitazione Che cos’è NumeroMatricola(Studenti)? Studenti Matricola Cognome Nome 123456 Bruni Andrea 654321 Neri Dario 456123 Reale Carla 5 Esercitazione Che cos’è Voto>25(Studenti)? Studenti Cognome Nome Età Voto Bruni Dario 21 29 Neri Dario 23 29 Reale Carla 20 22 6 Esercitazione Che cos’è Voto>25 Eta<23(Studenti)? Studenti Cognome Nome Età Voto Bruni Dario 21 29 Neri Dario 23 29 Reale Carla 20 22 7 Esercitazione Che cos’è Voto>25 Eta<23(Studenti)? Studenti Cognome Nome Età Voto Bruni Dario 21 29 Neri Dario 23 29 Reale Carla 20 22 8 Esercitazione Che cos’è Cognome,Nome(Studenti)? Studenti Cognome Nome Età Voto Bruni Dario 21 29 Neri Dario 23 29 Reale Carla 20 22 9 Esercitazione Che cos’è Nome,Voto(Studenti)? Studenti Cognome Nome Età Voto Bruni Dario 21 29 Neri Dario 23 29 Reale Carla 20 22 10 Esercitazione Che cos’è Cognome,Nome,Età,Voto(Studenti)? Studenti Cognome Nome Età Voto Bruni Dario 21 29 Neri Dario 23 29 Reale Carla 20 22 11 Esercitazione Che cos’è Studenti Esami (join naturale)? Studenti Esami Matricola Cognome Nome 123456 Bruni Dario 654321 Neri Dario 456123 Reale Carla Matricola Corso Voto 123456 Psicologia 23 123456 Informatica 29 654321 Psicologia 29 456123 Psicologia 22 12 Esercitazione Che cos’è Studenti Esami (join naturale)? Studenti Esami Matricola Cognome Nome 123456 Bruni Dario 654321 Neri Dario 456123 Reale Carla Numero Corso Voto 123456 Psicologia 23 123456 Informatica 29 654321 Psicologia 29 456123 Psicologia 22 13 Esercitazione Che cos’è Studenti Esami (join naturale)? Studenti Esami Matricola Cognome Nome 123456 Bruni Dario 654321 Neri Dario 456123 Reale Carla Matricola Corso Voto 654123 Psicologia 23 789456 Informatica 29 901234 Psicologia 29 876987 Psicologia 22 14 Esercitazione Che cos’è Studenti Lavoratori (join naturale)? Studenti Matricola Cognome Nome 123456 Bruni Andrea 654321 Neri Dario 456123 Reale Carla Cognome Nome 321654 Bianco Giovanni 654321 Neri Dario 456123 Reale Carla Lavoratori Matricola 15 Esercitazione Che cos’è Studenti LEFT Esami? Studenti Esami Matricola Cognome Nome 123456 Bruni Dario 654321 Neri Dario 456123 Reale Carla Matricola Corso Voto 987654 Psicologia 23 987654 Informatica 29 654321 Psicologia 29 456123 Psicologia 22 16 Esercitazione Che cos’è Studenti FULL Esami? Studenti Esami Matricola Cognome Nome 123456 Bruni Dario 654321 Neri Dario 456123 Reale Carla Matricola Corso Voto 987654 Psicologia 23 987654 Informatica 29 654321 Psicologia 29 456123 Psicologia 22 17 Theta-Join Serve per fare Join su relazioni senza attributi omonimi Operatore derivato: si ottiene come prodotto cartesiano seguito da selezione di tuple che verificano condizione di uguaglianza tra valori di attributi r1 F r2 = F(r1 r2) 18 Theta-Join Rel1 Rel2 Impiegato Reparto Divisione Capo Rossi Vendite Vendite Bruni Neri Produzione Produzione Mori Bianchi Produzione Acquisti Baldi Reparto=Divisione(Rel1 Rel2) Impiegato Reparto Divisione Capo Rossi Vendite Vendite Bruni Neri Produzione Produzione Mori Bianchi Produzione Produzione Mori 19 Theta-Join ed Equi-Join Theta-Join: r1 F r2 = F(r1 r2) Condizione di selezione F è formula proposizionale come descritto per operatore di selezione Se F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2: theta-join detto equi-join 20 Theta-Join ed Equi-Join Per esempio: Rel1(Impiegato,Reparto), Rel2(Divisione,Capo) Reparto=Divisione(Rel1 Rel2) Infrazioni(Codice,Data,Ag,Art,Prov,Num), Auto(Provincia,Targa,Prop,Indirizzo) Prov=Provincia Num=Targa(Infrazioni Auto) 21 Theta-Join ed Equi-Join Theta-join e equi-join più utili di join naturale Permettono di operare su relazioni senza attributi in comune Join naturale simulabile mediante ridenominazione, equi-join e proiezione 22 Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1R2 = A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2))) 23 Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1R2 = A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2))) Join naturale Equi-join 24 Theta-Join ed Equi-Join Per esempio: R1(A,B,C), R2(B,C,D) R1R2 = A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2))) Si ridenomina R2 affinchè abbia attributi diversi da quelli di R1 Equi-join tra R1 e R2 per selezionare tuple in corrispondenza Proiezione del risultato per eliminare attributi ridondanti 25 Algebra con valori nulli Come applicare espressioni di algebra relazionale in presenza di tuple con valori nulli? Per esempio: Età>30(Impiegati) Se in relazione Impiegati non si conosce età di alcune persone: tuple 104 e 219 devono essere selezionate? Matr Nome Età Stip 101 Mario Rossi 34 2.000 103 Mario Bianchi 23 1.750 104 Luigi Neri NULL 3.050 105 Nico Bini 44 210 Marco Celli NULL 3.000 1.700 26 Algebra con valori nulli Logica a 3 valori per il trattamento di valori veri, falsi, sconosciuti: V, F, U (unknown) Un predicato assume valore U quando uno dei termini del confronto ha valore nullo Tabelle di verità dei connettivi: AND, OR, NOT AND V U F OR V U F NOT V V U F V V V V V F U U U F U V U U U U F F F F F V U F F V 27 Algebra con valori nulli Poiché ragionare su valori nulli è complesso, adottiamo approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionale Definiamo due nuove condizioni atomiche di selezione: dato attributo A A IS NULL: vera su tupla t se il valore di t su A è nullo; falsa se valore specificato A IS NOT NULL: vera su t se valore di t su A specificato, falsa altrimenti 28 Algebra con valori nulli Interpretiamo le condizioni di selezione in modo restrittivo, escludendo da selezione le tuple con valore U, a meno che non sia esplicitamente incluso nella selezione 29 Algebra con valori nulli Per esempio: Età>30(Impiegati) – le tuple con Età null non vengono selezionate (su di esse la condizione Età>30 assume valore U) Età>30 Età IS NULL(Impiegati) – si includono anche le tuple con Età sconosciuta (104, 210 in relazione Impiegati) 30 5 - SQL Interrogazioni in SQL Non esiste un SQL standard (vari dialetti) Formulazione di interrogazioni (query) è parte del Data Manipulation Language, DML Anche usato nel Data Declaration Language, DDL (per esempio, per dichiarare vincoli di integrità) 32 Interrogazioni in SQL Paradigma dichiarativo: si specifica la descrizione dell’obiettivo e non il modo con cui ottenerlo A differenza dell’algebra relazionale, che è procedurale 33 Cenni sull’implementazione Interrogazione in SQL viene tradotta in linguaggio procedurale Sulla traduzione si fanno ottimizzazioni algebriche (ecco a cosa serve l’algebra…) … … e non (queste ultime dipendono dalle strutture sottostanti al DBMS in questione) 34 Sintassi Esistono, in generale, più modi per effettuare un’interrogazione: scelte basate sulla leggibilità (più che sull’efficienza…) Struttura essenziale (introdurremo le variazioni di volta in volta): select ListaAttributi (target list) from ListaTabelle (clausola “from”) [where Condizione] (clausola “where”) 35 Notazione Le parentesi angolari <,>: permettono di isolare un termine della sintassi Le parentesi quadre [,]: indicano che il termine all’interno è opzionale Può non comparire o comparire una sola volta 36 Notazione Le parentesi graffe {,}: indicano che il termine racchiuso può non comparire o essere ripetuto un numero arbitrario di volte Le barre verticali |: indicano che deve essere scelto uno tra i termini separati dalle barre 37 Significato dell’interrogazione Si considera il prodotto cartesiano fra le tabelle della clausola “from” Si selezionano quelle tuple che soddisfano la condizione della clausola “where” (opzionale) Si danno in ouput i valori di quegli attributi che sono elencati nella target list (“select”) 38 Tabella “Impiegato” Impiegato Nome Cognome Dipart Ufficio Stipendio Città Mario Rossi Amministr 10 15 Milano Carlo Bianchi Prod 20 12 Torino Giuseppe Verdi Amministr 20 13 Roma Franco Neri Distrib 16 15 Napoli Carlo Rossi Direzione 14 27 Milano Lorenzo Lanzi Direzione 7 21 Genova Paola Burroni Ammistr 75 13 Venezia Marco Franco Prod 20 14 Roma 39 Interrogazione 1 select Stipendio as Salario from Impiegato where Cognome = ‘Rossi’ Salario 15 27 40 Interrogazione 1 select Stipendio as Salario from Impiegato where Cognome = ‘Rossi’ alia s Salario 15 27 41 Interrogazione 2 select * from Impiegato where Cognome = ‘Rossi’ Nome Cognome Dipart Ufficio Stipendio Città Mario Rossi Amministr 10 15 Milan o Carlo Rossi Direzione 14 27 Milan o 42 Interrogazione 2 select * from Impiegato where Cognome = ‘Rossi’ tutti Nome Cognome Dipart Ufficio Stipendio Città Mario Rossi Amministr 10 15 Milan o Carlo Rossi Direzione 14 27 Milan o 43 Interrogazione 3 select Stipendio/12 as StipMens from Impiegato where Cognome = ‘Bianchi’ StipMens 1 44 Interrogazione 3 select Stipendio/12 as StipMens from Impiegato where Cognome = ‘Bianchi’ espressioni StipMens 1 45