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.

  • ๐Ÿ” Start med unรฆre operatorer: SELECT, PROJECT og RENAME filtrerer rรฆkker, vรฆlger kolonner og omdรธber attributter i en enkelt relation.
  • ๐Ÿ“š Anvend mรฆngdelรฆre: UNION, INDSNITNING, DIFFERENS og CARTESISK PRODUKT kombinerer unionskompatible relationer til nye resultater.
  • ๐Ÿ”— Deltag bevidst: Theta-, Equi- og Natural-joins hรฅndterer indre matches, mens Left-, Right- og Full Outer-joins bevarer umatchede tupler med nuller.
  • ๐Ÿ“ Urkompatibilitet: Bekrรฆft altid, at arity, attributnavne og domรฆner stemmer overens, fรธr enhver sรฆt- eller foreningsoperation.
  • ๐Ÿค– Brug AI til at oversรฆtte: AI-assistenter konverterer algebraudtryk til SQL, forklarer operatorprรฆcedens og markerer manglende join-betingelser pรฅ almindeligt engelsk.

Relationel algebra i DBMS

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 Google Aktiv
2 Amazon Aktiv
3 Apple Inaktiv
4 Alibaba Aktiv

Projicering pรฅ kundenavn og status:

ฯ€ CustomerName, Status (Customers)
Kundenavn Status
Google 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

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.

Venstre ydre samling

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.

Hรธjre ydre samling

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.

Ofte Stillede Spรธrgsmรฅl

Relationel algebra er et proceduremรฆssigt matematisk sprog, der bruges til at definere operationer pรฅ relationer. SQL er et deklarativt forespรธrgselssprog, som databasemotorer internt oversรฆtter til algebra-lignende udfรธrelsesplaner.

To relationer er unionskompatible, nรฅr de har det samme antal attributter, og hver tilsvarende attribut deler det samme domรฆne. UNION, INTERSECTION og DIFFERENCE krรฆver alle unionskompatibilitet.

Et kartesisk produkt multiplicerer hver rรฆkke af A med hver rรฆkke af B, hvilket producerer enorme mellemliggende relationer med ringe betydning. Det efterfรธlges normalt af et SELECT-prรฆdikat for at blive en nyttig join.

Nej. Ren relationel algebra behandler relationer som sรฆt, sรฅ dubletter elimineres automatisk efter hver operation. SQL opfรธrer sig anderledes โ€“ det fungerer pรฅ multisรฆt og fjerner kun dubletter, nรฅr DISTINCT bruges.

DIVISION-operatoren besvarer "for alle"-forespรธrgsler โ€“ for eksempel find kunder, der har bestilt alle produkter i et katalog. Den returnerer de tupler i รฉn relation, der matcher alle tupler i en anden.

Brug en outer join, nรฅr umatchede rรฆkker stadig har betydning โ€“ for eksempel en liste over alle kunder sammen med valgfri ordredata. Inner joins fjerner disse umatchede rรฆkker; outer joins beholder dem med NULL-fyldstoffer.

AI-assistenter oversรฆtter algebraudtryk til SQL og tilbage, forklarer operatorprรฆcedens trin for trin og markerer manglende join-prรฆdikater, der ellers ville forvandle en forespรธrgsel til et langsomt kartesisk produkt.

Ja. AI-vรฆrktรธjer omdanner spรธrgsmรฅl pรฅ almindeligt engelsk som "kunder fra Indien, der kรธbte alle produkter" til algebratrรฆer med SELECT-, PROJECT- og DIVISION-operatorerne og konverterer dem derefter til kรธrbar SQL.

Opsummer dette indlรฆg med: