Informatica Introduzione alle basi di dati Lezione 8 Scienze e tecniche psicologiche dello sviluppo...

Post on 02-May-2015

213 views 0 download

Transcript of Informatica Introduzione alle basi di dati Lezione 8 Scienze e tecniche psicologiche dello sviluppo...

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