Algebră relațională în SGBD cu exemple
⚡ Rezumat inteligent
Algebra relațională în SGBD este un limbaj de interogare procedural care preia relații ca intrare și produce noi relații ca ieșire. Grupează operatorii în categorii unare, mulțimi și binare, oferind fundamentul teoretic pe care motoarele SQL îl traduc în planuri de interogare executabile.

Ce este algebra relațională?
Algebra relațională este un limbaj de interogare procedural care acceptă instanțe de relații ca intrare și returnează noi instanțe de relații ca ieșire. Aplică recursiv un set fix de operatori asupra uneia sau mai multor relații, iar rezultatul fiecărui operator este el însuși o relație care poate fi introdusă în următoarea operație. Motoarele SQL se bazează pe această algebră pentru a planifica și executa interogări.
Algebră relațională de bază Operații
Operatorii de algebră relațională se împart în trei grupuri.
Relațional unare Operații
- SELECTARE (σ)
- PROIECT (π)
- REDENUMIRE (ρ)
OperaTeoria mulțimilor
- UNIUNE (∪)
- INTERSECȚIE (∩)
- DIFERENȚĂ (−)
- PRODUS CARTEZIAN (×)
Relațional binar Operații
- JOIN
- DIVISION
Secțiunile de mai jos prezintă fiecare operator cu exemple practice.
SELECTARE (σ)
SELECT Operația alege un subset de tupluri care satisfac un predicat dat. Simbolul sigma σ o denotă:
σp(r)
Unde σ este operatorul, p este condiția propozițională și r este relația (tabelul). SELECT păstrează schema și elimină rândurile care nu îndeplinesc predicatul.
Exemplu 1
σ topic = "Database" (Tutorials)
Selectează tupluri din Tutoriale unde subiectul este egal cu „Bază de date”.
Exemplu 2
σ topic = "Database" AND author = "guru99" (Tutorials)
Selectează tupluri din Tutoriale unde subiectul este „Bază de date”, iar autorul este guru99.
Exemplu 3
σ sales > 50000 (Customers)
Selectează tupluri din clienţii care a căror valoare a vânzărilor este mai mare de 50,000.
Proiecție (π)
proiectare Operatorul elimină fiecare atribut din relația de intrare, cu excepția celor enumerate, producând un subset vertical. Proiecția elimină, de asemenea, rândurile duplicate care rezultă din eliminareaping atribute. Simbolul pi π o denotă.
Exemplu: luați în considerare tabelul următor.
| Număr de înregistrare client | Numele clientului | Stare |
|---|---|---|
| 1 | Activ | |
| 2 | Amazon | Activ |
| 3 | Apple | Inactiv |
| 4 | Alibaba | Activ |
Proiectare pe CustomerName și Status:
π CustomerName, Status (Customers)
| Numele clientului | Stare |
|---|---|
| Activ | |
| Amazon | Activ |
| Apple | Inactiv |
| Alibaba | Activ |
Redenumiți (ρ)
redenumi Operatorul este o operație unară care dă un nume nou unui atribut (sau unei relații întregi). De exemplu, ρ(a/b) R redenumește atributul b de relație R la aRedenumirea este utilă în special atunci când trebuie să efectuați o auto-jungere sau să uniți două relații care au în comun nume de atribute.
Uniune Operațiune (∪)
UNIUNE operator, notat cu ∪, returnează fiecare tuplu care apare fie în relația A, fie în relația B, eliminând automat duplicatele.
Result ← A ∪ B
Pentru ca o uniune să fie validă:
- A și B trebuie să aibă același număr de atribute (aceeași aritate).
- Domeniile de atribute corespunzătoare trebuie să fie compatibile.
- Tuplurile duplicate sunt eliminate automat.
Exemplu. Luați în considerare aceste două tabele:
| Tabelul A | Tabelul B | |||
|---|---|---|---|---|
| coloana 1 | coloana 2 | coloana 1 | coloana 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
A ∪ B ofera:
| coloana 1 | coloana 2 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
Diferența seturilor (−)
Simbolul minus indică diferență de set. Rezultatul A − B este o relație care conține toate tuplurile care se află în A, dar nu și în B.
- A și B trebuie să fie compatibile cu uniunile.
- Numele atributelor și domeniile trebuie să fie aliniate.
Exemplu: A − B
| coloana 1 | coloana 2 |
|---|---|
| 1 | 2 |
Intersecție (∩)
intersecție operator, notat cu ∩, definește o relație care conține fiecare tuplu care apare atât în A, cât și în B. A și B trebuie să fie compatibile cu uniunile.
Definiția vizuală a intersecției.
Exemplu: A ∩ B
| coloana 1 | coloana 2 |
|---|---|
| 1 | 1 |
Produsul cartezian (×) în SGBD
produs cartezian combină fiecare tuplu al unei relații cu fiecare tuplu al alteia, fuzionând coloanele acestora. Rezultatul este rareori util de sine stătător, dar combinat cu un predicat SELECT devine fundamentul JOIN. Se mai numește și produs vectorial sau cross join.
Exemplu: σ coloana 2 = '1' (A × B)
Expresia returnează fiecare rând de A × B a caror column 2 valoarea este 1.
| coloana 1 | coloana 2 |
|---|---|
| 1 | 1 |
| 1 | 1 |
Alatura-te Operații
A alătura este un produs cartezian urmat de un predicat de selecție. Join-urile sunt notate cu ⋈ simbol și vă permit să combinați tupluri înrudite din diferite relații într-un mod semnificativ.
Tipuri de îmbinare:
- Îmbinare interioară: Îmbinare theta, îmbinare equi, îmbinare naturală.
- Îmbinări exterioare: Îmbinare externă stângă, dreaptă și completă.
Alăturare interioară
Într-o îmbinare interioară, sunt incluse doar tuplurile care îndeplinesc criteriile de potrivire; restul sunt eliminate.
Theta Join
Forma generală a lui JOIN este Theta se alătură, notată cu θ. Join-ul theta poate folosi orice condiție de comparație în criteriile sale de selecție.
A ⋈θ B
De exemplu:
A ⋈ A.column 2 > B.column 2 (B)
| coloana 1 | coloana 2 |
|---|---|
| 1 | 2 |
Equi Join
Când o joncțiune Theta folosește doar condiții de egalitate, devine o Îmbinare echitabilă.
A ⋈ A.column 2 = B.column 2 (B)
| coloana 1 | coloana 2 |
|---|---|
| 1 | 1 |
Equi join este unul dintre cele mai utilizate stiluri de îmbinare și RDBMS optimizatorul de interogări depune de obicei eforturi semnificative pentru a-l face eficient.
Asociere naturală (⋈)
A Unire naturală necesită un atribut (coloană) comun între relații. Atributul partajat trebuie să aibă același nume și domeniu. Rezultatul conține o copie a coloanei corespunzătoare.
Luați în considerare aceste două tabele.
| Tabelul C | |
|---|---|
| În | Pătrată |
| 2 | 4 |
| 3 | 9 |
| Tabelul D | |
|---|---|
| În | Cub |
| 2 | 8 |
| 3 | 27 |
C ⋈ D produce:
| În | Pătrată | Cub |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Alăturare exterioară
An îmbinare exterioară păstrează tuplurile care îndeplinesc criteriile de potrivire și tupluri care nu, umplerea coloanelor lipsă cu NULL.
Îmbinare exterioară stângă (A ⟕ B)
Join-ul extern stâng păstrează fiecare tuplu în relația din stânga. Dacă un rând din A nu are un rând corespondent în B, atributele contribuite de B sunt completate cu NULL.
Luați în considerare următoarele tabele:
| Tabelul A | |
|---|---|
| În | Pătrată |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Tabelul B | |
|---|---|
| În | Cub |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A ⟕ B ofera:
| În | Pătrată | Cub |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
Îmbinare exterioară dreaptă (A ⟖ B)
Join-ul extern drept menține fiecare tuplu în relația corectă. Dacă un rând din B nu are un rând corespondent în A, coloanele contribuite de A sunt umplute cu NULL.
A ⟖ B ofera:
| În | Cub | Pătrată |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL |
Îmbinare externă completă (A ⟗ B)
Join-ul extern complet păstrează fiecare tuplu din ambele relații, indiferent dacă condiția de join-ul s-a potrivit sau nu. Valorile lipsă de pe ambele părți devin NULL.
A ⟗ B ofera:
| În | Pătrată | Cub |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
| 5 | NULL | 75 |
OperaRezumatul referinței tor
Folosește acest tabel de referință pentru a-ți aminti dintr-o privire ce face fiecare operator.
| Operațiune (Simbol) | Scop |
|---|---|
| SELECTARE (σ) | Selectează un subset de tupluri care satisfac un predicat dat. |
| PROIECT (π) | Păstrează doar atributele listate și elimină rândurile duplicate. |
| UNIUNE (∪) | Returnează fiecare tuplu care apare în A sau B fără duplicate. |
| SET DIFERENȚĂ (−) | Returnează tupluri din A care nu se află în B. |
| INTERSECȚIE (∩) | Returnează tuplurile care apar atât în A, cât și în B. |
| PRODUS CARTEZIAN (×) | Combină fiecare tuplu al lui A cu fiecare tuplu al lui B. |
| INNER JOIN | Păstrează doar tuplurile care îndeplinesc condiția de joncțiune. |
| JOINĂ THETA (θ) | Îmbinare în formă generală folosind orice predicat de comparație. |
| ECHI JOIN | Join theta care folosește doar comparații de egalitate. |
| UNIRE NATURALĂ (⋈) | Unește relațiile de pe atribute care au același nume și domeniu. |
| ÎNJUNGEREA EXTERIOARĂ LA STÂNGĂ (⟕) | Păstrează fiecare tuplu din relația din stânga, completează dreapta cu NULL. |
| ÎMUNCITURĂ EXTERIOARĂ LA DREAPTA (⟖) | Păstrează fiecare tuplu din relația corectă, completează la stânga cu NULL. |
| ÎNCHIDERE EXTERIOARĂ COMPLETĂ (⟗) | Păstrează fiecare tuplu din ambele relații, completând valorile lipsă cu NULL. |



