Relatsioonialgebra andmebaasisüsteemides koos näidetega
⚡ Nutikas kokkuvõte
Andmebaasihaldussüsteemide relatsioonialgebra on protseduraalne päringukeel, mis võtab sisendiks relatsioonid ja loob väljundiks uued relatsioonid. See rühmitab operaatorid unaarseteks, hulgalisteks ja binaarseteks kategooriateks, pakkudes teoreetilise aluse, mille SQL-mootorid teisendavad käivitatavateks päringuplaanideks.

Mis on relatsioonialgebra?
Suhete algebra on protseduraalne päringukeel, mis võtab sisendina vastu relatsioonide eksemplare ja tagastab väljundina uued relatsioonide eksemplarid. See rakendab ühele või mitmele relatsioonile rekursiivselt fikseeritud operaatorite komplekti ning iga operaatori tulemus on ise relatsioon, mida saab sisestada järgmisse operatsiooni. SQL-mootorid toetuvad sellele algebrale päringute planeerimisel ja täitmisel.
Relatsioonialgebra põhitõed Operamine
Relatsioonalgebra operaatorid jagunevad kolme rühma.
Unaarne relatsioon Operamine
- VALI (σ)
- PROJEKT (π)
- NIMETA ÜMBER (ρ)
Operahulgateooria
- LIIT (∪)
- RISTUMINE (∩)
- VAH (−)
- Cartesiuse korrutis (×)
Binaarne relatsioon Operamine
- LIITU
- DIVISION
Allolevates osades tutvustatakse iga operaatorit koos näidetega.
VALI (σ)
. SELECT operatsioon valib alamhulga tuupleid, mis vastavad antud predikaadile. Sigma sümbol σ tähistab seda:
σp(r)
kus σ on operaator, p on propositsiooniline tingimus ja r on seos (tabel). SELECT säilitab skeemi ja loobub read, mis predikaadile ei vasta.
Näiteks 1
σ topic = "Database" (Tutorials)
Valib tuupleid järgmistest allikatest: Tutorials kus teema võrdub „Andmebaasiga”.
Näiteks 2
σ topic = "Database" AND author = "guru99" (Tutorials)
Valib tuupleid järgmistest allikatest: Tutorials kus teema on „Andmebaas” ja autor on guru99.
Näiteks 3
σ sales > 50000 (Customers)
Valib tuupleid järgmistest allikatest: Kliendid mille müügiväärtus on üle 50 000.
Projektsioon (π)
. projektsioon operaator eemaldab sisendrelatsioonist kõik atribuudid peale loetletud atribuudid, luues vertikaalse alamhulga. Projektsioon kõrvaldab ka duplikaatread, mis tulenevad _drop_-i_ eemaldamisest.ping atribuudid. Pii-sümbol π tähistab seda.
Näide: kaaluge järgmist tabelit.
| Kliendi ID | Kliendi nimi | olek |
|---|---|---|
| 1 | aktiivne | |
| 2 | Amazon | aktiivne |
| 3 | õun | Passiivne |
| 4 | Alibaba | aktiivne |
KliendiNime ja staatuse põhjal prognoosimine:
π CustomerName, Status (Customers)
| Kliendi nimi | olek |
|---|---|
| aktiivne | |
| Amazon | aktiivne |
| õun | Passiivne |
| Alibaba | aktiivne |
Nimeta ümber (ρ)
. ümber operaator on unaarne operatsioon, mis annab atribuudile (või tervele seosele) uue nime. Näiteks ρ(a/b) R atribuudi ümbernimetamine b suhtest R et aÜmbernimetamine on eriti kasulik siis, kui teil on vaja teha iseliitumist või ühendada kaks relatsiooni, millel on samad atribuudinimed.
Liit Operatsioon (∪)
. LIIDU operaator, mida tähistatakse kui ∪, tagastab iga tuuple, mis esineb kas relatsioonis A või relatsioonis B, eemaldades automaatselt duplikaadid.
Result ← A ∪ B
Et liit oleks kehtiv:
- A-l ja B-l peab olema sama arv atribuute (sama atribuutide arv).
- Vastavad atribuudidomeenid peavad olema ühilduvad.
- Topeltnumbrid eemaldatakse automaatselt.
Näide Mõelge neile kahele tabelile:
| Tabel A. | Tabel B | |||
|---|---|---|---|---|
| veerg 1 | veerg 2 | veerg 1 | veerg 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
A ∪ B annab:
| veerg 1 | veerg 2 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
Määra erinevus (−)
Miinusmärk tähistab seti vaheTulemus A − B on seos, mis sisaldab kõiki tuupleid, mis asuvad hulgas A, aga mitte hulgas B.
- A ja B peavad olema ametiühinguga ühilduvad.
- Atribuutide nimed ja domeenid peavad olema joondatud.
Näide: A − B
| veerg 1 | veerg 2 |
|---|---|
| 1 | 2 |
Ristmik (∩)
. ristmik operaator, mida tähistatakse kui ∩, defineerib seose, mis sisaldab iga paari, mis esineb nii A-s kui ka B-s. A ja B peavad olema ühendusega ühilduvad.
Ristmiku visuaalne määratlus.
Näide: A ∩ B
| veerg 1 | veerg 2 |
|---|---|
| 1 | 1 |
Descartesi korrutis (×) andmebaasihaldussüsteemis
. Descartes'i toode ühendab ühe seose iga tuupi iga teise seose iga tuupiga, liites nende veerud. Tulemus iseenesest on harva kasulik, kuid kombineerituna SELECT-predikaadiga saab sellest JOIN-i alus. Seda nimetatakse ka ristkorrutiseks või ristliitumiseks.
Näide: σ veerg 2 = '1' (A × B)
Avaldis tagastab iga rea A × B kelle column 2 väärtus on 1.
| veerg 1 | veerg 2 |
|---|---|
| 1 | 1 |
| 1 | 1 |
Liitu Operamine
A liituma on Cartesiuse korrutis, millele järgneb valiku predikaat. Ühendusi tähistatakse kui ⋈ sümbol ja võimaldavad teil erinevate relatsioonide seotud tuupleid mõtestatud viisil kombineerida.
Liitumistüübid:
- Sisemised ühendused: Teetaliitumine, võrdväärne liitmine, loomulik liitmine.
- Välised ühendused: Vasak-, parem- ja täielik välimine ühendus.
Sisemine liitumine
Aastal sisemine liitumine, kaasatakse ainult need paarid, mis vastavad sobivuskriteeriumidele; ülejäänud jäetakse kõrvale.
Teeta Liitu
JOIN-i üldine vorm on Teeta liituda, tähistatud kui θ. Teetaliit saab oma valikukriteeriumides kasutada mis tahes võrdlustingimust.
A ⋈θ B
Näiteks:
A ⋈ A.column 2 > B.column 2 (B)
| veerg 1 | veerg 2 |
|---|---|
| 1 | 2 |
Equi Join
Kui teetaliit kasutab ainult võrdustingimusi, muutub see Equi-liitumine.
A ⋈ A.column 2 = B.column 2 (B)
| veerg 1 | veerg 2 |
|---|---|
| 1 | 1 |
Equijoin on üks enimkasutatud liitmisstiile ja RDBMS Päringu optimeerija näeb tavaliselt märkimisväärselt vaeva, et see oleks tõhus.
Loomulik liitumine (⋈)
A Loomulik liitumine nõuab relatsioonide vahel ühist atribuuti (veergu). Jagatud atribuudil peab olema sama nimi ja domeen. Tulemuseks on üks koopia vastavast veerust.
Mõelge neile kahele tabelile.
| Tabel C | |
|---|---|
| Sisse | ruut |
| 2 | 4 |
| 3 | 9 |
| Tabel D | |
|---|---|
| Sisse | Kuubik |
| 2 | 8 |
| 3 | 27 |
C ⋈ D toodab:
| Sisse | ruut | Kuubik |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Väline liitumine
An välimine ühendus hoiab alles paarid, mis vastavad sobivuskriteeriumidele ja tuuplid, mis seda ei tee, täites puuduvad veerud NULL-iga.
Vasakpoolne välimine liitmik (A–B)
Vasakpoolne välimine ühendus hoiab iga tuupli vasakpoolses seoses. Kui rea A puhul ei ole B-s vastavat rida, täidetakse B poolt lisatud atribuudid NULL-iga.
Vaatleme järgmisi tabeleid:
| Tabel A. | |
|---|---|
| Sisse | ruut |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Tabel B | |
|---|---|
| Sisse | Kuubik |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A ⟕ B annab:
| Sisse | ruut | Kuubik |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
Parempoolne välimine ühendus (A ⟖ B)
Parempoolne välimine ühendus hoiab iga tuupli õiges seoses. Kui B real pole A-s vastavat rida, täidetakse A poolt lisatud veerud NULL-iga.
A ⟖ B annab:
| Sisse | Kuubik | ruut |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL |
Täielik välimine liitumine (A ⟗ B)
Täielik välimine ühendus eemaldab iga paarilise mõlemast relatsioonist, olenemata sellest, kas liitumistingimus vastas. Mõlemal poolel puuduvad väärtused muutuvad NULL-iks.
A ⟗ B annab:
| Sisse | ruut | Kuubik |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
| 5 | NULL | 75 |
OperaTori viite kokkuvõte
Selle tabeli abil saate lühidalt meelde tuletada, mida iga operaator teeb.
| Operatsioon (sümbol) | Eesmärk |
|---|---|
| VALI (σ) | Valib alamhulga tuupleid, mis vastavad antud predikaadile. |
| PROJEKT (π) | Säilitab ainult loetletud atribuudid ja eemaldab duplikaatread. |
| LIIT (∪) | Tagastab kõik A-s või B-s esinevad duplikaadid. |
| MÄÄRA VAH (−) | Tagastab A-s olevad tuupled, mis ei kuulu B-sse. |
| RISTUMINE (∩) | Tagastab nii A-s kui ka B-s esinevad tuupled. |
| Cartesiuse korrutis (×) | Kombineerib iga A-duupli iga B-duupliga. |
| INNER JOIN | Säilitab ainult need tuupled, mis vastavad liitumistingimusele. |
| TEETA LIITUMISE (θ) | Üldvormis liitmine mis tahes võrdluspredikaadi abil. |
| EQUI LIITUMISE | Teetaliitumine, mis kasutab ainult võrdusvõrdlusi. |
| LOODUSLIK LIITUMINE (⋈) | Ühendab atribuutide alusel seoseid, millel on sama nimi ja domeen. |
| VASAK VÄLIMINE LIIT (⟕) | Säilitab vasakpoolse seose kõik paarid, täidab parema NULL-iga. |
| PAREM VÄLIMINE LIIT (⟖) | Hoiab iga paarilise õigest seosest, täidab vasaku NULL-iga. |
| TÄIELIK VÄLINE LIITUMINEN (⟗) | Säilitab iga paarisarvu mõlemast relatsioonist, täites puuduvad väärtused NULL-iga. |



