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.

  • 🔍 Aloita unaarisilla operaattoreilla: SELECT-, PROJECT- ja RENAME-toiminnoilla voit suodattaa rivejä, valita sarakkeita ja nimetä attribuutteja uudelleen yksittäisessä relaatiossa.
  • 📚 Sovella joukko-oppia: UNIONI, LEIKKAUSPISTE, ERO ja DIRECTES-TULO yhdistävät yhdisteyhteensopivia relaatioita uusiksi tuloksiksi.
  • 🔗 Liity tarkoituksella: Theta-, Equi- ja Natural-liitokset käsittelevät sisäisiä osumia, kun taas Left-, Right- ja Full Outer -liitokset säilyttävät osumattomat tuplet null-arvoilla.
  • 📐 Kellojen yhteensopivuus: Varmista aina, että ariteetti, attribuuttien nimet ja toimialueet ovat linjassa ennen joukon tai yhdistämisen operaatioita.
  • 🤖 Käytä tekoälyä kääntämiseen: Tekoälyavustajat muuntavat algebralausekkeet SQL-muotoon, selittävät operaattoreiden järjestyksen ja merkitsevät puuttuvat liitosehdot selkokielellä.

Relaatioalgebra DBMS:ssä

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 Google Aktiiviset
2 Amazon Aktiiviset
3 omena Epäaktiivinen
4 Alibaba Aktiiviset

Asiakkaan nimen ja tilan perusteella arvioituna:

π CustomerName, Status (Customers)
Asiakkaan nimi Tila
Google 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ä

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.

Vasen ulompi liittymä

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.

Oikea ulompi liitos

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.

UKK

Relaatioalgebra on proseduraalinen matemaattinen kieli, jota käytetään relaatioiden operaatioiden määrittelemiseen. SQL on deklaratiivinen kyselykieli, jonka tietokantamoottorit kääntävät sisäisesti algebramaisille suoritussuunnitelmille.

Kaksi relaatiota ovat unioniyhteensopivia, kun niillä on sama määrä attribuutteja ja jokainen vastaava attribuutti jakaa saman ominaisuusalueen. UNION, INTERSECTION ja DIFFERENCE vaativat kaikki unioniyhteensopivuutta.

Karteesinen tulo kertoo jokaisen A:n rivin jokaisella B:n rivillä, mikä tuottaa valtavia, merkityksettömiä välirelaatioita. Sitä seuraa yleensä SELECT-predikaatti, joka tekee siitä hyödyllisen liitoksen.

Ei. Puhdas relaatioalgebra käsittelee relaatioita joukkoina, joten kaksoiskappaleet poistetaan automaattisesti jokaisen operaation jälkeen. SQL toimii eri tavalla – se toimii monijoukkojen kanssa ja poistaa kaksoiskappaleet vain, kun käytetään DISTINCT-funktiota.

DIVISION-operaattori vastaa ”kaikille”-kyselyihin – esimerkiksi etsii asiakkaita, jotka tilanneet kaikki luettelon tuotteet. Se palauttaa yhden relaation tuplet, jotka vastaavat kaikkia toisen relaation tupleja.

Käytä ulkoista liitosta, kun yhteensopimattomilla riveillä on edelleen merkitystä – esimerkiksi listattaessa kaikki asiakkaat sekä valinnaiset tilaustiedot. Sisäiset liitokset poistavat yhteensopimattomat rivit; ulkoiset liitokset säilyttävät ne NULL-täytteillä.

Tekoälyavustajat kääntävät algebralausekkeet SQL:ksi ja takaisin, selittävät operaattoreiden etusijajärjestyksen askel askeleelta ja merkitsevät puuttuvia liitospredikaatteja, jotka muuten muuttaisivat kyselyn hitaaksi karteesiseksi tuloksi.

Kyllä. Tekoälytyökalut muuttavat selkokieliset kysymykset, kuten "intialaiset asiakkaat, jotka ostivat kaikki tuotteet", algebrapuiksi SELECT-, PROJECT- ja DIVISION-operaattoreilla ja muuntavat ne sitten ajettavaksi SQL-muotoon.

Tiivistä tämä viesti seuraavasti: