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.
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í:
- Vnitřní spojení: Theta, Natural, EQUI
- 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.
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 |
AB
| 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í.
AB
| 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:
AB
| A ⟗ B | ||
|---|---|---|
| V | náměstí | Kostka |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
| 5 | - | 75 |



