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 |