Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli...

26
1 1 Basi di dati – Paolo Zirilli [email protected] Capitolo 3: ALGEBRA RELAZIONALE 2 Basi di dati – Paolo Zirilli [email protected] Linguaggi per basi di dati • operazioni sullo schema • DDL: data definition language • operazioni sui dati • DML: data manipulation language • interrogazione ("query") • aggiornamento 3 Basi di dati – Paolo Zirilli [email protected] Linguaggi di interrogazione per basi di dati relazionali Dichiarativi • specificano le proprietà del risultato ("che cosa") Procedurali • specificano le modalità di generazione del risultato ("come") 4 Basi di dati – Paolo Zirilli [email protected] Linguaggi di interrogazione Algebra relazionale: procedurale Calcolo relazionale: dichiarativo (teorico) SQL (Structured Query Language): parzialmente dichiarativo (reale) QBE (Query by Example): dichiarativo (reale)

Transcript of Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli...

Page 1: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

1

1

Basi di dati – Paolo Zirilli [email protected]

Capitolo 3:

ALGEBRA RELAZIONALE

2

Basi di dati – Paolo Zirilli [email protected]

Linguaggi per basi di dati

• operazioni sullo schema

• DDL: data definition language

• operazioni sui dati

• DML: data manipulation language

• interrogazione ("query")

• aggiornamento

3

Basi di dati – Paolo Zirilli [email protected]

Linguaggi di interrogazioneper basi di dati relazionali

• Dichiarativi

• specificano le proprietà del risultato

("che cosa")

• Procedurali

• specificano le modalità di generazione

del risultato ("come")

4

Basi di dati – Paolo Zirilli [email protected]

Linguaggi di interrogazione

• Algebra relazionale: procedurale

• Calcolo relazionale:

dichiarativo (teorico)

SQL (Structured Query Language):

parzialmente dichiarativo (reale)

• QBE (Query by Example):

dichiarativo (reale)

Page 2: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

2

5

Basi di dati – Paolo Zirilli [email protected]

Algebra relazionale

• Insieme di operatori con 3 caratteristiche:

• definito su relazioni

• producono relazioni

• possono essere composti

l”algebra è chiusa

6

Basi di dati – Paolo Zirilli [email protected]

• Operazioni di base

• Selezione (σ) Seleziona un sottoinsieme di righe della relazione

• Proiezione (π) Cancella righe non desiderate dalla relazione• Prodotto cartesiano (×) Consente di combinare due relazioni

• Differenza insiemistica (−) Tuple presenti nella relazione 1, ma non nella relazione 2

• Unione (∪) Tuple presenti nella relazione 1 e nella relazione 2

• Altre operazioni:

• intersezione, join, divisione, ridenominazione: non essenziali ma (molto!) utili

• Poiché ogni operazione restituisce una relazione, le operazioni possono essere composte (l’algebra è “chiusa”)

Algebra relazionale: linguaggio procedurale costituito da un insieme

di operatori definiti su relazioni

7

Basi di dati – Paolo Zirilli [email protected]

Operatori dell'algebra relazionale

• unione, intersezione, differenza

• ridenominazione

• selezione

• proiezione

• join (join naturale, prodotto cartesiano,

theta-join)

monadici

8

Basi di dati – Paolo Zirilli [email protected]

Operatori insiemistici

• le relazioni sono insiemi

• i risultati debbono essere relazioni

• è possibile applicare unione, intersezione,

differenza solo a relazioni definite sugli

stessi attributi

Page 3: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

3

9

Basi di dati – Paolo Zirilli [email protected]

Laureati

Matricola

7432

9824

Età

54

45

Nome

Neri

Verdi

7274 42Rossi

Quadri

Matricola

7432

9824

9297

Età

54

45

33

Nome

Neri

Verdi

Neri

Laureati ∪ Quadri

Matricola EtàNome

7432 54Neri

9824 45Verdi

9297 33Neri

7274 42Rossi

7432 54Neri

9824 45Verdi

7274 42Rossi

7432 54Neri

9824 45Verdi

9297 33Neri

7432 54Neri

9824 45Verdi

9297 33Neri

7274 42Rossi

Unione

10

Basi di dati – Paolo Zirilli [email protected]

Laureati

Matricola

7432

9824

Età

54

45

Nome

Neri

Verdi

7274 42Rossi

Quadri

Matricola

7432

9824

9297

Età

54

45

33

Nome

Neri

Verdi

Neri

Laureati ∩ Quadri

Matricola EtàNome

7432 54Neri

9824 45Verdi

7432 54Neri

9824 45Verdi

7432 54Neri

9824 45Verdi

7432 54Neri

9824 45Verdi

Intersezione

11

Basi di dati – Paolo Zirilli [email protected]

Laureati

Matricola EtàNome

7432 54Neri

9824 45Verdi

7274 42Rossi

Quadri

Matricola

7432

9824

9297

Età

54

45

33

Nome

Neri

Verdi

Neri

Laureati – Quadri

Matricola EtàNome

7432 54Neri

9824 45Verdi

7274 42Rossi

7432 54Neri

9824 45Verdi

7274 42Rossi

Differenza

12

Basi di dati – Paolo Zirilli [email protected]

Paternità

Padre Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Maternità

Madre Figlio

Eva Set

Sara Isacco

Eva Abele

Paternità ∪ Maternità

??

Un’unione sensata ma impossibile

Page 4: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

4

13

Basi di dati – Paolo Zirilli [email protected]

Ridenominazione

• operatore monadico (con un argomento)

• "modifica lo schema" lasciando inalterata

l'istanza dell'operando

14

Basi di dati – Paolo Zirilli [email protected]

Operatore di Ridenominazione (ρ REN)

Sia r una relazione definita sull’insieme di attributi X e sia Y un (altro) insieme di attributi con la stessa cardinalità. Siano A1 A2... Ak ed B1 B2... Bk rispettivamente un ordinamento per gli attributi in X ed Y allora la RIDENOMINAZIONE

ρB1B2..Bk -> A1A2..Ak

(r)

Contiene una tupla t’ per ciascuna tupla t in r tale che t’[Bi]=t[Ai] i=1,...,n

15

Basi di dati – Paolo Zirilli [email protected]

Operatore di Ridenominazione2 (ρ REN)

La RIDENOMINAZIONE modifica solamente il nome degli

attributi agendo sullo schema della relazione e lasciando inalterata la sua istanza

ρ (R(F),E) R=nome nuovo, E relazione F lista di ridenominazione :

posizione nuovonome

nuovonome vecchionome

16

Basi di dati – Paolo Zirilli [email protected]

Paternità

Padre Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

RENGenitore ← Padre (Paternità)

Padre Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Genitore

Page 5: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

5

17

Basi di dati – Paolo Zirilli [email protected]

Paternità

Padre Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Maternità

Madre Figlio

Eva Set

Sara Isacco

Eva Abele

RENGenitore ← Padre (Paternità)

Genitore Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

RENGenitore ← Madre (Maternità)

Genitore Figlio

Eva Set

Sara Isacco

Eva Abele

18

Basi di dati – Paolo Zirilli [email protected]

RENGenitore ← Padre (Paternità)

RENGenitore ← Madre (Maternità)

Genitore Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Genitore Figlio

Eva Set

Sara Isacco

Eva Abele

Genitore Figlio

Adamo Caino

Abramo Isacco

Adamo Abele

Eva Set

Sara Isacco

Eva Abele

RENGenitore ← Padre (Paternità)

RENGenitore ← Madre (Maternità) ∪

19

Basi di dati – Paolo Zirilli [email protected]

REN Sede, Retribuzione ← Ufficio, Stipendio (Impiegati)

REN Sede, Retribuzione ← Fabbrica, Salario (Operai) ∪

Impiegati Cognome

Neri

Rossi

Ufficio

Milano

Roma

Stipendio

64

55

Operai Cognome

Verdi

Bruni

Fabbrica

Latina

Monza

Salario

55

45

Cognome RetribuzioneSede

Neri

Rossi

64

55

Milano

Roma

Verdi

Bruni

Latina

Monza

55

45

20

Basi di dati – Paolo Zirilli [email protected]

Selezione

• operatore monadico

• produce un risultato che

• ha lo stesso schema dell'operando

• contiene un sottoinsieme delle ennuple

dell'operando,

• quelle che soddisfano una condizione

Page 6: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

6

21

Basi di dati – Paolo Zirilli [email protected]

Impiegati

Cognome Filiale StipendioMatricola

Neri Milano 645998

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553

• impiegati che

• guadagnano più di 50

• guadagnano più di 50 e lavorano a Milano

• hanno lo stesso nome della filiale presso cui lavorano

22

Basi di dati – Paolo Zirilli [email protected]

Selezione, sintassi e semantica

• sintassi

SEL Condizione (Operando)

• Condizione: espressione booleana

(come quelle dei vincoli di ennupla)

• semantica

• il risultato contiene le ennuple

dell'operando che soddisfano la

condizione

23

Basi di dati – Paolo Zirilli [email protected]

Operatore di Selezione (σ)

σeta’=18(S)

18

19

18

età

3.8bi@ttBianchi0033

3.2bi@ecVerdi0072

3.4ro@ecRossi0012

gpaloginnomesid

18

18

età

3.8bi@ttBianchi0033

3.4ro@ecRossi0012

gpaloginnomesid

S

Produce una relazione avente lo stesso schema di r econtenente le tuple di r per le quali F e’ vera

σF(r)

Formula proposizionale F su X è una formula booleana (¬,٨,٧) di termini T.

Dove T e’ definito come:

attr op attr o attr op c

op è un operatore di confronto (=,≠,≤,≥,<,>);

Formula proposizionale

24

Basi di dati – Paolo Zirilli [email protected]

Cognome Filiale StipendioMatricola

Neri Milano 645998

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553

Impiegati

Milano Milano 449553

• impiegati che guadagnano più di 50

SELStipendio > 50 (Impiegati)

Neri Napoli 645698

SELStipendio > 50 (Impiegati)

Page 7: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

7

25

Basi di dati – Paolo Zirilli [email protected]

Impiegati

Cognome Filiale StipendioMatricola

Neri Milano 645998

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553

• impiegati che guadagnano più di 50 e lavorano a Milano

SELStipendio > 50 AND Filiale = 'Milano' (Impiegati)

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553

Neri Milano 645998

SELStipendio > 50 AND Filiale = 'Milano' (Impiegati)

26

Basi di dati – Paolo Zirilli [email protected]

Impiegati

Cognome Filiale StipendioMatricola

Neri Milano 645998

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553

• impiegati che hanno lo stesso nome della filiale presso cui lavorano

SEL Cognome = Filiale(Impiegati)

Neri Milano 645998

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553

SEL Cognome = Filiale(Impiegati)

27

Basi di dati – Paolo Zirilli [email protected]

Selezione e proiezione

• operatori "ortogonali"

• selezione:

• decomposizione orizzontale

• proiezione:

• decomposizione verticale

28

Basi di dati – Paolo Zirilli [email protected]

selezione

proiezione

Page 8: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

8

29

Basi di dati – Paolo Zirilli [email protected]

Proiezione

• operatore monadico

• produce un risultato che

• ha parte degli attributi dell'operando

• contiene ennuple cui contribuiscono

tutte le ennuple dell'operando

30

Basi di dati – Paolo Zirilli [email protected]

Impiegati

Cognome Filiale StipendioMatricola

Neri Milano 645998

Neri Napoli 557309

Rossi Roma 645698

Rossi Roma 449553

• per tutti gli impiegati:

• matricola e cognome

• cognome e filiale

31

Basi di dati – Paolo Zirilli [email protected]

Proiezione, sintassi e semantica

• sintassi

PROJ ListaAttributi (Operando)

• semantica

• il risultato contiene le ennuple ottenute

da tutte le ennuple dell'operando

ristrette agli attributi nella lista

32

Basi di dati – Paolo Zirilli [email protected]

Operatore di Proiezione (π)

π età (S)

18

19

18

età

3.8bi@ttBianchi0033

3.2bi@ecVerdi0072

3.4ro@ecRossi0012

gpaloginnomesid

19

18

età

S

Tutte le tuple della relazione r contribuiscono al risultato di unaproiezione, ma soltanto con i valori corrispondenti agli attributispecificati dalla condizione C.

π C(r)

Distinte

Condizione

Condizione di proiezione C su r è l’elenco degli attributi dello schema X di r che debbono venire ‘proiettati’:

attr1, attr2 , ... ,attrn

attriЄX per 1≥i≤n

Page 9: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

9

33

Basi di dati – Paolo Zirilli [email protected]

Cognome Filiale StipendioMatricola

Neri Milano 645998

Neri Napoli 557309

Rossi Roma 645698

Rossi Roma 449553

• matricola e cognome di tutti gli impiegati

PROJ Matricola, Cognome (Impiegati)

34

Basi di dati – Paolo Zirilli [email protected]

Cognome Filiale StipendioMatricola

Neri Milano 645998

Neri Napoli 557309

Rossi Roma 645698

Rossi Roma 449553

• cognome e filiale di tutti gli impiegati

PROJ Cognome, Filiale (Impiegati)

35

Basi di dati – Paolo Zirilli [email protected]

Cardinalità delle proiezioni

• una proiezione

• contiene al più tante ennuple quante

l'operando

• può contenerne di meno

• se X è una superchiave di R, allora

PROJX(R) contiene esattamente tante

ennuple quante R

36

Basi di dati – Paolo Zirilli [email protected]

Selezione e proiezione

• Combinando selezione e proiezione,

possiamo estrarre interessanti informazioni

da una relazione

Page 10: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

10

37

Basi di dati – Paolo Zirilli [email protected]

Cognome Filiale StipendioMatricola

Neri Milano 645998

Rossi Roma 557309

Neri Napoli 645698

Milano Milano 449553 Milano Milano 449553 Neri Napoli 645698

• matricola e cognome degli impiegati che guadagnano più di 50

SELStipendio > 50 (Impiegati) PROJMatricola,Cognome ( )

38

Basi di dati – Paolo Zirilli [email protected]

• Combinando selezione e proiezione,

possiamo estrarre informazioni da una

relazione

• non possiamo però correlare

informazioni presenti in relazioni diverse,

né informazioni in ennuple diverse di

una stessa relazione

39

Basi di dati – Paolo Zirilli [email protected]

Esempi di divisione A/B

sno pno

s1 p1

s1 p2

s1 p3

s1 p4

s2 p1

s2 p2s3 p2

s4 p2

s4 p4

pno

p2

p4

pno

p1

p2

p4

A

B1B2

B3

A/B1 A/B2 A/B3

sno

s1

s2

s3

s4

pno

p2

sno

s1

s4

sno

s1

40

Basi di dati – Paolo Zirilli [email protected]

Operazione di Divisione

p4s1

p3s1

p2s1

p1s2

p2

p1

pno

s3

s1

sno

Non e’ supportato come primitiva ma e’ utile per esprimere query del tipo:Trova i marinai che hanno prenotato tutte le barcheA/B={ <x> | ∃∃∃∃<x,y>ЄA ∀∀∀∀<y>ЄB }

A/B

s1

s3

snoA/B1

p2

pno

B1

A B2p4

p2

pno A/B2

s1

sno

Page 11: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

11

41

Basi di dati – Paolo Zirilli [email protected]

Divisione• Sia A una relazione con due campi, x e y; sia B una

relazione con il solo campo y:

• a/b = {⟨x⟩ | ⟨x, y⟩ ∈ A , ⟨y⟩ ∈ B}• cioè, A/B contiene tutte le tuple x (velisti) tali che per

ogni tupla y (barca) in B, ci sia una tupla xy in A

• Oppure. Se l’insieme di valori y (barche) associato con un valore x (velista) in A contiene tutti i valori y in B, il valore x è in A/B

• In generale, x e y possono essere un qualunque elenco di campi; y è l’elenco di campi in B, e x ∪ y è l’elenco dei campi in A

42

Basi di dati – Paolo Zirilli [email protected]

Esempi di divisione A/B

sno pno

s1 p1

s1 p2

s1 p3

s1 p4

s2 p1

s2 p2

s3 p2

s4 p2

s4 p4

pno

p2

p4

pno

p1

p2

p4

A

B1B2

B3

A/B1 A/B2 A/B3

sno

s1

s2

s3

s4

pno

p2

sno

s1

s4

sno

s1

43

Basi di dati – Paolo Zirilli [email protected]

Esprimere A/B usando operatori di base

• La divisione non è una operazione essenziale; solo un’utile scorciatoia

• (Vero anche per i join, ma i join sono così comuni che i sistemi li implementano esplicitamente)

• Idea: per A/B, calcolare tutti i valori x che non sono “interdetti” da qualche valore y in B

• Un valore x è “interdetto” se associandogli valori y da B otteniamo una tupla xy che non è in A

Valori x interdetti :

A/B:

π πx x

A B A(( ( ) ) )× −

πx

A( ) − Tutte le tuple interdette44

Basi di dati – Paolo Zirilli [email protected]

Join

• il join è l'operatore più interessante

dell'algebra relazionale

• permette di correlare dati in relazioni

diverse

Page 12: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

12

45

Basi di dati – Paolo Zirilli [email protected]

Prove scritte in un concorso pubblico

• I compiti sono anonimi e ad ognuno è

associata una busta chiusa con il nome del

candidato

• Ciascun compito e la relativa busta

vengono contrassegnati con uno stesso

numero

46

Basi di dati – Paolo Zirilli [email protected]

1 25

2 13

3 27

4 28

1 Mario Rossi

2 Nicola Russo

3 Mario Bianchi

4 Remo Neri

25Mario Rossi

13Nicola Russo

27Mario Bianchi

28Remo Neri

47

Basi di dati – Paolo Zirilli [email protected]

1 25

2 13

3 27

4 28

Numero Voto

1 Mario Rossi

2 Nicola Russo

3 Mario Bianchi

4 Remo Neri

Numero Candidato

25Mario Rossi

13Nicola Russo

27Mario Bianchi

28Remo Neri

VotoCandidato

1

2

3

4

Numero

48

Basi di dati – Paolo Zirilli [email protected]

Join naturale

• operatore binario (generalizzabile)

• produce un risultato

• sull‘ unione degli attributi degli

operandi

• con ennuple costruite ciascuna a partire

da una ennupla di ognuno degli operandi

Le enn sono ottenute combinando le tuple

con valori uguali sugli attributi in comune

Page 13: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

13

49

Basi di dati – Paolo Zirilli [email protected]

Join, sintassi e semantica

• R1(X1), R2(X2)

• R1 JOIN R2 è una relazione su X1X2

{ t su X1X2 | esistono t1∈R1e t2∈R2

con t[X1] =t1 e t[X2] =t2 }

50

Basi di dati – Paolo Zirilli [email protected]

A Mori

B Bruni

Reparto Capo

Rossi A

Neri B

Bianchi B

Impiegato Reparto

Rossi A Mori

Neri B Bruni

Impiegato Reparto Capo

Bianchi B Bruni

Rossi A

Neri B

Bianchi B

Rossi A

Neri B

Bianchi B

A Mori

B Bruni

A Mori

B BruniB BruniB Bruni

• ogni ennupla contribuisce al risultato:

• join completo

51

Basi di dati – Paolo Zirilli [email protected]

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

B Mori

C Bruni

A

C

Un join non completo

52

Basi di dati – Paolo Zirilli [email protected]

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

D Mori

C Bruni

Impiegato Reparto Capo

Un join vuoto

Page 14: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

14

53

Basi di dati – Paolo Zirilli [email protected]

Impiegato Reparto Capo

Rossi A

Neri B

Impiegato Reparto

Rossi A

Neri B

Rossi B

Neri B

A Mori

B Bruni

Reparto Capo

A Mori

B Bruni

B Mori

B BruniB BruniB Bruni

Rossi B Mori

Neri B Mori

Neri B Bruni

Rossi B Bruni

Un join completo, con n x m ennuple

54

Basi di dati – Paolo Zirilli [email protected]

Cardinalità del join

• Il join di R1 e R2 contiene un numero di ennuple …• compreso fra zero e il prodotto di |R1| e |R2|

• se il join coinvolge una chiave di R2, allora il numero di ennuple è …• compreso fra zero e |R1|

• se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di ennuple è• pari a |R1|

55

Basi di dati – Paolo Zirilli [email protected]

Cardinalità del join, 2

• R1(A,B) , R2 (B,C)

• in generale

0 ≤ |R1 JOIN R2| ≤ |R1| × |R2| • se B è chiave in R2

0 ≤ |R1 JOIN R2| ≤ |R1|• se B è chiave in R2 ed esiste vincolo di

integrità referenziale fra B (in R1) e R2:

|R1 JOIN R2| = |R1|

56

Basi di dati – Paolo Zirilli [email protected]

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

B Mori

C Bruni

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

A

C

Join, una difficoltà

• alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori"

Page 15: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

15

57

Basi di dati – Paolo Zirilli [email protected]

Join esterno

• Il join esterno estende, con valori nulli, le

ennuple che verrebbero tagliate fuori da un

join (interno)

• esiste in tre versioni:

• sinistro, destro, completo

58

Basi di dati – Paolo Zirilli [email protected]

Join esterno

• sinistro: mantiene tutte le ennuple del

primo operando, estendendole con valori

nulli, se necessario

• destro: ... del secondo operando ...

• completo: … di entrambi gli operandi ...

59

Basi di dati – Paolo Zirilli [email protected]

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Impiegati

Reparto Capo

B Mori

C Bruni

Reparti

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegati JOINLEFT Reparti

C

Rossi A NULL

ARossi

60

Basi di dati – Paolo Zirilli [email protected]

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Impiegati

Reparto Capo

B Mori

C Bruni

Reparti

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegati JOINRIGHT Reparti

A

NULL C Bruni

C Bruni

Page 16: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

16

61

Basi di dati – Paolo Zirilli [email protected]

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Impiegati

Reparto Capo

B Mori

C Bruni

Reparti

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegati JOINFULL Reparti

NULL C Bruni

C Bruni

ARossi

Rossi A NULL

62

Basi di dati – Paolo Zirilli [email protected]

Join e proiezioni

Impiegato Reparto

Rossi A

Neri B

Bianchi B

Reparto Capo

B Mori

C Bruni

Neri B Mori

Impiegato Reparto Capo

Bianchi B Mori

Impiegato Reparto

Neri B

Bianchi B

Reparto Capo

B Mori

63

Basi di dati – Paolo Zirilli [email protected]

Proiezioni e join

Neri B Mori

Impiegato Reparto Capo

Bianchi B Bruni

Verdi A Bini

Neri BImpiegato Reparto

Bianchi BVerdi A

B MoriReparto Capo

B BruniA Bini

Verdi A Bini

Neri B Mori

Impiegato Reparto Capo

Neri B BruniBianchi B Mori

Bianchi B Bruni

64

Basi di dati – Paolo Zirilli [email protected]

Join e proiezioni

• R 1(X1), R 2(X2)

PROJX1 (R 1 JOIN R2 ) ⊆ R 1

• R(X), X = X1 ∪ X2

(PROJX1 (R)) JOIN (PROJX2

(R)) ⊇ R

Page 17: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

17

65

Basi di dati – Paolo Zirilli [email protected]

Prodotto cartesiano

• un join naturale su relazioni senza attributi

in comune

• contiene sempre un numero di ennuple

pari al prodotto delle cardinalità degli

operandi

(le ennuple sono tutte combinabili )

Se l’insieme di attributi sono disgiunti ?

66

Basi di dati – Paolo Zirilli [email protected]

Rossi A

Neri B

Bianchi B

Impiegato Reparto

Impiegati

A Mori

B BruniB BruniB Bruni

Codice Capo

Reparti

Impiegati JOIN Reparti

Impiegato Reparto CapoCodice

Rossi A MoriAAARossi A B Bruni

Neri B MoriA

Neri B B Bruni

Bianchi B MoriA

Bianchi B B Bruni

67

Basi di dati – Paolo Zirilli [email protected]

• Il prodotto cartesiano, in pratica, ha senso

(quasi) solo se seguito da selezione:

SELCondizione (R1 JOIN R2)

• L'operazione viene chiamata theta-join e

indicata con

R1 JOINCondizione R2

n.b. sul libro di testo chiamato join condizionale

68

Basi di dati – Paolo Zirilli [email protected]

Perché "theta-join"?

• La condizione C è spesso una congiunzione

(AND) di atomi di confronto A1ϑ A2 dove ϑ è uno degli operatori di confronto (=, >, <, …)

Page 18: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

18

69

Basi di dati – Paolo Zirilli [email protected]

Operazioni di join

R��������CS

Condizione di Join

55.5

45.0

age

103

103

bid

58

58

(sid)

8

7

rating

11/12/02Luca31

11/12/02Davide22

daysname(sid)

R��������S1.sid<R1.sidS

σC(RXS)=

La relazione risultante avrà lo schema del prodotto cartesiano di R ed S e l’istanza composta dalle tuple delprodotto cartesiano che soddisfano la condizione C

Senza nome

70

Basi di dati – Paolo Zirilli [email protected]

Operazioni di Equi-Join e Natural-Join

R��������CS

Condizione di Join

35.0

45.0

age

103

101

bid

58

22

(sid)

10

7

rating

11/12/02Remo58

11/10/03Davide22

daysname(sid)

R��������sidS

Equi-Join è un join in cui la condizione C e’ composta solamente di operazioni di uguaglianza.Natural Join e’un Equi-Join su tutti gli attributi in comune

X

Viene eliminata

71

Basi di dati – Paolo Zirilli [email protected]

Equi-join

• Se l'operatore di confronto nel theta-join èsempre l'uguaglianza (=) allora si parla di equi-join

Nota: ci interessa davvero l’equi-join, non il theta-join più generale

Perché ?

correla dati in relazioni diverse confrontando i

valori ….72

Basi di dati – Paolo Zirilli [email protected]

Rossi A

Neri B

Bianchi B

Impiegato Reparto

Impiegati

A Mori

B BruniB BruniB Bruni

Codice Capo

Reparti

Impiegati JOINReparto=Codice Reparti

Impiegato Reparto CapoCodice

Rossi A MoriAAARossi A B Bruni

Neri B MoriA

Neri B B Bruni

Bianchi B MoriA

Bianchi B B Bruni

Rossi A MoriAAANeri B B Bruni

Bianchi B B Bruni

Page 19: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

19

73

Basi di dati – Paolo Zirilli [email protected]

Rossi A

Neri B

Bianchi B

Impiegato Reparto

Impiegati

A Mori

B BruniB BruniB Bruni

Reparto Capo

Reparti

Impiegati JOIN Reparti

74

Basi di dati – Paolo Zirilli [email protected]

Join naturale ed equi-join

Impiegato Reparto

Impiegati

Reparto Capo

Reparti

Impiegati JOIN Reparti

PROJImpiegato,Reparto,Capo (

)RENCodice ← Reparto (Reparti)Impiegati JOIN

SELReparto=Codice

( )

75

Basi di dati – Paolo Zirilli [email protected]

Esempi

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998

Rossi 34 457309

Bruni 43 425698

Neri 42 359553

Mori 45 504076

Lupi 46 608123

Supervisione Impiegato Capo

5998

7309

5698

9553

4076

5698

5698

4076

4076

812376

Basi di dati – Paolo Zirilli [email protected]

Esempi

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998

Rossi 34 457309

Bruni 43 425698

Neri 42 359553

Mori 45 504076

Lupi 46 608123

Supervisione Impiegato Capo

5998

7309

5698

9553

4076

5698

5698

4076

4076

8123

Page 20: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

20

77

Basi di dati – Paolo Zirilli [email protected]

• Trovare matricola, nome, età e stipendio

degli impiegati che guadagnano più di 40

SELStipendio>40(Impiegati)

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

78

Basi di dati – Paolo Zirilli [email protected]

• Trovare matricola, nome ed età degli

impiegati che guadagnano più di 40

PROJMatricola, Nome, Età (SELStipendio>40(Impiegati))

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

79

Basi di dati – Paolo Zirilli [email protected]

• Trovare le matricole dei capi degli impiegati

che guadagnano più di 40

PROJCapo (Supervisione

JOIN Impiegato=Matricola

(SELStipendio>40(Impiegati)))

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123 80

Basi di dati – Paolo Zirilli [email protected]

• Trovare nome e stipendio dei capi degli

impiegati che guadagnano più di 40PROJNome,Stipendio (

Impiegati JOIN Matricola=Capo

PROJCapo(SupervisioneJOIN Impiegato=Matricola (SELStipendio>40(Impiegati))))

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Page 21: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

21

81

Basi di dati – Paolo Zirilli [email protected]

• Trovare gli impiegati che guadagnano più del

proprio capo, mostrando matricola, nome e

stipendio dell'impiegato e del capoPROJMatr,Nome,Stip,MatrC,NomeC,StipC

(SELStipendio>StipC(RENMatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età(Impiegati)

JOIN MatrC=Capo

(Supervisione JOIN Impiegato=Matricola Impiegati)))

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123 82

Basi di dati – Paolo Zirilli [email protected]

• Trovare le matricole dei capi i cui impiegati

guadagnano tutti più di 40

PROJCapo (Supervisione) -

PROJCapo (Supervisione

JOIN Impiegato=Matricola

(SELStipendio ≤ 40(Impiegati)))

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

83

Basi di dati – Paolo Zirilli [email protected]

Una convenzione e notazione alternativa per i join

• Nota: è sostanzialmente l'approccio usato in SQL

• Ignoriamo il join naturale (cioè non consideriamo implicitamente condizioni su attributi con nomi uguali)

• Per "riconoscere" attributi con lo stesso nome gli premettiamo il nome della relazione

• Usiamo "assegnazioni" (viste) per ridenominarele relazioni (e gli attributi solo quando serve per l'unione)

84

Basi di dati – Paolo Zirilli [email protected]

• Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo

PROJMatr,Nome,Stip,MatrC,NomeC,StipC

(SELStipendio>StipC(RENMatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età(Impiegati)

JOIN MatrC=Capo

(Supervisione JOIN Impiegato=Matricola Impiegati)))

Supervisione Impiegato Capo

59987309

56989553

4076

56985698

40764076

8123

Impiegati Nome Età StipendioMatricola

Bianchi 37 385998Rossi 34 457309

Bruni 43 425698Neri 42 359553

Mori 45 504076Lupi 46 608123

Page 22: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

22

85

Basi di dati – Paolo Zirilli [email protected]

PROJMatr,Nome,Stip,MatrC,NomeC,StipC

(SELStip>StipC(RENMatrC,NomeC,StipC,EtàC ← Matr,Nome,Stip,Età(Imp)

JOIN MatrC=Capo

(Sup JOIN Imp=Matr Imp)))

PROJImp.Matr, Imp.Nome, Imp.Stip,Capi.Matr,Capi.Nome, Capi.Stip

(SELImp.Stip>Capi.Stip(

Capi JOIN Capi.Matr=Capo (Sup JOIN Imp=Imp.Matr Imp)))

Capi := Imp

86

Basi di dati – Paolo Zirilli [email protected]

Equivalenza di espressioni

• Due espressioni sono equivalenti se

producono lo stesso risultato qualunque sia

l'istanza attuale della base di dati

• L'equivalenza è importante in pratica

perché i DBMS cercano di eseguire

espressioni equivalenti a quelle date, ma

meno "costose“ (QUERY OPTIMIZER)

87

Basi di dati – Paolo Zirilli [email protected]

Un'equivalenza importante

• Push selections (se A è attributo di R2 )

SEL A=10 (R1 JOIN R2) = R1 JOIN SEL A=10 ( R2)

• Riduce in modo significativo la dimensione

del risultato intermedio (e quindi il costo

dell'operazione)

88

Basi di dati – Paolo Zirilli [email protected]

Nota

• In questo corso, ci preoccupiamo poco

dell’efficienza:

• l’obiettivo è di scrivere interrogazioni

corrette e leggibili

• Motivazione:

• I DBMS si preoccupano di scegliere le

strategie realizzative efficienti

Page 23: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

23

89

Basi di dati – Paolo Zirilli [email protected]

Selezione con valori nulli

Cognome Filiale EtàMatricola

Neri Milano 455998

Rossi Roma 327309

Bruni Milano NULL9553

Impiegati

SEL Età > 40 (Impiegati)

• la condizione atomica è vera solo per valori non nulli

90

Basi di dati – Paolo Zirilli [email protected]

Un risultato non desiderabile

SEL Età>30 (Persone) ∪ SEL Età≤30 (Persone) ≠Persone

• Perché?

Perché le selezioni vengono valutate separatamente!

• Ma anche

SEL Età>30 ∨ Età≤30 (Persone) ≠ Persone• Perché?

• Perché anche le condizioni atomiche vengono valutate separatamente!

91

Basi di dati – Paolo Zirilli [email protected]

Selezione con valori nulli: soluzione

SEL Età > 40 (Impiegati)

• la condizione atomica è vera solo per valori non nulli

• per riferirsi ai valori nulli esistono forme apposite di condizioni:

IS NULL

IS NOT NULL

• si potrebbe usare (ma non serve) una "logica a tre valori" (vero, falso, sconosciuto)

92

Basi di dati – Paolo Zirilli [email protected]

• Quindi:

SEL Età>30 (Persone) ∪ SEL Età≤30 (Persone) ∪SEL Età IS NULL (Persone)

=

SEL Età>30 ∨ Età≤30 ∨ Età IS NULL (Persone)

=

Persone

Page 24: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

24

93

Basi di dati – Paolo Zirilli [email protected]

Cognome Filiale EtàMatricola

Neri Milano 455998

Bruni Milano NULL9553

Impiegati

SEL (Età > 40) OR (Età IS NULL) (Impiegati)

Rossi Roma 327309 Rossi Roma 327309 Neri Milano 455998

Bruni Milano NULL9553

94

Basi di dati – Paolo Zirilli [email protected]

Viste (relazioni derivate)

• Rappresentazioni diverse per gli stessi dati (schema esterno)

• Relazioni derivate:• relazioni il cui contenuto è funzione del contenuto di altre

relazioni (definito per mezzo di interrogazioni)

• Relazioni di base: contenuto autonomo

• Le relazioni derivate possono essere definite su altre derivate, ma …a condizione che esista un ordinamento tra le r derivate

ogni r sia def solo in termini di r di base e r der che la precedono nell’ordinamento

95

Basi di dati – Paolo Zirilli [email protected]

Architettura standard (ANSI/SPARC)a tre livelli per DBMS

BD

Schema logico

Schemaesterno

Schema interno

Schemaesterno

Schemaesterno

utenteutente

utenteutente utente

96

Basi di dati – Paolo Zirilli [email protected]

Viste, esempio

• una vista:

Supervisione =

PROJ Impiegato, Capo (Afferenza JOIN Direzione)

A Mori

B Bruni

Reparto CapoRossi A

Neri B

Bianchi B

Impiegato RepartoAfferenza Direzione

Page 25: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

25

97

Basi di dati – Paolo Zirilli [email protected]

Viste virtuali e materializzate

• Due tipi di relazioni derivate:

• viste materializzate

• relazioni virtuali (o viste)

98

Basi di dati – Paolo Zirilli [email protected]

Viste materializzate

• relazioni derivate memorizzate nella base di dati

• vantaggi:

• immediatamente disponibili per le interrogazioni

• svantaggi:

• ridondanti

• appesantiscono gli aggiornamenti

• sono raramente supportate dai DBMS

99

Basi di dati – Paolo Zirilli [email protected]

Viste virtuali

• relazioni virtuali (o viste):

• sono supportate dai DBMS (tutti)

• una interrogazione su una vista viene

eseguita "ricalcolando" la vista (o quasi)

100

Basi di dati – Paolo Zirilli [email protected]

Interrogazioni sulle viste

• Sono eseguite sostituendo alla vista la sua

definizione:

SELCapo='Leoni' (Supervisione)

viene eseguita comeSELCapo='Leoni'(

PROJ Impiegato, Capo (Afferenza JOIN Direzione))

Page 26: Linguaggi per basi di dati - Università degli Studi di ... · Basi di dati – Paolo Zirilli p.zirilli@gmail.com Algebra relazionale • Insieme di operatori con 3 caratteristiche:

26

101

Basi di dati – Paolo Zirilli [email protected]

Viste, motivazioni (vantaggi)

• Schema esterno: ogni utente vede solo • ciò che gli interessa e nel modo in cui gli interessa,

senza essere distratto dal resto• ciò che e' autorizzato a vedere (autorizzazioni)

• Strumento di programmazione:

• si può semplificare la scrittura di interrogazioni: espressioni complesse e sottoespressioni ripetute

• Utilizzo di programmi esistenti su schemi ristrutturati

102

Basi di dati – Paolo Zirilli [email protected]

Viste come strumento di programmazione

• Trovare gli impiegati che hanno lo stesso capo diRossi

• Senza vista:PROJ Impiegato ((Afferenza JOIN Direzione) JOIN

REN ImpR,RepR ← Imp,Reparto (SEL Impiegato='Rossi' (Afferenza JOIN Direzione)))

• Con la vista:PROJ Impiegato (Supervisione JOIN

REN ImpR,RepR ← Imp,Reparto (SEL Impiegato='Rossi' (Supervisione)))

103

Basi di dati – Paolo Zirilli [email protected]

Viste e aggiornamenti, attenzione

• Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?

Afferenza Direzione

A Mori

B Bruni

Reparto Capo

Rossi A

Neri B

Impiegato Reparto

Neri BNeri B B BruniB BruniB BruniB Bruni

Verdi A B BruniB BruniB BruniB BruniC Bruni

Rossi

Neri

Impiegato

Rossi

Neri

Rossi

Neri

Verdi

SupervisioneMori

Bruni

Capo

Mori

Bruni

Mori

BruniBruniBruni

Mori

104

Basi di dati – Paolo Zirilli [email protected]

Viste e aggiornamenti

• "Aggiornare una vista":

• modificare le relazioni di base in modo che la vista, "ricalcolata" rispecchi l'aggiornamento

• L'aggiornamento sulle relazioni di base corrispondente a quello specificato sulla vista deve essere univoco

• In generale però non è univoco!

• Ben pochi aggionamenti sono ammissibili sulle viste