Informatica
Introduzione alle basi di datiLezione 8Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistraleAnno accademico: 2005-2006
2
Esercitazione
Che cos’è StudentiLavoratori?
Matricola Cognome
Nome
123456 Bruni Andrea
654321 Neri Dario
456123 Reale Carla
Matricola Cognome
Nome
321654 Bianco Giovanni
654321 Neri Dario
456123 Reale Carla
Studenti
Lavoratori
3
Esercitazione
Che cos’è StudentiLavoratori?
Matricola Cognome
Nome
123456 Bruni Andrea
654321 Neri Dario
456123 Reale Carla
Matricola Cognome
Nome
321654 Bianco Giovanni
654321 Neri Dario
456123 Reale Carla
Studenti
Lavoratori
4
Esercitazione
Che cos’è Studenti - Lavoratori?
Matricola Cognome
Nome
123456 Bruni Andrea
654321 Neri Dario
456123 Reale Carla
Matricola Cognome
Nome
321654 Bianco Giovanni
654321 Neri Dario
456123 Reale Carla
Studenti
Lavoratori
5
Esercitazione
Che cos’è NumeroMatricola(Studenti)?
Matricola Cognome
Nome
123456 Bruni Andrea
654321 Neri Dario
456123 Reale Carla
Studenti
6
Esercitazione
Che cos’è Voto>25(Studenti)?
Cognome
Nome Età
Voto
Bruni Dario 21 29
Neri Dario 23 29
Reale Carla 20 22
Studenti
7
Esercitazione
Che cos’è Voto>25 Eta<23(Studenti)?
Cognome
Nome Età
Voto
Bruni Dario 21 29
Neri Dario 23 29
Reale Carla 20 22
Studenti
8
Esercitazione
Che cos’è Voto>25 Eta<23(Studenti)?
Cognome
Nome Età
Voto
Bruni Dario 21 29
Neri Dario 23 29
Reale Carla 20 22
Studenti
9
Esercitazione
Che cos’è Cognome,Nome(Studenti)?
Cognome
Nome Età
Voto
Bruni Dario 21 29
Neri Dario 23 29
Reale Carla 20 22
Studenti
10
Esercitazione
Che cos’è Nome,Voto(Studenti)?
Cognome
Nome Età
Voto
Bruni Dario 21 29
Neri Dario 23 29
Reale Carla 20 22
Studenti
11
Esercitazione
Che cos’è Cognome,Nome,Età,Voto(Studenti)?
Cognome
Nome Età
Voto
Bruni Dario 21 29
Neri Dario 23 29
Reale Carla 20 22
Studenti
12
Esercitazione
Che cos’è Studenti Esami (join naturale)?
Matricola
Cognome
Nome
123456 Bruni Dario
654321 Neri Dario
456123 Reale Carla
Studenti
Matricola
Corso Voto
123456 Psicologia 23
123456 Informatica
29
654321 Psicologia 29
456123 Psicologia 22
Esami
13
Esercitazione
Che cos’è Studenti Esami (join naturale)?
Matricola
Cognome
Nome
123456 Bruni Dario
654321 Neri Dario
456123 Reale Carla
Studenti
Numero Corso Voto
123456 Psicologia 23
123456 Informatica
29
654321 Psicologia 29
456123 Psicologia 22
Esami
14
Esercitazione
Che cos’è Studenti Esami (join naturale)?
Matricola
Cognome
Nome
123456 Bruni Dario
654321 Neri Dario
456123 Reale Carla
Studenti
Matricola
Corso Voto
654123 Psicologia 23
789456 Informatica
29
901234 Psicologia 29
876987 Psicologia 22
Esami
15
Esercitazione
Che cos’è Studenti Lavoratori (join naturale)?
Matricola Cognome
Nome
123456 Bruni Andrea
654321 Neri Dario
456123 Reale Carla
Matricola Cognome
Nome
321654 Bianco Giovanni
654321 Neri Dario
456123 Reale Carla
Studenti
Lavoratori
16
Esercitazione
Che cos’è Studenti LEFT Esami?
Matricola
Cognome
Nome
123456 Bruni Dario
654321 Neri Dario
456123 Reale Carla
Studenti
Matricola
Corso Voto
987654 Psicologia 23
987654 Informatica
29
654321 Psicologia 29
456123 Psicologia 22
Esami
17
Esercitazione
Che cos’è Studenti FULL Esami?
Matricola
Cognome
Nome
123456 Bruni Dario
654321 Neri Dario
456123 Reale Carla
Studenti
Matricola
Corso Voto
987654 Psicologia 23
987654 Informatica
29
654321 Psicologia 29
456123 Psicologia 22
Esami
18
Theta-Join
Serve per fare Join su relazioni senza attributi omonimiOperatore 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)
19
Theta-Join
Impiegato
Reparto
Rossi Vendite
Neri Produzione
Bianchi Produzione
Divisione
Capo
Vendite Bruni
Produzione
Mori
Acquisti Baldi
Rel1 Rel2
Impiegato
Reparto Divisione Capo
Rossi Vendite Vendite Bruni
Neri Produzione
Produzione
Mori
Bianchi Produzione
Produzione
Mori
Reparto=Divisione(Rel1 Rel2)
20
Theta-Join ed Equi-Join
Theta-Join: r1 F r2 = F(r1 r2)Condizione di selezione F è formula proposizionale come descritto per operatore di selezioneSe F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2: theta-join detto equi-join
21
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)
22
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
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)))
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)))
Join naturale Equi-join
25
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 R1Equi-join tra R1 e R2 per selezionare tuple in corrispondenzaProiezione del risultato per eliminare attributi ridondanti
26
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 1.700
210 Marco Celli NULL
3.000
27
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 nulloTabelle di verità dei connettivi: AND, OR, NOT
AND
V U F
V V U F
U U U F
F F F F
OR
V U F
V V V V
U V U U
F V U F
NOT
V F
U U
F V
28
Algebra con valori nulli
Poiché ragionare su valori nulli è complesso, adottiamo approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionaleDefiniamo 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
29
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
30
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)
5 - SQL
32
Interrogazioni in SQL
Non esiste un SQL standard (vari dialetti)Formulazione di interrogazioni (query) è parte del Data Manipulation Language, DMLAnche usato nel Data Declaration Language, DDL (per esempio, per dichiarare vincoli di integrità)
33
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
34
Cenni sull’implementazione
Interrogazione in SQL viene tradotta in linguaggio proceduraleSulla traduzione si fanno ottimizzazioni algebriche (ecco a cosa serve l’algebra…) …… e non (queste ultime dipendono dalle strutture sottostanti al DBMS in questione)
35
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”)
36
Notazione
Le parentesi angolari <,>: permettono di isolare un termine della sintassiLe parentesi quadre [,]: indicano che il termine all’interno è opzionale Può non comparire o comparire una
sola volta
37
Notazione
Le parentesi graffe {,}: indicano che il termine racchiuso può non comparire o essere ripetuto un numero arbitrario di volteLe barre verticali |: indicano che deve essere scelto uno tra i termini separati dalle barre
38
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”)
39
Tabella “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
Impiegato
40
Interrogazione 1
select Stipendio as Salario
from Impiegato
where Cognome = ‘Rossi’
Salario
15
27
41
Interrogazione 1
select Stipendio as Salario
from Impiegato
where Cognome = ‘Rossi’
Salario
15
27
alias
42
Interrogazione 2
select *
from Impiegato
where Cognome = ‘Rossi’
Nome
Cognome
Dipart Ufficio
Stipendio
Città
Mario Rossi Amministr
10 15 Milano
Carlo Rossi Direzione
14 27 Milano
43
Interrogazione 2
select *
from Impiegato
where Cognome = ‘Rossi’
tutti
Nome
Cognome
Dipart Ufficio
Stipendio
Città
Mario Rossi Amministr
10 15 Milano
Carlo Rossi Direzione
14 27 Milano
44
Interrogazione 3
select Stipendio/12 as StipMens
from Impiegato
where Cognome = ‘Bianchi’
StipMens
1
45
Interrogazione 3
select Stipendio/12 as StipMens
from Impiegato
where Cognome = ‘Bianchi’
espressioni
StipMens
1