Asocieri DBMS: THETA, Interne, Externe, Equivalente Tipuri de Asociere
โก Rezumat inteligent
รntr-un SGBD, o joncศiune este o operaศie binarฤ care combinฤ rรขnduri din douฤ sau mai multe tabele folosind cheile lor primare ศi externe. Join-urile se รฎmpart รฎn join-uri interne, care returneazฤ doar rรขndurile care corespund, ศi join-uri externe, care pฤstreazฤ rรขndurile care nu corespund ศi umplu golurile cu valori nule.

Ce este o joncศiune รฎntr-un SGBD?
Alฤturaศi-vฤ รฎn DBMS este o operaศie binarฤ care vฤ permite sฤ combinaศi un produs de joncศiune ศi o selecศie รฎntr-o singurฤ instrucศiune. Scopul creฤrii unei condiศii de joncศiune este de a combina datele din douฤ sau mai multe tabele. Tabelele sunt asociate folosind cheile lor primare ศi chei strฤine.
Tipuri de alฤturare
Existฤ รฎn principal douฤ tipuri de รฎmbinฤri รฎn DBMS:
- Imbinari interioare: Theta, Natural, EQUI
- รmbinฤri exterioare: Stรขnga, Dreapta, Completฤ
Tabelul de mai jos prezintฤ o previzualizare a tuturor tipurilor de รฎmbinare รฎnainte ca fiecare sฤ fie explicat cu un exemplu.
| Alatura-te | Returnฤri | Rรขnduri nepotrivite |
|---|---|---|
| Interior (Theta / EQUI / Natural) | Rรขnduri care corespund condiศiei รฎn ambele tabele | A scฤzut |
| Stรขnga Exterior | Toate rรขndurile din stรขnga plus potrivirile | Pฤstrat din stรขnga, nul รฎn dreapta |
| Dreapta Exterior | Toate rรขndurile din dreapta plus potrivirile | Pฤstrat la dreapta, nul la stรขnga |
| Exterior complet | Toate rรขndurile din ambele tabele | Pฤstrat de la ambele pฤrศi, nul unde lipseศte |
Alฤturare interioarฤ
Alฤturare interioarฤ este utilizatฤ pentru a returna rรขnduri din ambele tabele care รฎndeplinesc condiศia datฤ. Este cea mai utilizatฤ operaศie de unire ศi poate fi consideratฤ tipul implicit de unire.
O joncศiune internฤ, sau echijoin, este o joncศiune bazatฤ pe comparatoare care utilizeazฤ comparaศii de egalitate รฎn predicatul joncศiunii. Cu toate acestea, dacฤ utilizaศi alศi operatori de comparaศie, cum ar fi โ>โ, nu poate fi numitฤ echijoin. Join-ul intern este รฎmpฤrศit รฎn continuare รฎn trei subtipuri:
- Theta se alฤturฤ
- Unire naturalฤ
- EQUI se alฤturฤ
Theta Join
Theta Join vฤ permite sฤ รฎmbinaศi douฤ tabele pe baza condiศiei reprezentate de theta. Join-urile theta funcศioneazฤ pentru toศi operatorii de comparaศie. Sunt notate cu simbolul ฮธCazul general al unei operaศii JOIN se numeศte theta join.
Sintaxฤ:
A โฮธ B
O joncศiune theta poate utiliza orice condiศii รฎn criteriile de selecศie.
Luaศi รฎn considerare urmฤtoarele tabele.
| Tabelul A | Tabelul B | |||
|---|---|---|---|---|
| coloana 1 | coloana 2 | coloana 1 | coloana 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
De exemplu:
A โ A.column 2 > B.column 2 (B)
| A โ A.coloana 2 > B.coloana 2 (B) | |
|---|---|
| coloana 1 | coloana 2 |
| 1 | 2 |
Alฤturaศi-vฤ EQUI
Alฤturaศi-vฤ EQUI se realizeazฤ atunci cรขnd o joncศiune theta foloseศte doar condiศia de echivalenศฤ. Join-ul EQUI este cea mai dificilฤ operaศie de implementat eficient รฎntr-un RDBMSศi acesta este unul dintre motivele pentru care un RDBMS poate avea probleme de performanศฤ.
De exemplu:
A โ A.column 2 = B.column 2 (B)
| A โ A.coloana 2 = B.coloana 2 (B) | |
|---|---|
| coloana 1 | coloana 2 |
| 1 | 1 |
Asociere naturalฤ (โ)
Asociere naturalฤ nu foloseศte niciun operator de comparaศie. รn acest tip de joncศiune, atributele ar trebui sฤ aibฤ acelaศi nume ศi domeniu. รntr-o joncศiune naturalฤ, ar trebui sฤ existe cel puศin un atribut comun รฎntre cele douฤ relaศii.
Efectueazฤ o selecศie care formeazฤ egalitatea asupra atributelor care apar รฎn ambele relaศii ศi eliminฤ atributele duplicate.
Exemplu: luaศi รฎn considerare urmฤtoarele douฤ tabele.
| C | |
|---|---|
| รn | Pฤtratฤ |
| 2 | 4 |
| 3 | 9 |
| D | |
|---|---|
| รn | Cub |
| 2 | 8 |
| 3 | 18 |
C โ D
| C โ D | ||
|---|---|---|
| รn | Pฤtratฤ | Cub |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
Alฤturare exterioarฤ
An Alฤturare exterioarฤ nu necesitฤ ca fiecare รฎnregistrare din cele douฤ tabele unite sฤ aibฤ o รฎnregistrare corespondentฤ. รn acest tip de unire, tabelul pฤstreazฤ fiecare รฎnregistrare chiar dacฤ nu existฤ nicio altฤ รฎnregistrare corespondentฤ. Cele trei tipuri de unire externฤ sunt:
- Stรขnga la exterior
- Alฤturaศi-vฤ la dreapta
- Alฤturare completฤ exterioarฤ
รmbinare exterioarฤ stรขngฤ (A โ B)
Stรขnga la exterior returneazฤ toate rรขndurile din tabelul din stรขnga, chiar dacฤ nu se gฤsesc rรขnduri corespondente รฎn tabelul din dreapta. Cรขnd nu se gฤseศte nicio รฎnregistrare corespondentฤ รฎn dreapta, se returneazฤ null.
Luaศi รฎn considerare urmฤtoarele douฤ tabele.
| A | |
|---|---|
| รn | Pฤtratฤ |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| B | |
|---|---|
| รn | Cub |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
AB
| A โ B | ||
|---|---|---|
| รn | Pฤtratฤ | Cub |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
รmbinare exterioarฤ dreaptฤ (A โ B)
Alฤturaศi-vฤ la dreapta returneazฤ toate coloanele din tabelul din dreapta, chiar dacฤ nu se gฤsesc rรขnduri corespondente รฎn tabelul din stรขnga. รn cazul รฎn care nu se gฤsesc corespondenศe รฎn stรขnga, se returneazฤ valoarea null. O joncศiune externฤ la dreapta este opusul unei joncศiuni la stรขnga.
AB
| A โ B | ||
|---|---|---|
| รn | Cub | Pฤtratฤ |
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | - |
รmbinare externฤ completฤ (A โ B)
รntr-o Alฤturare completฤ exterioarฤ, toate tuplurile din ambele relaศii sunt incluse รฎn rezultat, indiferent de condiศia de potrivire.
Exemplu:
AB
| A โ B | ||
|---|---|---|
| รn | Pฤtratฤ | Cub |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | - |
| 5 | - | 75 |


