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: