Join esterno

Il join esterno (outer join) include tutte le tuple di una relazione estese con le tuple dell'altra relazione che rispettano la condizione di join. Gli attributi delle tuple che non rispettano la condizione di join sono riempite con i valori NULL.

Il join esterno è detto

  • sinistro (left outer join)
    se include tutte le tuple della prima relazione
    left outer join
  • destro (right outer join)
    se include tutte le tuple della seconda relazione
    right outer join
  • completo (full outer join)
    se include tutte le tuple della prima e della seconda relazione.
    full outer join

A cosa serve il join esterno? Nell'algebra relazionale l'operatore join esclude tutte le tuple che non rispettano la condizione di join. Questo però comporta una perdita di informazioni. Per questa ragione nel linguaggio SQL è stata aggiunta anche una terza versione di join più flessibile, detta join esterno, inizialmente non prevista nell'algebra relazionale di Copp.

Un esempio pratico

Ho due tabelle R e T con un attributo (b) in comune.

due relazioni di esempio

Nel join naturale sono incluse sono le tuple che hanno un valore in comune nell'attributo b.

Tutte la altre tuple di R e T che non rispettano la condizione di join sono escluse.

la tabella del join naturale

Nel join esterno sinistro (left outer join) sono incluse tutte le tuple della prima relazione R estese con gli attributi della seconda relazione T che hanno lo stesso valore nell'attributo comune b.

Le tuple di T che non hanno valori in comune nell'attributo b sono incluse con i valori nulli.

un esempio di left outer join

Nel join esterno destro (right outer join) sono incluse tutte le tuple della seconda relazione T estese con gli attributi della prima relazione R quando il valore dell'attributo comune coincide.

Se non coincide il valore dell'attributo comune, gli attributi estesi della relazione R sono aggiunti comunque con valori nulli.

un esempio di left outer join

Nel join esterno completo (full outer join) sono presenti tutte le tuple del join esterno sinistro e destro senza tuple duplicate.

un esempio di full outer join

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Relational Algebra