Relationel algebra i DBMS med eksempler
โก Smart opsummering
Relationel algebra i DBMS er et procedurelt forespรธrgselssprog, der tager relationer som input og producerer nye relationer som output. Det grupperer operatorer i unรฆre, mรฆngde- og binรฆre kategorier, hvilket giver det teoretiske grundlag, som SQL-motorer oversรฆtter til eksekverbare forespรธrgselsplaner.

Hvad er relationel algebra?
Relational algebra er et procedurelt forespรธrgselssprog, der accepterer forekomster af relationer som input og returnerer nye forekomster af relationer som output. Det anvender et fast sรฆt operatorer rekursivt pรฅ en eller flere relationer, og resultatet af hver operator er i sig selv en relation, der kan fรธres ind i den nรฆste operation. SQL-motorer bruger denne algebra til at planlรฆgge og udfรธre forespรธrgsler.
Grundlรฆggende relationel algebra Operationer
Relationelle algebraoperatorer falder i tre grupper.
Unรฆr Relationel Operationer
- VรLG (ฯ)
- PROJEKT (ฯ)
- OMNAVN (ฯ)
Operationer fra mรฆngdelรฆre
- UNION (โช)
- SKRYDSNING (โฉ)
- FORSKEL (โ)
- CARTESISK PRODUKT (ร)
Binรฆr relationel Operationer
- JOIN
- DIVISION
Afsnittene nedenfor gennemgรฅr hver operator med eksempler.
VรLG (ฯ)
SELECT Operation vรฆlger en delmรฆngde af tupler, der opfylder et givet prรฆdikat. Sigma-symbolet ฯ betegner det:
ฯp(r)
hvor ฯ er operatรธren, p er den propositionelle betingelse, og r er relationen (tabellen). SELECT bevarer skemaet og kasserer rรฆkker, der ikke opfylder prรฆdikatet.
Eksempel 1
ฯ topic = "Database" (Tutorials)
Vรฆlger tupler fra Vejledninger hvor emnet er lig med "Database".
Eksempel 2
ฯ topic = "Database" AND author = "guru99" (Tutorials)
Vรฆlger tupler fra Vejledninger hvor emnet er "Database", og forfatteren er guru99.
Eksempel 3
ฯ sales > 50000 (Customers)
Vรฆlger tupler fra Kunder hvis salgsvรฆrdi er stรธrre end 50,000 kr.
Projektion (ฯ)
fremskrivning Operatoren fjerner alle attributter fra inputrelationen undtagen dem, der er angivet, hvilket producerer en lodret delmรฆngde. Projektion eliminerer ogsรฅ dubletter af rรฆkker, der skyldes drop.ping Attributter. Pi-symbolet ฯ betegner det.
Eksempel: overvej fรธlgende tabel.
| Kunde ID | Kundenavn | Status |
|---|---|---|
| 1 | Aktiv | |
| 2 | Amazon | Aktiv |
| 3 | Apple | Inaktiv |
| 4 | Alibaba | Aktiv |
Projicering pรฅ kundenavn og status:
ฯ CustomerName, Status (Customers)
| Kundenavn | Status |
|---|---|
| Aktiv | |
| Amazon | Aktiv |
| Apple | Inaktiv |
| Alibaba | Aktiv |
Omdรธb (ฯ)
omdรธbe en operator er en unรฆr operation, der giver et nyt navn til en attribut (eller til en hel relation). For eksempel, ฯ(a/b) R omdรธber attribut b af relation R til aOmdรธbning er isรฆr nyttigt, nรฅr du har brug for at udfรธre en self-join eller join to relationer, der deler attributnavne.
Union Operation (โช)
UNION operator, betegnet med โช, returnerer hver tuple, der vises i enten relation A eller relation B, og fjerner automatisk dubletter.
Result โ A โช B
For at en forening kan vรฆre gyldig:
- A og B skal have det samme antal attributter (samme antal).
- De tilsvarende attributdomรฆner skal vรฆre kompatible.
- Duplikerede tupler fjernes automatisk.
Eksempel. Overvej disse to tabeller:
| Tabel A | Tabel B | |||
|---|---|---|---|---|
| kolonne 1 | kolonne 2 | kolonne 1 | kolonne 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
A โช B giver:
| kolonne 1 | kolonne 2 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
Sรฆt forskel (โ)
Minustegnet angiver sรฆt forskelResultatet af A โ B er en relation, der indeholder alle tupler, der er i A, men ikke i B.
- A og B skal vรฆre unionskompatible.
- Attributnavne og domรฆner skal stemme overens.
Eksempel: A โ B
| kolonne 1 | kolonne 2 |
|---|---|
| 1 | 2 |
Krydspunkt (โฉ)
vejkryds operator, betegnet med โฉ, definerer en relation, der indeholder alle tupler, der optrรฆder i bรฅde A og B. A og B skal vรฆre unionskompatible.
Visuel definition af kryds.
Eksempel: A โฉ B
| kolonne 1 | kolonne 2 |
|---|---|
| 1 | 1 |
Kartesisk produkt (ร) i DBMS
Kartesisk produkt kombinerer hver tuple i รฉn relation med hver tuple i en anden og fletter deres kolonner. Resultatet i sig selv er sjรฆldent nyttigt, men kombineret med et SELECT-prรฆdikat bliver det grundlaget for JOIN. Det kaldes ogsรฅ krydsproduktet eller krydsjoiningen.
Eksempel: ฯ kolonne 2 = '1' (A ร B)
Udtrykket returnerer hver rรฆkke af A ร B hvis column 2 vรฆrdi er 1.
| kolonne 1 | kolonne 2 |
|---|---|
| 1 | 1 |
| 1 | 1 |
Bliv Medlem Operationer
A deltage er et kartesisk produkt efterfulgt af et selektionsprรฆdikat. Joins betegnes med โ symbol og lader dig kombinere relaterede tupler fra forskellige relationer pรฅ en meningsfuld mรฅde.
Typer af sammenfรธjning:
- Indre samlinger: Theta-join, Equi-join, Natural join.
- Ydre samlinger: Venstre-, hรธjre- og fulde ydre sammenfรธjninger.
Indvendig sammenfรธjning
I en indre sammenfรธjning, kun tupler, der opfylder matchningskriterierne, inkluderes; resten kasseres.
Theta Deltag
Den generelle form for JOIN er Theta slutter sig, betegnet med ฮธ. Theta-joining kan bruge enhver sammenligningsbetingelse i sine udvรฆlgelseskriterier.
A โฮธ B
For eksempel:
A โ A.column 2 > B.column 2 (B)
| kolonne 1 | kolonne 2 |
|---|---|
| 1 | 2 |
Equi Join
Nรฅr en Theta-join kun bruger lighedsbetingelser, bliver den en Equi join.
A โ A.column 2 = B.column 2 (B)
| kolonne 1 | kolonne 2 |
|---|---|
| 1 | 1 |
Equi join er en af โโde mest anvendte join-stilarter, og RDBMS Forespรธrgselsoptimereren bruger typisk en betydelig indsats pรฅ at gรธre den effektiv.
Natural Join (โ)
A Naturlig sammenfรธjning krรฆver en fรฆlles attribut (kolonne) mellem relationerne. Den delte attribut skal have samme navn og domรฆne. Resultatet indeholder รฉn kopi af den matchende kolonne.
Overvej disse to tabeller.
| Tabel C | |
|---|---|
| I | Firkant |
| 2 | 4 |
| 3 | 9 |
| Tabel D | |
|---|---|
| I | Cube |
| 2 | 8 |
| 3 | 27 |
C โ D producerer:
| I | Firkant | Cube |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Ydre tilslutning
An ydre sammenfรธjning gemmer tupler, der opfylder matchningskriterierne og tupler, der ikke gรธr det, og udfylder manglende kolonner med NULL.
Venstre ydre samling (A โ B)
Den venstre ydre join holder alle tupler i den venstre relation. Hvis en rรฆkke i A ikke har nogen matchende rรฆkke i B, udfyldes attributterne fra B med NULL.
Overvej fรธlgende tabeller:
| Tabel A | |
|---|---|
| I | Firkant |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Tabel B | |
|---|---|
| I | Cube |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A โ B giver:
| I | Firkant | Cube |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
Hรธjre ydre samling (A โ B)
Den hรธjre outer join holder hver tuple i den rigtige relation. Hvis en rรฆkke i B ikke har nogen matchende rรฆkke i A, udfyldes kolonnerne, der bidrages af A, med NULL.
A โ B giver:
| I | Cube | Firkant |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL |
Fuld ydre sammenfรธjning (A โ B)
Den fulde outer join bevarer alle tupler fra begge relationer, uanset om join-betingelsen matchede. Manglende vรฆrdier pรฅ begge sider bliver NULL.
A โ B giver:
| I | Firkant | Cube |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
| 5 | NULL | 75 |
Operator-referenceoversigt
Brug denne referencetabel til at huske, hvad hver operator gรธr, med et hurtigt blik.
| Operation (Symbol) | Formรฅl |
|---|---|
| VรLG (ฯ) | Vรฆlger en delmรฆngde af tupler, der opfylder et givet prรฆdikat. |
| PROJEKT (ฯ) | Beholder kun de anfรธrte attributter og fjerner dubletter af rรฆkker. |
| UNION (โช) | Returnerer alle tupler, der optrรฆder i enten A eller B, uden dubletter. |
| SรT FORSKEL (โ) | Returnerer tupler i A, som ikke er i B. |
| SKRYDSNING (โฉ) | Returnerer tupler, der optrรฆder i bรฅde A og B. |
| CARTESISK PRODUKT (ร) | Kombinerer hver tuple af A med hver tuple af B. |
| INNER JOIN | Beholder kun tupler, der matcher join-betingelsen. |
| THETA-JOIN (ฮธ) | Generel formsammenkobling ved hjรฆlp af et hvilket som helst sammenligningsprรฆdikat. |
| EQUI JOIN | Theta-join, der kun bruger lighedssammenligninger. |
| NATURLIG JOIN (โ) | Forbinder relationer pรฅ attributter, der deler samme navn og domรฆne. |
| VENSTRE YDRE SAMMENFรRING (โ) | Beholder alle tupler fra venstrerelationen, udfylder hรธjre med NULL. |
| HรJRE YDRE SAMMENFรRING (โ) | Holder alle tupler fra den hรธjre relation, udfylder venstre med NULL. |
| FULD YDRE SAMMENSLUTNING (โ) | Beholder alle tupler fra begge relationer og udfylder manglende vรฆrdier med NULL. |



