**Relaatioalgebra** on abstraktin algebran osa-alue, jonka käsittämillä operaattoreilla voidaan muodostaa uusia relaatioita operandina saatavista olemassa olevista relaatioista.

Relaatioalgebra muodostaa relaatiotietokantojen ja niiden käsittelyyn tarvittavien kyselykielien (esim. SQL) teoreettisen pohjan. Relaatioalgebra käsittää yhteen relaation kohdistuvia unaarisia operaattoreita (esim. valinta, uudelleennimeäminen) ja kahta relaatiota käsitteleviä binaarisia operaattoreita.

Unaariset operaattorit
----------------------

### Valinta

**Valinta** tuottaa relaation valitsemalla alkuperäisen relaation monikot, jotka täyttävät operaattorille määritetyn valintaehdon. Operaatiota kuvataan notaatiolla {\displaystyle \sigma \_{C}(R)}, missä {\displaystyle \sigma \_{C}} on valintaoperaattori, jolla on valintaehto C. R on lähtörelaatio.

Valintaehto voi koostua alkuperäisen relaation attribuuteista, arvojoukkojen vakioista tai alkuperäisen relaation pohjalta kirjoitetuista vertailulauseista. Ehtolauseita voidaan yhdistellä loogisilla operaattoreilla ja, tai ja ei.

### Projektio

Projektio tuottaa relaation, johon on valittu halutut alkuperäisen joukon attribuutteja vastaavat sarakkeet. SQL-kyselykielen projektio-operaattori eroaa toteutuksessaan relaatioalgebran kuvaamasta, sillä kyselykielessä syntyvään uuteen relaatioon jätetään toisteiset monikot, kun relaatioalgebran operaattorissa ne poistetaan.

Projektio kuvataan relaatioalgebrassa notaatiolla {\displaystyle \Pi \_{A\_{1},\ldots ,A\_{n}}(R)}, missä {\displaystyle \Pi } on projektio-operaattori, {\displaystyle A\_{1},\ldots ,A\_{n}} ovat projektiossa syntyvään relaatioon sisällytettävät attribuutit ja R lähtörelaatio.

### Uudelleennimeäminen

Uudelleennimeäminen tuottaa alkuperäistä relaatiota vastaavan uuden relaation, missä voidaan vaihtaa joko relaation, sen attribuuttien tai molempien nimiä. Operaatio kuvataan muodossa {\displaystyle \rho \_{S(A\_{1},A\_{2},\ldots ,A\_{n})}(R)}, missä R on alkuperäinen relaatio, S muodostettavalle relaatiolle annettava nimi ja {\displaystyle A\_{1},A\_{2},\ldots ,A\_{n}} muodostetun relaation attribuuteille annettuja uusia nimiä. Mikäli attribuutteja ei lähdetä uudelleennimeämään, voidaan operaattori esittää tiiviimmässä muodossa {\displaystyle \rho \_{S}(R)}.

Monikkoja yhdistävät operaattorit
---------------------------------

### Karteesinen tulo

Karteesinen tulo muodostaa relaation, johon kuuluvat pareittain kaikki lähtörelaatioiden alkiot. Kahden relaation karteesinen tulo vastaa joukko-opin unionia ja sisältää kaikki mahdolliset monikot, joissa jokin ensimmäisen relaation monikko on yhdistetty toisen relaation monikon kanssa. Operaattorin käyttökohteet yksinään ovat varsin rajalliset, mutta operaattorilla voidaan yhdistellä relaatioita monipuolisesti, kun operaattori yhdistetään unaariseen valintaoperaatioon.

Karteesisen tulon notaatio on {\displaystyle R\times S}, missä R ja S ovat lähtörelaatiot ja \times  tulo-operaattori.

### Luonnollinen liitos

Luonnollinen liitos yhdistää kahden tietokannan yhteiset attribuutit ja poistaa kaikki monikot, joiden yhteiset attribuutit eivät vastaa toisiaan. Liitoksen tiukat toteutumisehdot rajoittavat sen käyttökohteita, sillä se ei sovellu esimerkiksi tilanteisiin, missä liitettävillä relaatioilla ei ole samannimisiä attribuutteja. Liitos voidaan myös tehdä vain relaatioille, joissa esiintyy yksi samanniminen attribuutti.

Luonnollisen liitoksen notaatio on {\displaystyle R\bowtie S}, missä R ja S ovat liitettävät alkuperäiset relaatiot ja {\displaystyle \bowtie } liitosoperaattori.

### Theta-liitos

Theta-liitos on luonnollisen liitoksen tapainen liitto-operaattori. Liitos tehdään luonnollisesta liitoksesta poiketen erikseen määritetyn ehdon perusteella ja se säilyttää molempien alkuperäisten relaatioiden kaikki attribuutit. Liitoksessa syntyvään relaatioon lisätään monikot, jotka täyttävät liitokselle annetun ehdon. Uuden relaation attribuutteja käsitellään liitoksen jälkeen alkuperäisiin relaatioihin viitaten.

Theta-liitoksen notaatio on {\displaystyle R\bowtie \_{C}S}, missä {\displaystyle \bowtie \_{C}} on liitosoperaattori, jonka liitosehto on C. R ja S ovat liitettävät alkuperäiset relaatiot.

Joukko-operaatiot
-----------------

unionileikkauserotusUnionia, leikkausta ja erotusta kuvaavat venn-diagrammit.
Relaatioiden joukko-operaatiot edellyttävät, että lähtörelaatiot muodostuvat samoista attribuuteista. Lähtörelaatioiden attribuuttisarakkeet järjestellään ennen operaatioita samaan järjestykseen.

### Unioni

*Katso myös: Yhdiste (matematiikka)*
Unioni eli yhdiste sisältää lähtörelaatioiden monikot, jotka esiintyvät jommassakummassa tai molemmissa lähtörelaatioissa. Karteesisesta tulosta poiketen relaatioiden leikkaukselle osuvat monikot esiintyvät unionin tulosrelaatiossa vain kerran.

Unionin notaatio on {\displaystyle R\cup S}, missä R ja S ovat lähtörelaatiot ja {\displaystyle \cup } unionioperaattori.

### Leikkaus

*Katso myös: Leikkaus (matematiikka)*
Leikkaus sisältää lähtörelaatioiden monikot, jotka esiintyvät vain molemmissa lähtörelaatioissa.

Leikkauksen notaatio on {\displaystyle R\cap S}, missä R ja S ovat lähtörelaatiot ja {\displaystyle \cap } leikkausoperaattori.

### Erotus

*Katso myös: Joukkoerotus*
Leikkaus sisältää ensimmäisen lähtörelaation monikot, jotka eivät esiinny toisessa lähtörelaatiossa.

Erotuksen notaatio on {\displaystyle R-S}, missä R ja S ovat lähtörelaatiot ja {\displaystyle -} erotusoperaattori.

Lähteet
-------

* CS-A1150 Tietokannat, luento 10.2.2020 (PDF) *cse.hut.fi*. Aalto-yliopisto. Viitattu 29.2.2020.

### Viitteet

1. 1 2  Relational Algebra (PDF) (s. 2–3) *infolab.stanford.edu*. Stanfordin yliopisto. Viitattu 29.2.2020. (englanniksi)
2. 1 2  CS-A1150 Tietokannat, luento 10.2.2020, s. 6–8.
3. 1 2  CS-A1150 Tietokannat, luento 10.2.2020, s. 9–11.
4. ↑  CS-A1150 Tietokannat, luento 10.2.2020, s. 31–35.
5. 1 2  CS-A1150 Tietokannat, luento 10.2.2020, s. 14–18.
6. 1 2  CS-A1150 Tietokannat, luento 10.2.2020, s. 19–21.
7. 1 2  CS-A1150 Tietokannat, luento 10.2.2020, s. 22–26.
8. ↑  CS-A1150 Tietokannat, luento 10.2.2020, s. 27.
9. 1 2 3 4 5 6  CS-A1150 Tietokannat, luento 10.2.2020, s. 28–30.