DBMS - Join

Comprendiamo i vantaggi di prendere un prodotto cartesiano di due relazioni, che ci dà tutte le possibili tuple che sono accoppiate insieme. Ma potrebbe non essere fattibile per noi in alcuni casi prendere un prodotto cartesiano in cui incontriamo enormi relazioni con migliaia di tuple aventi un numero considerevole di attributi.

Joinè una combinazione di un prodotto cartesiano seguito da un processo di selezione. Un'operazione di join accoppia due tuple da relazioni diverse, se e solo se una data condizione di join è soddisfatta.

Descriveremo brevemente i vari tipi di join nelle sezioni seguenti.

Theta (θ) Partecipa

Il join theta combina tuple di relazioni diverse a condizione che soddisfino la condizione theta. La condizione di join è indicata dal simboloθ.

Notazione

R1 ⋈θ R2

R1 e R2 sono relazioni aventi attributi (A1, A2, .., An) e (B1, B2, .., Bn) tali che gli attributi non hanno nulla in comune, cioè R1 ∩ R2 = Φ.

Il join theta può utilizzare tutti i tipi di operatori di confronto.

Alunno
SID Nome Std
101 Alex 10
102 Maria 11
Soggetti
Classe Soggetto
10 Matematica
10 inglese
11 Musica
11 Gli sport

Student_Detail -

STUDENT Student.Std = Subject.Class SUBJECT

Student_detail
SID Nome Std Classe Soggetto
101 Alex 10 10 Matematica
101 Alex 10 10 inglese
102 Maria 11 11 Musica
102 Maria 11 11 Gli sport

Equijoin

Quando si unisce Theta utilizza solo equalityoperatore di confronto, si dice che sia equijoin. L'esempio sopra corrisponde a equijoin.

Natural Join ( )

Il join naturale non utilizza alcun operatore di confronto. Non concatena come fa un prodotto cartesiano. Possiamo eseguire un Natural Join solo se esiste almeno un attributo comune che esiste tra due relazioni. Inoltre, gli attributi devono avere lo stesso nome e dominio.

Il join naturale agisce su quegli attributi corrispondenti in cui i valori degli attributi in entrambe le relazioni sono gli stessi.

Corsi
CID Corso Dipartimento
CS01 Banca dati CS
ME01 Meccanica ME
EE01 Elettronica EE
HoD
Dipartimento Testa
CS Alex
ME maya
EE Mira
Corsi ⋈ HoD
Dipartimento CID Corso Testa
CS CS01 Banca dati Alex
ME ME01 Meccanica maya
EE EE01 Elettronica Mira

Outer Joins

Theta Join, Equijoin e Natural Join sono chiamati inner join. Un'unione interna include solo quelle tuple con attributi corrispondenti e il resto viene scartato nella relazione risultante. Pertanto, è necessario utilizzare i join esterni per includere tutte le tuple delle relazioni partecipanti nella relazione risultante. Esistono tre tipi di join esterni: join esterno sinistro, join esterno destro e join esterno completo.

Join esterno sinistro (R S)

Tutte le tuple dalla relazione Left, R, sono incluse nella relazione risultante. Se ci sono tuple in R senza alcuna tupla corrispondente nella relazione Right S, allora gli attributi S della relazione risultante sono resi NULL.

Sinistra
UN B
100 Banca dati
101 Meccanica
102 Elettronica
Destra
UN B
100 Alex
102 maya
104 Mira
Corsi HoD
UN B C D
100 Banca dati 100 Alex
101 Meccanica --- ---
102 Elettronica 102 maya

Join esterno destro: (R S)

Tutte le tuple dalla relazione Right, S, sono incluse nella relazione risultante. Se ci sono tuple in S senza alcuna tupla corrispondente in R, allora gli attributi R della relazione risultante sono resi NULL.

Corsi HoD
UN B C D
100 Banca dati 100 Alex
102 Elettronica 102 maya
--- --- 104 Mira

Join esterno completo: (R S)

Tutte le tuple di entrambe le relazioni partecipanti sono incluse nella relazione risultante. Se non ci sono tuple corrispondenti per entrambe le relazioni, i rispettivi attributi non corrispondenti vengono resi NULL.

Corsi HoD
UN B C D
100 Banca dati 100 Alex
101 Meccanica --- ---
102 Elettronica 102 maya
--- --- 104 Mira