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.

  • ๐Ÿ”— Scop principal: O joncศ›iune รฎmbinฤƒ tabelele corelate รฎntr-un singur set de rezultate pe baza unei condiศ›ii de joncศ›iune.
  • ๐ŸŽฏ Alฤƒturare interioarฤƒ: Returneazฤƒ doar rรขndurile care รฎndeplinesc condiศ›ia รฎn ambele tabele; tipul implicit de joncศ›iune.
  • ๐Ÿ“ Theta ศ™i EQUI: O joncศ›iune theta foloseศ™te orice operator de comparaศ›ie; o joncศ›iune EQUI foloseศ™te doar egalitatea.
  • ๐Ÿ”„ รŽmbinare naturalฤƒ: Se potriveศ™te cu atribute cu nume identice ศ™i eliminฤƒ coloana duplicatฤƒ.
  • โฌ…๏ธ Unire exterioarฤƒ stรขngฤƒ: Pฤƒstreazฤƒ fiecare rรขnd din tabelul din stรขnga, completรขnd cu null acolo unde cel din dreapta nu are potrivire.
  • โžก๏ธ Unire exterioarฤƒ dreaptฤƒ: Pฤƒstreazฤƒ fiecare rรขnd din tabelul din dreapta, completรขnd cu null unde cel din stรขnga nu are potrivire.
  • ๐ŸŒ Alฤƒturare exterioarฤƒ completฤƒ: Pฤƒstreazฤƒ toate rรขndurile din ambele tabele, indiferent de potrivire.

Join-uri รฎn SGBD Stรขnga Dreapta

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:

  1. Imbinari interioare: Theta, Natural, EQUI
  2. รŽ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.

Stรขnga la exterior

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
A Left Outer Join B
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.

Alฤƒturaศ›i-vฤƒ la dreapta

A Right Outer Join B
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:

A Full Outer Join B
A โŸ— B
รŽn Pฤƒtratฤƒ Cub
2 4 8
3 9 18
4 16 -
5 - 75

รŽntrebฤƒri frecvente

O joncศ›iune internฤƒ returneazฤƒ doar rรขndurile care se potrivesc รฎn ambele tabele. O joncศ›iune externฤƒ pฤƒstreazฤƒ, de asemenea, rรขndurile nepotrivite din unul sau ambele tabele, completรขnd partea lipsฤƒ cu valori nule.

O joncศ›iune theta poate utiliza orice operator de comparaศ›ie, cum ar fi mai mare decรขt sau mai mic decรขt. O joncศ›iune EQUI este o joncศ›iune theta restricศ›ionatฤƒ la operatorul de egalitate, deci se potriveศ™te doar cu valori egale.

Ambele se potrivesc pe bazฤƒ de egalitate, dar o joncศ›iune naturalฤƒ se potriveศ™te automat pe coloanele cu nume identice ศ™i eliminฤƒ coloana duplicatฤƒ. O joncศ›iune EQUI denumeศ™te condiศ›ia explicit ศ™i pฤƒstreazฤƒ ambele coloane.

Da. Avรขnd รฎn vedere schema ศ™i รฎntrebarea, inteligenศ›a artificialฤƒ poate alege tipul de joncศ›iune ศ™i cheile, de exemplu o joncศ›iune la stรขnga pentru a pฤƒstra clienศ›ii fฤƒrฤƒ comenzi. Confirmaศ›i rezultatul, deoarece o joncศ›iune greศ™itฤƒ modificฤƒ numฤƒrul de rรขnduri.

Da. Inteligenศ›a artificialฤƒ poate detecta dacฤƒ cheia de asociere nu este unicฤƒ pe o parte, producรขnd o explozie de tip โ€žmany-to-manyโ€ ศ™i poate sugera adฤƒugarea unei condiศ›ii sau agregarea mai รฎntรขi, astfel รฎncรขt fiecare potrivire sฤƒ fie numฤƒratฤƒ o singurฤƒ datฤƒ.

Rezumaศ›i aceastฤƒ postare cu: