Relaatioalgebra tietokannan hallinnan järjestelmässä esimerkkien kanssa
⚡ Älykäs yhteenveto
Relaatioalgebra tietokannan hallintajärjestelmissä on proseduraalinen kyselykieli, joka ottaa syötteenä relaatiot ja tuottaa uusia relaatioita tulosteena. Se ryhmittelee operaattorit unaari-, joukko- ja binääri-luokkiin, mikä tarjoaa teoreettisen perustan, jonka SQL-moottorit muuntavat suoritettaviksi kyselysuunnitelmiksi.

Mikä on relaatioalgebra?
Suhteellinen algebra on proseduraalinen kyselykieli, joka hyväksyy syötteeksi relaatioiden instansseja ja palauttaa tulosteena uusia relaatioiden instansseja. Se soveltaa rekursiivisesti kiinteää operaattorijoukkoa yhteen tai useampaan relaatioon, ja jokaisen operaattorin tulos on itsessään relaatio, joka voidaan syöttää seuraavaan operaatioon. SQL-moottorit hyödyntävät tätä algebraa kyselyiden suunnittelussa ja suorittamisessa.
Perusrelaatioalgebra OperaTIONS
Relaatioalgebran operaattorit voidaan jakaa kolmeen ryhmään.
Unaarinen relaatio OperaTIONS
- VALITSE (σ)
- PROJEKTI (π)
- NIMEÄ UUDELLEEN (ρ)
Operajoukko-opin mukaisia
- UNIONI (∪)
- RISTEYSPISTE (∩)
- ERO (−)
- DARTESIINISEN TULO (×)
Binäärinen relaatio OperaTIONS
- LIITY
- DIVISION
Alla olevat osiot käyvät läpi jokaisen operaattorin käytännön esimerkkien avulla.
VALITSE (σ)
VALITSE operaatio valitsee joukon tupleja, jotka toteuttavat annetun predikaatin. Sigma-symboli σ merkitsee sitä:
σp(r)
jossa σ on operaattori, p on propositionaalinen ehto, ja r on relaatio (taulukko). SELECT säilyttää skeeman ja hylkää rivit, jotka eivät anna predikaattia.
Esimerkki 1
σ topic = "Database" (Tutorials)
Valitsee tupleja joukosta Opetusohjelmat jossa aihe on ”Tietokanta”.
Esimerkki 2
σ topic = "Database" AND author = "guru99" (Tutorials)
Valitsee tupleja joukosta Opetusohjelmat jossa aihe on ”Tietokanta” ja kirjoittaja on guru99.
Esimerkki 3
σ sales > 50000 (Customers)
Valitsee tupleja joukosta Asiakkaat jonka myyntiarvo on yli 50 000.
Projektio (π)
projektio operaattori poistaa syöterelaatiosta kaikki muut attribuutit paitsi luetellut, jolloin syntyy pystysuora osajoukko. Projektio poistaa myös pudottamisesta syntyvät kaksoisrivitping ominaisuudet. Pii-symboli π merkitsee sitä.
Esimerkiksi: harkitse seuraavaa taulukkoa.
| Asiakas ID | Asiakkaan nimi | Tila |
|---|---|---|
| 1 | Aktiiviset | |
| 2 | Amazon | Aktiiviset |
| 3 | omena | Epäaktiivinen |
| 4 | Alibaba | Aktiiviset |
Asiakkaan nimen ja tilan perusteella arvioituna:
π CustomerName, Status (Customers)
| Asiakkaan nimi | Tila |
|---|---|
| Aktiiviset | |
| Amazon | Aktiiviset |
| omena | Epäaktiivinen |
| Alibaba | Aktiiviset |
Nimeä uudelleen (ρ)
nimetä uudelleen operaattori on unaarinen operaatio, joka antaa uuden nimen attribuutille (tai koko relaatiolle). Esimerkiksi ρ(a/b) R nimeää attribuutin uudelleen b suhteesta R että aNimeä uudelleen on erityisen hyödyllinen, kun sinun on suoritettava itseliitos tai liitettävä kaksi relaatiota, joilla on samat attribuuttien nimet.
Liitto Operation (∪)
UNIONIN operaattori, jota merkitään ∪, palauttaa jokaisen relaatiossa A tai B esiintyvän tuplen ja poistaa automaattisesti kaksoiskappaleet.
Result ← A ∪ B
Jotta liitto olisi pätevä:
- A:lla ja B:llä on oltava sama määrä attribuutteja (sama ariteetti).
- Vastaavien attribuuttialueiden on oltava yhteensopivia.
- Kaksoiskappaleet poistetaan automaattisesti.
Esimerkki. Harkitse näitä kahta taulukkoa:
| Taulukko A | Taulukko B | |||
|---|---|---|---|---|
| sarake 1 | sarake 2 | sarake 1 | sarake 2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
A ∪ B antaa:
| sarake 1 | sarake 2 |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
Aseta erotus (−)
Miinus-merkki tarkoittaa settieroTulos A − B on relaatio, joka sisältää kaikki tuplet, jotka ovat A:ssa, mutta eivät B:ssä.
- A:n ja B:n on oltava yhteensopivia liitoksen kanssa.
- Määritteiden nimien ja verkkotunnusten on oltava linjassa.
Esimerkki: A − B
| sarake 1 | sarake 2 |
|---|---|
| 1 | 2 |
Leikkauspiste (∩)
leikkauspiste operaattori, jota merkitään ∩, määrittelee relaation, joka sisältää jokaisen sekä A:ssa että B:ssä esiintyvän tuplen. A:n ja B:n on oltava yhdisteyhteensopivia.
Risteyksen visuaalinen määritelmä.
Esimerkki: A ∩ B
| sarake 1 | sarake 2 |
|---|---|
| 1 | 1 |
Karteesinen tulo (×) tietokannan hallinnan järjestelmässä
karteesinen tuote yhdistää yhden relaation jokaisen tuplen jokaisen toisen relaation tuplen kanssa ja yhdistää niiden sarakkeet. Yksinään tulos on harvoin hyödyllinen, mutta yhdistettynä SELECT-predikaattiin siitä tulee JOIN-operaattorin perusta. Sitä kutsutaan myös ristituloksi tai ristiliitokseksi.
Esimerkki: σ sarake 2 = '1' (A × B)
Lauseke palauttaa jokaisen rivin A × B jonka column 2 arvo on 1.
| sarake 1 | sarake 2 |
|---|---|
| 1 | 1 |
| 1 | 1 |
Liity OperaTIONS
A yhdistää on karteesinen tulo, jota seuraa valintapredikaatti. Liitoksia merkitään symbolilla ⋈ symboli ja antaa sinun yhdistää toisiinsa liittyviä tupleja eri relaatioista mielekkäällä tavalla.
Liitostyypit:
- Sisäiset liitokset: Theta-liitos, Equi-liitos, Luonnollinen liitos.
- Ulkoliitokset: Vasen, oikea ja täysi ulompi liitos.
Sisäinen liittyminen
Vuonna sisäinen liittyminenvain ne tuplet, jotka täyttävät täsmäyskriteerit, sisällytetään; loput hylätään.
Theta Liity
JOIN-lausekkeen yleinen muoto on Theta liittyy, merkitään θ:lla. Theta-liitos voi käyttää valintakriteereissään mitä tahansa vertailuehtoa.
A ⋈θ B
Esimerkiksi:
A ⋈ A.column 2 > B.column 2 (B)
| sarake 1 | sarake 2 |
|---|---|
| 1 | 2 |
Equi Join
Kun Theta-liitos käyttää vain yhtäsuuruusehtoja, siitä tulee Equi-liitos.
A ⋈ A.column 2 = B.column 2 (B)
| sarake 1 | sarake 2 |
|---|---|
| 1 | 1 |
Equi-liitos on yksi käytetyimmistä liitostyyleistä, ja RDBMS Kyselyoptimoija panostaa tyypillisesti merkittävästi tehokkuuteen.
Luonnollinen liittyminen (⋈)
A Luonnollinen liitos vaatii yhteisen attribuutin (sarakkeen) relaatioiden välillä. Jaetulla attribuutilla on oltava sama nimi ja toimialue. Tuloksena on yksi kopio vastaavasta sarakkeesta.
Harkitse näitä kahta taulukkoa.
| Taulukko C | |
|---|---|
| Sisään | Neliö |
| 2 | 4 |
| 3 | 9 |
| Taulukko D | |
|---|---|
| Sisään | Kuutio |
| 2 | 8 |
| 3 | 27 |
C ⋈ D tuottaa:
| Sisään | Neliö | Kuutio |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 27 |
Ulkopuolinen liittyminen
An ulompi liitos säilyttää tuplet, jotka täyttävät täsmäyskriteerit ja tuplet, jotka eivät, täyttämällä puuttuvat sarakkeet NULL-arvolla.
Vasen ulkoliitos (A–B)
Vasen ulompi liitos pitää jokaisen tuplen vasemmassa relaatiossa. Jos A:n rivillä ei ole vastaavaa riviä B:ssä, B:n toimittamat attribuutit täytetään NULL-arvolla.
Tarkastellaan seuraavia taulukoita:
| Taulukko A | |
|---|---|
| Sisään | Neliö |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| Taulukko B | |
|---|---|
| Sisään | Kuutio |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
A ⟕ B antaa:
| Sisään | Neliö | Kuutio |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
Oikea ulompi liitos (A ⟖ B)
Oikea ulompi liitos pitää jokaisen tuplen oikeassa relaatiossa. Jos B:n rivillä ei ole vastaavaa riviä A:ssa, A:n lisäämät sarakkeet täytetään NULL-arvolla.
A ⟖ B antaa:
| Sisään | Kuutio | Neliö |
|---|---|---|
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | NULL |
Täysi ulkoliitos (A ⟗ B)
Täydellinen ulkoliitos säilyttää jokaisen tuplen molemmista relaatioista riippumatta siitä, täsmääkö liitosehto. Puuttuvista arvoista kummallakin puolella tulee NULL.
A ⟗ B antaa:
| Sisään | Neliö | Kuutio |
|---|---|---|
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | NULL |
| 5 | NULL | 75 |
Operator-viiteyhteenveto
Käytä tätä viitetaulukkoa muistaaksesi yhdellä silmäyksellä, mitä kukin operaattori tekee.
| Operation (symboli) | Tarkoitus |
|---|---|
| VALITSE (σ) | Valitsee joukon tupleja, jotka toteuttavat annetun predikaatin. |
| PROJEKTI (π) | Säilyttää vain luetellut attribuutit ja poistaa päällekkäiset rivit. |
| UNIONI (∪) | Palauttaa jokaisen joko A:ssa tai B:ssä esiintyvän tuplen ilman kaksoiskappaleita. |
| SET DIFFERENCE (−) | Palauttaa A:n tuplet, joita ei ole B:ssä. |
| RISTEYSPISTE (∩) | Palauttaa sekä A:ssa että B:ssä esiintyvät tuplet. |
| DARTESIINISEN TULO (×) | Yhdistää jokaisen A:n tuplan jokaisen B:n tuplan kanssa. |
| INNER JOIN | Säilyttää vain tuplet, jotka vastaavat liitosehtoa. |
| THETA-LIITTYMINEN (θ) | Yleisen muodon liitos käyttämällä mitä tahansa vertailupredikaattia. |
| EQUI LIITY | Theta-liitos, joka käyttää vain yhtäsuuruusvertailuja. |
| LUONNOLLINEN LIITTYMINEN (⋈) | Yhdistää relaatiot attribuuttien perusteella, joilla on sama nimi ja toimialue. |
| VASEN ULKOLIITOS (⟕) | Säilyttää jokaisen vasemmanpuoleisen relaation tuplen, täyttää oikean NULL-arvolla. |
| OIKEA ULKOLIITOS (⟖) | Säilyttää jokaisen tuplen oikeasta relaatiosta, täyttää vasemman NULL:lla. |
| TÄYSI ULKOLIITOS (⟗) | Säilyttää jokaisen tuplen molemmista relaatioista ja täyttää puuttuvat arvot NULL-arvolla. |



