DBMS-kopplingar: THETA, Inner, Outer, Equi-kopplingstyper

⚡ Smart sammanfattning

Join i DBMS är en binär operation som kombinerar rader från två eller flera tabeller med hjälp av deras primära och främmande nycklar. Joins delas upp i inner joins, som endast returnerar matchande rader, och outer joins, som behåller omatchade rader och fyller luckor med null.

  • 🔗 Kärnsyfte: En koppling sammanfogar relaterade tabeller till en enda resultatuppsättning baserat på ett kopplingsvillkor.
  • 🎯 Inre koppling: Returnerar endast rader som uppfyller villkoret i båda tabellerna; standardkopplingstypen.
  • 📐 Theta och EQUI: En theta-join använder valfri jämförelseoperator; en EQUI-join använder endast likhet.
  • 🔄 Naturlig koppling: Matchar attribut med identiskt namn och tar bort den dubbla kolumnen.
  • ⬅️ Vänster yttre skarv: Behåller varje rad från den vänstra tabellen och fyller null där den högra inte har någon matchning.
  • ➡️ Höger yttre skarv: Behåller varje rad från den högra tabellen och fyller null där den vänstra inte har någon matchning.
  • 🌐 Fullständig yttre sammanfogning: Behåller alla rader från båda tabellerna oavsett matchning.

Går med i DBMS Vänster Höger

Vad är en Join i ett DBMS?

Gå med i DBMS är en binär operation som låter dig kombinera en join-produkt och ett urval i en enda sats. Målet med att skapa ett join-villkor är att kombinera data från två eller flera tabeller. Tabellerna associeras med hjälp av sina primärnycklar och utländska nycklar.

Typer av gå med

Det finns huvudsakligen två typer av kopplingar i DBMS:

  1. Inre leder: Theta, Natural, EQUI
  2. Yttre skarvar: Vänster, Höger, Full

Tabellen nedan förhandsgranskar alla kopplingstyper innan varje förklaras med ett exempel.

Ansluta sig Returer Omatchade rader
Inre (Theta / EQUI / Naturlig) Rader som matchar villkoret i båda tabellerna Tappade
Vänster yttre Alla vänstra rader plus träffar Hålls från vänster, null till höger
Höger yttre Alla högra rader plus matchningar Hålls från höger, null till vänster
Fullständig yttre Alla rader från båda tabellerna Undantaget från båda, null där det saknas

Inre koppling

Inre koppling används för att returnera rader från båda tabellerna som uppfyller det givna villkoret. Det är den mest använda kopplingsoperationen och kan betraktas som standardkopplingstypen.

En inner join, eller equijoin, är en jämförelsebaserad join som använder likhetsjämförelser i join-predikatet. Men om du använder andra jämförelseoperatorer som ">" kan den inte kallas en equijoin. Inner join är vidare indelad i tre undertyper:

  • Theta går med
  • Naturlig anslutning
  • EQUI gå med

Theta Gå med

Theta Gå med låter dig slå samman två tabeller baserat på villkoret som representeras av theta. Theta-kopplingar fungerar för alla jämförelseoperatorer. Det betecknas med symbolen θDet allmänna fallet med en JOIN-operation kallas en theta-join.

Syntax:

A ⋈θ B

En theta-koppling kan använda vilka villkor som helst i urvalskriterierna.

Tänk på följande tabeller.

Tabell A Tabell B
kolumn 1 kolumn 2 kolumn 1 kolumn 2
1 1 1 1
1 2 1 3

Till exempel:

A ⋈ A.column 2 > B.column 2 (B)
A ⋈ A.kolumn 2 > B.kolumn 2 (B)
kolumn 1 kolumn 2
1 2

EQUI Gå med

EQUI Gå med görs när en theta-join endast använder ekvivalensvillkoret. EQUI-join är den svåraste operationen att implementera effektivt i en RDBMS, och det är en anledning till varför ett RDBMS kan ha prestandaproblem.

Till exempel:

A ⋈ A.column 2 = B.column 2 (B)
A ⋈ A.kolumn 2 = B.kolumn 2 (B)
kolumn 1 kolumn 2
1 1

Naturlig gå med (⋈)

Naturlig gå med använder ingen jämförelseoperator. I den här typen av koppling bör attributen ha samma namn och domän. I en naturlig koppling bör det finnas minst ett gemensamt attribut mellan de två relationerna.

Den utför ett urval som skapar likhet på de attribut som förekommer i båda relationerna och eliminerar de dubbla attributen.

Exempel: betrakta följande två tabeller.

C
I Fyrkant
2 4
3 9
D
I Cube
2 8
3 18
C ⋈ D
C ⋈ D
I Fyrkant Cube
2 4 8
3 9 18

Yttre anslutning

An Yttre anslutning kräver inte att varje post i de två kopplade tabellerna har en matchande post. I den här typen av koppling behåller tabellen varje post även om ingen annan matchande post finns. De tre typerna av yttre kopplingar är:

  • Vänster yttre anslutning
  • Höger yttre anslutning
  • Full yttre anslutning

Vänster yttre skarv (A ⟕ B)

Vänster yttre anslutning returnerar alla rader från tabellen till vänster, även om inga matchande rader hittas i tabellen till höger. När ingen matchande post hittas till höger returneras null.

Vänster yttre anslutning

Betrakta följande två tabeller.

A
I Fyrkant
2 4
3 9
4 16
B
I Cube
2 8
3 18
5 75
A Left Outer Join B
A ⟕ B
I Fyrkant Cube
2 4 8
3 9 18
4 16 -

Höger yttre skarv (A ⟖ B)

Höger yttre anslutning returnerar alla kolumner från tabellen till höger, även om inga matchande rader hittas i tabellen till vänster. Om inga matchningar hittas till vänster returneras null. En höger yttre koppling är motsatsen till en vänster koppling.

Höger yttre anslutning

A Right Outer Join B
A ⟖ B
I Cube Fyrkant
2 8 4
3 18 9
5 75 -

Fullständig yttre koppling (A ⟗ B)

I en Full yttre anslutning, alla tupler från båda relationerna ingår i resultatet, oavsett matchningsvillkor.

Exempel:

A Full Outer Join B
A ⟗ B
I Fyrkant Cube
2 4 8
3 9 18
4 16 -
5 - 75

Vanliga frågor

En inner join returnerar endast rader som matchar i båda tabellerna. En yttre join behåller också omatchade rader från en eller båda tabellerna och fyller den saknade sidan med null.

En theta-join kan använda vilken jämförelseoperator som helst, till exempel större än eller mindre än. En EQUI-join är en theta-join som är begränsad till likhetsoperatorn, så den matchar bara lika värden.

Båda matchar vid likhet, men en naturlig koppling matchar automatiskt på identiskt namngivna kolumner och tar bort den dubbla kolumnen. En EQUI-koppling namnger villkoret explicit och behåller båda kolumnerna.

Ja. Med tanke på schemat och frågan kan AI välja kopplingstyp och nycklar, till exempel en vänsterkoppling för att hålla kunder utan beställningar. Bekräfta resultatet, eftersom en felaktig koppling ändrar radantalet.

Ja. AI kan upptäcka att kopplingsnyckeln inte är unik på ena sidan, vilket skapar en många-till-många-explosion, och föreslå att man lägger till ett villkor eller aggregerar först så att varje matchning räknas en gång.

Sammanfatta detta inlägg med: