Sei sulla pagina 1di 20

Algebra Relazionale

Join

z Combinando selezione e proiezione, è


possibile estrarre informazioni da una
relazione
z Non è possibile però correlare informazioni
presenti in relazioni diverse
z Il join è l'operatore più interessante
dell'algebra relazionale: permette di correlare
dati in relazioni diverse

1
Join naturale

z Operatore binario
z Produce un risultato
– sull'unione degli attributi degli operandi
– con ennuple costruite ciascuna a partire da una
ennupla di ognuno degli operandi

Join naturale, sintassi e semantica

z R1(X1), R2(X2)
z R1 ZY R2 è una relazione su X1X2

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


con t[X1] =t1 e t[X2] =t2 }
analogamente
{ t su X1X2 | t[X1]∈r1 e t[X2]∈r2 }

2
Impiegato Reparto Reparto Capo
Rossi A A Mori
Neri B B Bruni
Bianchi B

Impiegato Reparto Capo


Rossi A Mori
Neri B Bruni
Bianchi B Bruni

z ogni ennupla contribuisce al risultato:


– join completo

Un join non completo

Impiegato Reparto Reparto Capo


Rossi A B Mori
Neri B C Bruni
Bianchi B

Impiegato Reparto Capo


Neri B Mori
Bianchi B Mori

3
Un join vuoto

Impiegato Reparto Reparto Capo


Rossi A D Mori
Neri B C Bruni
Bianchi B

Impiegato Reparto Capo

Un join completo, con n x m ennuple


Impiegato Reparto Reparto Capo
Rossi A
B A
B Mori
Neri B B Bruni

Impiegato Reparto Capo


Rossi B Mori
Rossi B Bruni
Neri B Mori
Bianchi B Bruni

4
Cardinalità del join

z Il join di R1 e R2 contiene un numero di ennuple


compreso fra zero e il prodotto di |R1| e |R2|
z Se il join coinvolge una chiave di R2, allora il numero
di ennuple è compreso fra zero e |R1|
z Se il join coinvolge una chiave di R2 e un vincolo di
integrità referenziale, allora il numero di ennuple è
pari a |R1|

Join, una difficoltà


Impiegato Reparto Reparto Capo
Rossi A B Mori
Neri B C Bruni
Bianchi B
Impiegato Reparto Capo
Neri B Mori
Bianchi B Mori
z alcune ennuple non contribuiscono al risultato:
vengono "tagliate fuori"

5
Join esterno

z Il join esterno estende, con valori nulli, le


ennuple che verrebbero tagliate fuori da un
join (interno)
z Esiste in tre versioni:
– sinistro, destro, completo

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 ...

6
Impiegati Reparti
Impiegato Reparto Reparto Capo
Rossi A B Mori
Neri B C Bruni
Bianchi B
Impiegati ZY LEFT Reparti
Impiegato Reparto Capo
Neri B Mori
Bianchi B Mori
Rossi A NULL

Impiegati Reparti
Impiegato Reparto Reparto Capo
Rossi A B Mori
Neri B C Bruni
Bianchi B

Impiegati ZY RIGHT Reparti


Impiegato Reparto Capo
Neri B Mori
Bianchi B Mori
NULL C Bruni

7
Impiegati Reparti
Impiegato Reparto Reparto Capo
Rossi A B Mori
Neri B C Bruni
Bianchi B
Impiegati ZY FULL Reparti
Impiegato Reparto Capo
Neri B Mori
Bianchi B Mori
Rossi A NULL
NULL C Bruni

Join e proiezioni
Impiegato Reparto Reparto Capo
Rossi A B Mori
Neri B C Bruni
Bianchi B

Impiegato Reparto Capo


Neri B Mori
Bianchi B Mori

Impiegato Reparto Reparto Capo


Neri B B Mori
Bianchi B

8
Proiezioni e join
Impiegato Reparto Capo
Neri B Mori
Bianchi B Bruni
Verdi A Bini
Impiegato Reparto Reparto Capo
Neri B B Mori
Bianchi B B Bruni
Verdi A A Bini
Impiegato Reparto Capo
Neri B Mori
Bianchi B Bruni
Neri B Bruni
Bianchi B Mori
Verdi A Bini

Join e proiezioni

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

πX1 (R 1 ZY R2 ) ⊆ R 1

z R(X), X = X1 ∪ X2

(π X1 (R)) ZY (π X2 (R)) ⊇ R

9
Due casi estremi

z Se X1 = X2
– l’operazione di join coincide con l’intersezione
z Se X1 ed X2 sono disgiunti
– l’operazione di join coincide con il prodotto
cartesiano

Il theta-join

z R 1 ZYF R2 = σF (R 1 ZY R2 )
z La condizione F è spesso una congiunzione (AND)
di atomi di confronto A1ϑ A2 dove ϑ è uno degli
operatori di confronto (=, >, <, …)
z Se l'operatore è sempre l'uguaglianza (=) allora si
parla di equi-join

10
Impiegati Reparti
Impiegato Reparto Codice Capo
Rossi A A Mori
Neri B B Bruni
Bianchi B
Impiegati ZYReparto=Codice Reparti
Impiegato Reparto Codice Capo
Rossi A A Mori
Rossi
Neri A
B B Bruni
Neri
Bianchi B A
B Mori
Bruni
Neri B B Bruni
Bianchi B A Mori
Bianchi B B Bruni

Impiegati Reparti
Impiegato Reparto Reparto Capo
Rossi A A Mori
Neri B B Bruni
Bianchi B

Impiegati ZY Reparti

11
Equivalenza di espressioni

z Due espressioni sono equivalenti se


producono lo stesso risultato qualunque sia
l'istanza attuale della base di dati
z L'equivalenza è importante perché i DBMS
cercano di eseguire espressioni equivalenti a
quelle date, ma meno "costose“
z Trasformazioni di equivalenza

Algebra con valori nulli


Impiegati
Matricola Cognome Filiale Età
7309 Rossi Roma 32
5998 Neri Milano 45
9553 Bruni Milano NULL

σ Età > 40 (Impiegati)


• la condizione atomica è vera solo per valori non nulli
• introduzione di un terzo valore di verità: unknown (U)

12
Selezione con valori nulli: soluzione

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


σ Età>30 ∨ Età≤30 (Persone) ≠ Persone

z la condizione atomica è vera solo per valori non nulli


z per riferirsi ai valori nulli esistono forme apposite di
condizioni:
IS NULL
IS NOT NULL

z Quindi:
σ Età>30 (Persone) ∪ σ Età≤30 (Persone) ∪ σ Età IS NULL (Persone)
=
σ Età>30 ∨ Età≤30 ∨ Età IS NULL (Persone)
=
Persone

13
Viste (relazioni derivate)

z Rappresentazioni diverse per gli stessi dati


z Relazioni derivate:
– relazioni il cui contenuto è funzione del contenuto
di altre relazioni (definito per mezzo di
interrogazioni)
z Relazioni di base: contenuto autonomo
z Le relazioni derivate possono essere definite
su altre derivate, purché esista un
ordinamento

Viste materializzate e virtuali

z Due tipi di relazioni derivate:


– viste materializzate
– relazioni virtuali (o viste)

14
Viste materializzate

z relazioni derivate memorizzate nella base di


dati
– vantaggi:
z immediatamente disponibili per le interrogazioni
– svantaggi:
z ridondanti
z appesantiscono gli aggiornamenti
z sono raramente supportate dai DBMS

Viste virtuali

z Relazioni virtuali:
– sono supportate dai DBMS (tutti)
– un’interrogazione su una vista viene eseguita
"ricalcolando" la funzione

15
Viste, esempio

Afferenza
Impiegato Reparto Direzione
Rossi A Reparto Capo
Neri B A Mori
Bianchi B B Bruni
Bianchi B B Bruni
z Una vista:
Supervisione = π Impiegato, Capo (Afferenza ZY Direzione)

Interrogazioni sulle viste

z Sono eseguite sostituendo alla vista la


sua definizione:
σ Capo='Leoni' (Supervisione)
viene eseguita come
σ Capo='Leoni'( π Impiegato, Capo (Afferenza ZY Direzione))

16
Viste, motivazioni

z 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)
z Strumento di programmazione:
– si può semplificare la scrittura di interrogazioni: espressioni complesse e
sottoespressioni ripetute
z Utilizzo di programmi esistenti su schemi ristrutturati
Invece:
z L'utilizzo di viste non influisce sull'efficienza delle interrogazioni

Viste e aggiornamenti, attenzione


Afferenza Direzione
Impiegato Reparto Reparto Capo
Rossi A A Mori
Neri B B Bruni
Verdi A B
C Bruni

Supervisione Impiegato Capo


Rossi Mori
Neri Bruni
Verdi Mori
z Inserire, nella vista, il fatto che Lupi ha come
capo Bruni

17
Viste e aggiornamenti

z "Aggiornare una vista":


– modificare le relazioni di base in modo che la vista,
"ricalcolata" rispecchi l'aggiornamento
z L'aggiornamento sulle relazioni di base
corrispondente a quello specificato sulla vista
deve essere univoco
z In generale però non è univoco!
z Ben pochi aggiornamenti sono ammissibili sulle
viste

Algebra relazionale: limiti

z Ci sono però interrogazioni interessanti non esprimibili:


– calcolo di valori derivati: possiamo solo estrarre valori, non
calcolarne di nuovi;
– calcoli di interesse:
z a livello di ennupla o di singolo valore (conversioni somme,
differenze, etc.)
z su insiemi di ennuple (somme, medie, etc.)
– interrogazioni inerentemente ricorsive, come la chiusura transitiva

18
Chiusura transitiva, esempio

Supervisione(Impiegato, Capo)

z Per ogni impiegato, trovare tutti i superiori (cioè il capo, il


capo del capo, e cosi' via)

Impiegato Capo Impiegato Superiore


Rossi Mori
Lupi Rossi Mori
Lupi
Neri Bruni Neri Bruni
Lupi Falchi Lupi Falchi
Rossi Falchi

Chiusura transitiva

z Nell'esempio, basterebbe il join della relazione con


se stessa, previa opportuna ridenominazione
z Ma: Impiegato Superiore
Impiegato Capo Rossi Mori
Lupi
Rossi Mori
Lupi Neri Bruni
Neri Bruni Lupi Falchi
Lupi Falchi Rossi Falchi
Falchi Leoni Lupi Leoni
Rossi Leoni

19
Chiusura transitiva, impossibile!

z Non esiste in algebra relazionale la


possibilità di esprimere l'interrogazione che,
per ogni relazione binaria, ne calcoli la
chiusura transitiva
z Per ciascuna relazione, è possibile calcolare
la chiusura transitiva, ma con
un'espressione ogni volta diversa

20

Potrebbero piacerti anche