DBMS-koblinger: THETA, indre, ytre, ekvivalente koblingstyper
⚡ Smart oppsummering
Joining i DBMS er en binær operasjon som kombinerer rader fra to eller flere tabeller ved hjelp av primærnøklene og fremmednøklene. Joins deles inn i indre joins, som bare returnerer samsvarende rader, og ytre joins, som beholder ikke-samsvarende rader og fyller mellomrom med null.

Hva er en Join i DBMS?
Bli med i DBMS er en binær operasjon som lar deg kombinere et sammenføyningsprodukt og et utvalg i én setning. Målet med å opprette en sammenføyningsbetingelse er å kombinere dataene fra to eller flere tabeller. Tabellene er tilknyttet ved hjelp av primærnøklene sine og utenlandske nøkler.
Typer bli med
Det er hovedsakelig to typer sammenføyninger i DBMS:
- Indre ledd: Theta, Natural, EQUI
- Ytre skjøter: Venstre, Høyre, Full
Tabellen nedenfor viser en forhåndsvisning av alle sammenføyningstypene før hver enkelt forklares med et eksempel.
| Bli med | Returer | Uoverensstemmende rader |
|---|---|---|
| Indre (Theta / EQUI / Naturlig) | Rader som samsvarer med betingelsen i begge tabellene | droppet |
| Venstre ytre | Alle venstre rader pluss treff | Holdes fra venstre, null på høyre |
| Høyre ytre | Alle riktige rader pluss treff | Holdes fra høyre, null på venstre |
| Full ytre | Alle rader fra begge tabellene | Holdt fra begge, null der det mangler |
Indre sammenføyning
Indre sammenføyning brukes til å returnere rader fra begge tabellene som oppfyller den gitte betingelsen. Det er den mest brukte sammenføyningsoperasjonen og kan betraktes som standard sammenføyningstype.
En indre sammenføyning, eller ekvisammenføyning, er en komparatorbasert sammenføyning som bruker likhetssammenligninger i sammenføyningspredikatet. Men hvis du bruker andre sammenligningsoperatorer som «>», kan den ikke kalles en ekvisammenføyning. Indre sammenføyning er videre delt inn i tre undertyper:
- Theta bli med
- Naturlig sammenføyning
- EQUI bli med
Theta Bli med
Theta Bli med lar deg slå sammen to tabeller basert på betingelsen representert av theta. Theta-sammenslåinger fungerer for alle sammenligningsoperatorer. Det er angitt med symbolet θDet generelle tilfellet for en JOIN-operasjon kalles en theta-join.
Syntaks:
A ⋈θ B
En theta-kobling kan bruke hvilke som helst betingelser i utvalgskriteriene.
Tenk på følgende tabeller.
| Tabell A | Tabell B | |||
|---|---|---|---|---|
| kolonne 1 | kolonne 2 | kolonne 1 | kolonne 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
For eksempel:
A ⋈ A.column 2 > B.column 2 (B)
| A ⋈ A.kolonne 2 > B.kolonne 2 (B) | |
|---|---|
| kolonne 1 | kolonne 2 |
| 1 | 2 |
EQUI Bli med
EQUI Bli med gjøres når en theta-kobling kun bruker ekvivalensbetingelsen. EQUI-kobling er den vanskeligste operasjonen å implementere effektivt i en RDBMS, og det er én av grunnene til at et RDBMS kan ha ytelsesproblemer.
For eksempel:
A ⋈ A.column 2 = B.column 2 (B)
| A ⋈ A.kolonne 2 = B.kolonne 2 (B) | |
|---|---|
| kolonne 1 | kolonne 2 |
| 1 | 1 |
Natural Join (⋈)
Naturlig Bli med bruker ingen sammenligningsoperator. I denne typen sammenføyning bør attributtene ha samme navn og domene. I en naturlig sammenføyning bør det være minst ett felles attributt mellom de to relasjonene.
Den utfører et utvalg som danner likhet på attributtene som vises i begge relasjonene og eliminerer duplikatattributtene.
Eksempel: vurder de følgende to tabellene.
| C | |
|---|---|
| I | Square |
| 2 | 4 |
| 3 | 9 |
| D | |
|---|---|
| I | Cube |
| 2 | 8 |
| 3 | 18 |
C ⋈ D
| C ⋈ D | ||
|---|---|---|
| I | Square | Cube |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
Ytre sammenføyning
An Ytre sammenføyning krever ikke at hver post i de to sammenkoblede tabellene har en samsvarende post. I denne typen sammenkobling beholder tabellen hver post selv om det ikke finnes noen annen samsvarende post. De tre typene ytre sammenkobling er:
- Venstre ytre skjøt
- Høyre ytre skjøt
- Full ytre sammenføyning
Venstre ytre skjøt (A ⟕ B)
Venstre ytre skjøt returnerer alle radene fra tabellen til venstre, selv om ingen samsvarende rader finnes i tabellen til høyre. Når ingen samsvarende poster finnes til høyre, returneres null.
Tenk på de følgende to tabellene.
| A | |
|---|---|
| I | Square |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| B | |
|---|---|
| I | Cube |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
AB
| A ⟕ B | ||
|---|---|---|
| I | Square | Cube |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
Høyre ytre skjøt (A ⟖ B)
Høyre ytre skjøt returnerer alle kolonnene fra tabellen til høyre, selv om ingen samsvarende rader finnes i tabellen til venstre. Der det ikke finnes noen samsvarende rader til venstre, returneres null. En høyre ytre kobling er det motsatte av en venstre kobling.
AB
| A ⟖ B | ||
|---|---|---|
| I | Cube | Square |
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | - |
Full ytre sammenføyning (A ⟗ B)
I en Full ytre sammenføyning, alle tupler fra begge relasjonene er inkludert i resultatet, uavhengig av samsvarsbetingelsen.
Eksempel:
AB
| A ⟗ B | ||
|---|---|---|
| I | Square | Cube |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
| 5 | - | 75 |


