Typy spojení DBMS: THETA, vnitřní, vnější, rovnocenné

⚡ Chytré shrnutí

Jídlo v DBMS je binární operace, která kombinuje řádky ze dvou nebo více tabulek pomocí jejich primárních a cizích klíčů. Jídla se dělí na vnitřní, která vracejí pouze shodné řádky, a vnější, která ponechávají neshodné řádky a mezery vyplňují hodnotou null.

  • 🔗 Hlavní účel: Jídelní operace sloučí související tabulky do jedné sady výsledků na základě podmínky spojení.
  • 🎯 Vnitřní spojení: Vrátí pouze řádky, které splňují podmínku v obou tabulkách; výchozí typ spojení.
  • 📐 Theta a EQUI: Theta join používá libovolný porovnávací operátor; EQUI join používá pouze rovnost.
  • 🔄 Přirozené spojení: Porovnává atributy se shodnými názvy a odstraňuje duplicitní sloupec.
  • ⬅️ Levý vnější spoj: Zachovává každý řádek z levé tabulky a doplňuje hodnotu null tam, kde pravý nenajde shodu.
  • ➡️ Pravý vnější spoj: Zachovává každý řádek z pravé tabulky a doplňuje hodnotu null tam, kde levý nenachází shodu.
  • 🌐 Úplné vnější spojení: Zachová všechny řádky z obou tabulek bez ohledu na shodu.

Spojuje v DBMS Left Right

Co je to spojení v DBMS?

Připojte se k DBMS je binární operace, která umožňuje kombinovat součin spojení a výběr v jednom příkazu. Cílem vytvoření podmínky spojení je kombinovat data ze dvou nebo více tabulek. Tabulky jsou asociovány pomocí svých primárních klíčů a cizí klíče.

Typy spojení

V DBMS existují hlavně dva typy spojení:

  1. Vnitřní spojení: Theta, Natural, EQUI
  2. Vnější spojení: levé, pravé, plné

Níže uvedená tabulka zobrazuje náhled všech typů spojení, než je každý z nich vysvětlen na příkladu.

Připojte Vrácení zboží Nepárové řádky
Vnitřní (Theta / EQUI / Přírodní) Řádky odpovídající podmínce v obou tabulkách Ukončena
Levý vnější Všechny levé řádky plus shody Zleva ponecháno, vpravo null
Pravý vnější Všechny řádky vpravo plus zápalky Zprava zachováno, zleva null
Plný vnější Všechny řádky z obou tabulek Uchováváno z obou, chybí null

Vnitřní spojení

Vnitřní spojení se používá k vrácení řádků z obou tabulek, které splňují danou podmínku. Je to nejpoužívanější operace spojení a lze ji považovat za výchozí typ spojení.

Vnitřní spojení neboli ekvijoin je spojení založené na porovnávání, které v predikátu spojení používá porovnávání rovnosti. Pokud však použijete jiné porovnávací operátory, jako například „>“, nelze jej nazvat ekvijoinem. Vnitřní spojení se dále dělí na tři podtypy:

  • Připojte se k Theta
  • Přirozené spojení
  • Připojte se EQUI

Theta Připojte se

Theta Připojte se umožňuje sloučit dvě tabulky na základě podmínky reprezentované funkcí theta. Funkce theta spojuje práci pro všechny porovnávací operátory. Označuje se symbolem θObecný případ operace JOIN se nazývá theta join.

Syntaxe:

A ⋈θ B

Theta spojení může v kritériích výběru použít libovolné podmínky.

Zvažte následující tabulky.

Tabulka A Tabulka B
sloupec 1 sloupec 2 sloupec 1 sloupec 2
1 1 1 1
1 2 1 3

Například:

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

EQUI Připojte se

EQUI Připojte se se provádí, když theta join používá pouze podmínku ekvivalence. EQUI join je nejobtížnější operací k efektivní implementaci v RDBMSa to je jeden z důvodů, proč může mít RDBMS problémy s výkonem.

Například:

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

Přirozené spojení (⋈)

Přirozené spojení nepoužívá žádný porovnávací operátor. V tomto typu spojení by atributy měly mít stejný název a doménu. V přirozeném spojení by měl existovat alespoň jeden společný atribut mezi oběma relacemi.

Provádí výběr, který vytváří rovnost u atributů, které se objevují v obou relacích, a eliminuje duplicitní atributy.

Příklad: Zvažte následující dvě tabulky.

C
V náměstí
2 4
3 9
D
V Kostka
2 8
3 18
C ⋈ D
C⋈ D
V náměstí Kostka
2 4 8
3 9 18

Vnější připojení

An Vnější připojení nevyžaduje, aby každý záznam ve dvou spojených tabulkách měl odpovídající záznam. V tomto typu spojení si tabulka zachová každý záznam, i když neexistuje žádný jiný odpovídající záznam. Existují tři typy vnějšího spojení:

  • Levý vnější spoj
  • Pravé vnější spojení
  • Úplné vnější připojení

Levý vnější spoj (A ⟕ B)

Levý vnější spoj vrátí všechny řádky z tabulky vlevo, i když v tabulce vpravo nejsou nalezeny žádné odpovídající řádky. Pokud vpravo není nalezen žádný odpovídající záznam, vrátí se hodnota null.

Levý vnější spoj

Zvažte následující dvě tabulky.

A
V náměstí
2 4
3 9
4 16
B
V Kostka
2 8
3 18
5 75
A Left Outer Join B
A ⟕ B
V náměstí Kostka
2 4 8
3 9 18
4 16 -

Pravé vnější spojení (A ⟖ B)

Pravé vnější spojení Vrací všechny sloupce z tabulky vpravo, i když v tabulce vlevo nejsou nalezeny žádné odpovídající řádky. Pokud vlevo nejsou nalezeny žádné shody, vrátí se hodnota null. Pravé vnější spojení je opakem levého spojení.

Pravé vnější spojení

A Right Outer Join B
A ⟖ B
V Kostka náměstí
2 8 4
3 18 9
5 75 -

Úplné vnější spojení (A ⟗ B)

V Úplné vnější připojení, všechny n-tice z obou vztahů jsou zahrnuty do výsledku, bez ohledu na podmínku shody.

Příklad:

A Full Outer Join B
A ⟗ B
V náměstí Kostka
2 4 8
3 9 18
4 16 -
5 - 75

Nejčastější dotazy

Vnitřní spojení vrací pouze řádky, které se shodují v obou tabulkách. Vnější spojení také zachovává neshodující se řádky z jedné nebo obou tabulek a chybějící stranu vyplňuje hodnotou null.

Theta join může používat libovolný porovnávací operátor, například „větší než“ nebo „menší než“. EQUI join je theta join omezený na operátor rovnosti, takže porovnává pouze stejné hodnoty.

Oba se shodují na základě rovnosti, ale přirozené spojení se automaticky shoduje na identicky pojmenovaných sloupcích a odstraní duplicitní sloupec. Spojení EQUI explicitně pojmenuje podmínku a zachová oba sloupce.

Ano. Vzhledem k danému schématu a otázce může umělá inteligence zvolit typ spojení a klíče, například levé spojení, aby zákazníci neměli žádné objednávky. Potvrďte výsledek, protože nesprávné spojení změní počet řádků.

Ano. Umělá inteligence dokáže rozpoznat, že klíč spojení není na jedné straně jedinečný, což vede k explozi mnohonásobných shod, a navrhne přidání podmínky nebo nejprve agregaci, aby se každá shoda započítávala jednou.

Shrňte tento příspěvek takto: