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.

  • 🔍 Începeți cu operatori unari: Funcțiile SELECT, PROJECT și RENAME filtrează rânduri, selectează coloane și redenumește atribute pentru o singură relație.
  • 📚 Aplicați teoria mulțimilor: UNIUNE, INTERSECȚIE, DIFERENȚĂ și PRODUS CARTESIAN combină relații compatibile cu uniunile în rezultate noi.
  • 🔗 Alătură-te intenționat: Îmbinarea Theta, Equi și Natural gestionează potrivirile interne, în timp ce îmbinările Left, Right și Full Outer păstrează tuplurile nepotrivite cu valori nule.
  • 📐 Compatibilitate ceas: Verificați întotdeauna dacă aritatea, numele atributelor și domeniile se aliniază înainte de orice operațiune de set sau uniune.
  • 🤖 Folosește inteligența artificială pentru a traduce: Asistenții inteligenți artificiali convertesc expresiile de algebră în SQL, explică precedența operatorilor și semnalează condițiile de joncțiune lipsă într-un limbaj simplu.

Algebra relațională în DBMS

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 Google Activ
2 Amazon Activ
3 Apple Inactiv
4 Alibaba Activ

Proiectare pe CustomerName și Status:

π CustomerName, Status (Customers)
Numele clientului Stare
Google 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

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.

Stânga la exterior

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.

Alăturați-vă la dreapta

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.

Întrebări frecvente

Algebra relațională este un limbaj matematic procedural folosit pentru a defini operații asupra relațiilor. SQL este un limbaj de interogare declarativ pe care motoarele de baze de date îl traduc intern în planuri de execuție în stil algebric.

Două relații sunt compatibile cu uniunile atunci când au același număr de atribute și fiecare atribut corespunzător are același domeniu. UNIUNEA, INTERSECȚIA și DIFERENȚA necesită toate compatibilitate cu uniunile.

Un produs cartesian înmulțește fiecare rând al lui A cu fiecare rând al lui B, producând relații intermediare uriașe, cu puțin sens. În mod normal, este urmat de un predicat SELECT pentru a deveni o joncțiune utilă.

Nu. Algebra relațională pură tratează relațiile ca mulțimi, astfel încât duplicatele sunt eliminate automat după fiecare operație. SQL se comportă diferit - funcționează pe multimulțimi și elimină duplicatele doar atunci când se utilizează DISTINCT.

Operatorul DIVISION răspunde la interogări de tip „pentru toate” — de exemplu, găsește clienții care au comandat fiecare produs dintr-un catalog. Acesta returnează tuplurile unei relații care corespund fiecărui tuplu al alteia.

Folosește o joncțiune externă atunci când rândurile nepotrivite au încă semnificație - de exemplu, listarea fiecărui client împreună cu datele opționale ale comenzii. Join-urile interne elimină acele rânduri nepotrivite; join-urile externe le păstrează cu umpluturi NULL.

Asistenții inteligenți artificiali traduc expresii algebrice în SQL și invers, explică pas cu pas precedența operatorilor și semnalează predicatele de joncțiune lipsă care altfel ar transforma o interogare într-un produs cartezian lent.

Da. Instrumentele de inteligență artificială transformă întrebările formulate în limba engleză simplă, cum ar fi „clienți din India care au cumpărat fiecare produs”, în arbori de algebră cu operatorii SELECT, PROJECT și DIVISION, apoi le convertesc în cod SQL rulabil.

Rezumați această postare cu: