DBMS-joins: THETA, Inner, Outer, Equi-types
⚡ Slimme samenvatting
Een join in een databasemanagementsysteem is een binaire bewerking die rijen uit twee of meer tabellen combineert met behulp van hun primaire en externe sleutels. Joins worden onderverdeeld in inner joins, die alleen overeenkomende rijen retourneren, en outer joins, die niet-overeenkomende rijen behouden en de ontbrekende waarden opvullen met null-waarden.

Wat is een JOIN in een DBMS?
Doe mee met DBMS Een join-voorwaarde is een binaire bewerking waarmee je een join-product en een selectie in één statement kunt combineren. Het doel van een join-voorwaarde is om de gegevens uit twee of meer tabellen te combineren. De tabellen worden gekoppeld met behulp van hun primaire sleutels. buitenlandse sleutels.
Soorten deelname
Er zijn hoofdzakelijk twee soorten joins in DBMS:
- Binnenverbindingen: Theta, Natural, EQUI
- Buitenverbindingen: Links, Rechts, Volledig
De onderstaande tabel geeft een overzicht van alle join-typen, waarna elk type met een voorbeeld wordt toegelicht.
| Open | Retourneren | Niet-overeenkomende rijen |
|---|---|---|
| Innerlijk (Theta / Equili / Natuurlijk) | Rijen die aan de voorwaarde voldoen in beide tabellen | Dropped |
| Linker buitenkant | Alle rijen links plus bijpassende sets | Aan de linkerkant behouden, rechts niets |
| Rechtsbuiten | Alle rijen rechts plus overeenkomsten | Rechts vrijgehouden, links niets |
| Volledige buitenkant | Alle rijen uit beide tabellen | Van beide kanten behouden, null waar ontbrekend |
Innerlijke verbinding
Innerlijke verbinding Deze methode wordt gebruikt om rijen uit beide tabellen te retourneren die aan de gegeven voorwaarde voldoen. Het is de meest gebruikte join-bewerking en kan worden beschouwd als het standaard join-type.
Een inner join, of equijoin, is een join op basis van een comparator die gelijkheidsvergelijkingen gebruikt in het joinpredicaat. Als je echter andere vergelijkingsoperatoren zoals ">" gebruikt, kan het geen equijoin genoemd worden. Inner joins worden verder onderverdeeld in drie subtypes:
- Theta sluit zich aan
- Natuurlijk meedoen
- EQUI sluit zich aan
Theta Doe mee
Theta Doe mee Hiermee kunt u twee tabellen samenvoegen op basis van de voorwaarde die wordt weergegeven door theta. Theta-joins werken voor alle vergelijkingsoperatoren. Het wordt aangeduid met het symbool θDe algemene vorm van een JOIN-bewerking wordt een theta-join genoemd.
Syntax:
A ⋈θ B
Een theta join kan alle voorwaarden in de selectiecriteria gebruiken.
Bekijk de volgende tabellen.
| Tabel A | Tabel B | |||
|---|---|---|---|---|
| kolom 1 | kolom 2 | kolom 1 | kolom 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
Bijvoorbeeld:
A ⋈ A.column 2 > B.column 2 (B)
| A ⋈ A.kolom 2 > B.kolom 2 (B) | |
|---|---|
| kolom 1 | kolom 2 |
| 1 | 2 |
EQUI Doe mee
EQUI Doe mee Dit gebeurt wanneer een theta-join alleen de equivalentievoorwaarde gebruikt. Een EQUI-join is de moeilijkste bewerking om efficiënt te implementeren in een RDBMSEn dat is een van de redenen waarom een RDBMS prestatieproblemen kan hebben.
Bijvoorbeeld:
A ⋈ A.column 2 = B.column 2 (B)
| A ⋈ A.kolom 2 = B.kolom 2 (B) | |
|---|---|
| kolom 1 | kolom 2 |
| 1 | 1 |
Natuurlijke verbinding (⋈)
Natuurlijk toetreden Er wordt geen vergelijkingsoperator gebruikt. Bij dit type join moeten de attributen dezelfde naam en hetzelfde domein hebben. Bij een natuurlijke join moet er minstens één gemeenschappelijk attribuut zijn tussen de twee relaties.
Het voert een selectie uit die gelijkheid creëert op basis van de kenmerken die in beide relaties voorkomen en verwijdert de dubbele kenmerken.
Voorbeeld: Bekijk de volgende twee tabellen.
| C | |
|---|---|
| In | Carré |
| 2 | 4 |
| 3 | 9 |
| D | |
|---|---|
| In | Kubus |
| 2 | 8 |
| 3 | 18 |
C ⋈ D
| C ⋈ D | ||
|---|---|---|
| In | Carré | Kubus |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
buitenste join
An buitenste join Bij dit type join is het niet nodig dat elk record in de twee gekoppelde tabellen een overeenkomend record heeft. De tabel behoudt elk record, zelfs als er geen ander overeenkomend record bestaat. Er zijn drie typen outer joins:
- Linker Outer Join
- Rechts buitenste verbinding
- Volledige Outer Join
Linker buitenverbinding (A ⟕ B)
Linker Outer Join Deze functie retourneert alle rijen uit de tabel aan de linkerkant, zelfs als er geen overeenkomende rijen in de tabel aan de rechterkant worden gevonden. Als er geen overeenkomende record aan de rechterkant wordt gevonden, wordt null geretourneerd.
Bekijk de volgende twee tabellen.
| A | |
|---|---|
| In | Carré |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| B | |
|---|---|
| In | Kubus |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
AB
| A ⟕ B | ||
|---|---|---|
| In | Carré | Kubus |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
Rechter buitenverbinding (A ⟖ B)
Rechts buitenste verbinding Een right outer join retourneert alle kolommen uit de tabel aan de rechterkant, zelfs als er geen overeenkomende rijen in de tabel aan de linkerkant worden gevonden. Als er aan de linkerkant geen overeenkomsten worden gevonden, wordt null geretourneerd. Een right outer join is het tegenovergestelde van een left join.
AB
| A ⟖ B | ||
|---|---|---|
| In | Kubus | Carré |
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | - |
Volledige buitenste verbinding (A ⟗ B)
In een Volledige Outer Join, worden alle tupels uit beide relaties in het resultaat opgenomen, ongeacht de matchingvoorwaarde.
Voorbeeld:
AB
| A ⟗ B | ||
|---|---|---|
| In | Carré | Kubus |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
| 5 | - | 75 |


