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’è 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
2
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
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’è NumeroMatricola(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)
R1R2 =
A,B,C,D(R1B=B’C=C’(B’,C’B,C(R2)))
23
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
R1R2 =
A,B,C,D(R1B=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)
R1R2 =
A,B,C,D(R1B=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
Scarica

Basi di Dati e Laboratorio 02/03