DBMS spajanja: THETA, unutarnje, vanjsko, ekvi tipovi spajanja
⚡ Pametni sažetak
Spajanje u DBMS-u je binarna operacija koja kombinira retke iz dvije ili više tablica koristeći njihove primarne i vanjske ključeve. Spajanja se dijele na unutarnja spajanja, koja vraćaju samo odgovarajuće retke, i vanjska spajanja, koja zadržavaju nepodudarne retke i popunjavaju praznine s null vrijednostima.

Što je spajanje (Join) u DBMS-u?
Pridružite se DBMS-u je binarna operacija koja vam omogućuje kombiniranje produkta spajanja i odabira u jednoj naredbi. Cilj stvaranja uvjeta spajanja je kombiniranje podataka iz dvije ili više tablica. Tablice su povezane pomoću svojih primarnih ključeva i strani ključevi.
Vrste pridruživanja
Postoje uglavnom dvije vrste spajanja u DBMS-u:
- Unutarnji spojevi: Theta, Natural, EQUI
- Vanjski spojevi: Lijevi, Desni, Puni
Donja tablica prikazuje pregled svih vrsta spajanja prije nego što je svaka objašnjena primjerom.
| Pridružite se | Povratak | Nepodudarni retci |
|---|---|---|
| Unutarnji (Theta / EQUI / Prirodni) | Redci koji odgovaraju uvjetu u obje tablice | Ispustio |
| Lijevi vanjski | Svi lijevi retci plus podudaranja | Čuvano s lijeva, nula s desne strane |
| Desni vanjski | Svi desni redovi plus šibice | Čuvano s desne strane, nula s lijeve strane |
| Puni vanjski | Svi retci iz obje tablice | Sačuvano od oba, null gdje nedostaje |
Unutarnje pridruživanje
Unutarnje pridruživanje koristi se za vraćanje redaka iz obje tablice koji zadovoljavaju zadani uvjet. To je najčešće korištena operacija spajanja i može se smatrati zadanom vrstom spajanja.
Unutarnji spoj, ili ekvispoj, je spoj temeljen na usporedbi koji koristi usporedbe jednakosti u predikatu spoja. Međutim, ako koristite druge operatore usporedbe poput ">", ne može se nazvati ekvispojom. Unutarnji spoj se dalje dijeli na tri podtipa:
- Theta spoj
- Prirodno spajanje
- Pridružite se EQUI
Theta Pridružite se
Theta Pridružite se omogućuje spajanje dviju tablica na temelju uvjeta predstavljenog thetom. Theta spaja rad za sve operatore usporedbe. Označava se simbolom θOpći slučaj JOIN operacije naziva se theta spajanje.
Sintaksa:
A ⋈θ B
Theta spoj može koristiti bilo koje uvjete u kriterijima odabira.
Razmotrite sljedeće tablice.
| Tablica A | Tablica B | |||
|---|---|---|---|---|
| stupac 1 | stupac 2 | stupac 1 | stupac 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
Na primjer:
A ⋈ A.column 2 > B.column 2 (B)
| A ⋈ A. stupac 2 > B. stupac 2 (B) | |
|---|---|
| stupac 1 | stupac 2 |
| 1 | 2 |
EQUI Pridružite se
EQUI Pridružite se se izvodi kada theta spoj koristi samo uvjet ekvivalencije. EQUI spoj je najteža operacija za učinkovitu implementaciju u RDBMS, i to je jedan od razloga zašto RDBMS može imati problema s performansama.
Na primjer:
A ⋈ A.column 2 = B.column 2 (B)
| A ⋈ A. stupac 2 = B. stupac 2 (B) | |
|---|---|
| stupac 1 | stupac 2 |
| 1 | 1 |
Prirodni spoj (⋈)
Prirodni spoj ne koristi nikakav operator usporedbe. U ovoj vrsti spajanja, atributi bi trebali imati isto ime i domenu. U prirodnom spajanju, trebao bi postojati barem jedan zajednički atribut između dvaju odnosa.
Izvodi selekciju formirajući jednakost na atributima koji se pojavljuju u obje relacije i eliminira duplicirane atribute.
Primjer: razmotrite sljedeće dvije tablice.
| C | |
|---|---|
| U | Kvadratni |
| 2 | 4 |
| 3 | 9 |
| D | |
|---|---|
| U | Kocka |
| 2 | 8 |
| 3 | 18 |
C ⋈ D
| C ⋈ D | ||
|---|---|---|
| U | Kvadratni | Kocka |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
Vanjsko pridruživanje
An Vanjsko pridruživanje ne zahtijeva da svaki zapis u dvije spojene tablice ima odgovarajući zapis. U ovoj vrsti spajanja, tablica zadržava svaki zapis čak i ako ne postoji drugi odgovarajući zapis. Tri vrste vanjskog spajanja su:
- Lijevi vanjski spoj
- Desni vanjski spoj
- Potpuno vanjsko pridruživanje
Lijevi vanjski spoj (A ⟕ B)
Lijevi vanjski spoj vraća sve retke iz tablice s lijeve strane, čak i ako se u tablici s desne strane ne pronađu odgovarajući retci. Kada se s desne strane ne pronađe odgovarajući zapis, vraća se null.
Razmotrite sljedeće dvije tablice.
| A | |
|---|---|
| U | Kvadratni |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| B | |
|---|---|
| U | Kocka |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
AB
| A ⟕ B | ||
|---|---|---|
| U | Kvadratni | Kocka |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
Desni vanjski spoj (A ⟖ B)
Desni vanjski spoj vraća sve stupce iz tablice s desne strane, čak i ako se u tablici s lijeve strane ne pronađu odgovarajući retci. Tamo gdje se s lijeve strane ne pronađu odgovarajući retci, vraća se vrijednost null. Desni vanjski spoj je suprotnost lijevom spoju.
AB
| A ⟖ B | ||
|---|---|---|
| U | Kocka | Kvadratni |
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | - |
Potpuni vanjski spoj (A ⟗ B)
U Potpuno vanjsko pridruživanje, sve torke iz obje relacije uključene su u rezultat, bez obzira na uvjet podudaranja.
Primjer:
AB
| A ⟗ B | ||
|---|---|---|
| U | Kvadratni | Kocka |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
| 5 | - | 75 |


