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.

  • 🔗 Kerndoel: Een join voegt gerelateerde tabellen samen tot één resultaatset op basis van een joinvoorwaarde.
  • 🎯 Innerlijke verbinding: Geeft alleen rijen terug die in beide tabellen aan de voorwaarde voldoen; dit is het standaard type koppeling.
  • 📐 Theta en EQUI: Een theta join gebruikt elke vergelijkingsoperator; een EQUI join gebruikt alleen gelijkheid.
  • 🔄 Natuurlijke verbinding: Zoekt naar identiek benoemde attributen en verwijdert de dubbele kolom.
  • ⬅️ Linker buitenste verbinding: Behoudt elke rij uit de linkertabel en vult deze aan met null waar de rechtertabel geen overeenkomst heeft.
  • ➡️ Rechter buitenste verbinding: Behoudt elke rij uit de rechtertabel en vult deze aan met null-waarden waar de linkertabel geen overeenkomst heeft.
  • 🌐 Volledige buitenste verbinding: Behoudt alle rijen uit beide tabellen, ongeacht of ze overeenkomen.

Joins in DBMS Links Rechts

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:

  1. Binnenverbindingen: Theta, Natural, EQUI
  2. 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.

Linker Outer Join

Bekijk de volgende twee tabellen.

A
In Carré
2 4
3 9
4 16
B
In Kubus
2 8
3 18
5 75
A Left Outer Join B
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.

Rechts buitenste verbinding

A Right Outer Join B
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:

A Full Outer Join B
A ⟗ B
In Carré Kubus
2 4 8
3 9 18
4 16 -
5 - 75

Veelgestelde vragen

Een inner join retourneert alleen rijen die in beide tabellen overeenkomen. Een outer join behoudt ook niet-overeenkomende rijen uit één of beide tabellen en vult de ontbrekende rijen aan met null.

Een theta-join kan elke vergelijkingsoperator gebruiken, zoals groter dan of kleiner dan. Een EQUI-join is een theta-join die beperkt is tot de gelijkheidsoperator, waardoor deze alleen gelijke waarden matcht.

Beide joins matchen op gelijkheid, maar een natuurlijke join matcht automatisch op kolommen met dezelfde naam en verwijdert de dubbele kolom. Een EQUI join benoemt de voorwaarde expliciet en behoudt beide kolommen.

Ja. Gezien het schema en de vraag kan de AI het juiste join-type en de juiste sleutels kiezen, bijvoorbeeld een left join om klanten zonder bestellingen te behouden. Bevestig het resultaat, want een onjuiste join kan het aantal rijen beïnvloeden.

Ja. AI kan detecteren dat de koppelingssleutel aan één kant niet uniek is, wat een vele-op-vele-relatie veroorzaakt, en kan voorstellen om een ​​voorwaarde toe te voegen of eerst te aggregeren, zodat elke overeenkomst slechts één keer wordt geteld.

Vat dit bericht samen met: