Relaatioalgebra on suljettu relaatioiden operaatiojärjestelmä relaatiotietomallissa . _ _ Relaatioalgebran operaatioita kutsutaan myös relaatiooperaatioiksi .
Alkuperäisen 8 operaation sarjan ehdotti E. Codd 1970-luvulla ja se sisälsi sekä operaatioita, jotka ovat edelleen käytössä ( projisointi , liitos jne.) että operaatioita, jotka eivät ole tulleet käyttöön (esim . suhteiden jako ).
Relaatioteorian ja -käytännön kehittämisessä on ehdotettu useita uusia relaatiooperaatioita, kuten semi-join ( SEMI-JOIN ) ja semi-difference tai anti-semi-join ( ANTI-SEMI-JOIN ) [1] [2 ] , RISTIKÄYTTÖ ja ULKOINEN KÄYTTÖ , transitiivinen sulkeminen ( SULJE ) jne.
Koska monet operaatiot ovat ilmaistettavissa toistensa kautta, osana relaatioalgebraa voidaan erottaa useita kantamuunnelmia (operaatioiden joukko, jonka kautta kaikki muut ovat ilmaistavissa). Tunnetuimman ja tiukasti määritellyn perusteen ( algebra A ) ehdottivat Christopher Date ja Hugh Darwen [3] .
Relaatioalgebra ja relaatiolaskenta ovat ilmaisuvoimaltaan ekvivalentteja [4] . Pyyntöjen muuntamiseen niiden välillä on säännöt.
Relaatioalgebran pääsovellus on tarjota teoreettinen kehys relaatiotietokannoille , erityisesti kyseisten tietokantojen kyselykielille , joista tärkein on SQL .
Relaatioalgebra on joukko relaatioiden operaatioita siten, että jokaisen operaation tulos on myös relaatio. Tätä algebran ominaisuutta kutsutaan suljetuksi .
Operaatioita yhdelle relaatiolle kutsutaan unaariseksi , kahdeksi relaatioksi - binääriseksi , kolmisuhteiseksi - ternääriseksi (näitä ei käytännössä tunneta).
Esimerkki unaarioperaatiosta on projektio, esimerkki binäärioperaatiosta on liitto.
N -aarinen relaatiooperaatio f voidaan esittää funktiolla, joka palauttaa suhteen ja ottaa n relaatiota argumenteiksi:
Koska relaatioalgebra on suljettu, muita relaatioalgebralausekkeita (sopivia tyyppiin) voidaan korvata operandeina relaatiooperaatioissa:
Relaatiolausekkeissa voit käyttää mielivaltaisen monimutkaisen rakenteen sisäkkäisiä lausekkeita.
Jotkut relaatiooperaatiot, erityisesti yhdistäminen , leikkaus ja vähennyslasku , edellyttävät, että suhteella on vastaavat (samat) otsikot (skeemat). Tämä tarkoittaa, että määritteiden määrä, attribuuttien nimet ja samannimisen attribuuttien tyyppi ( domain ) ovat samat.
Jotkut suhteet eivät ole muodollisesti yhteensopivia attribuuttien nimien erojen vuoksi, mutta niistä tulee yhteensopivia määritteen uudelleennimeämistoiminnon jälkeen.
Karteesinen tulooperaatio edellyttää, että operandirelaatioilla ei ole samannimiä attribuutteja. Relaatioiden sanotaan olevan yhteensopivia ottamalla laajennettu karteesinen tulo, jos niiden suhdekaavioista otettujen attribuuttien nimien leikkauspiste on tyhjä.
Seuraavassa on joitain relaatioalgebran operaatioita, joilla on joko historiallista tai käytännön merkitystä. On mahdotonta luetella kaikkia operaatioita, koska mikä tahansa operaatio, joka täyttää relaatiomääritelmän, on osa relaatioalgebraa.
Attribuuttien uudelleennimeämistoiminnon soveltamisen tulos on relaatio muuttuneiden määritteiden nimien kanssa.
Syntaksi :
R NIMEÄ UUDELLEEN Atr 1 , Atr 2 , … AS UusiAtr 1 , UusiAtr 2 , …missä
Relaatio, jolla on sama otsikko kuin tyyppiyhteensopivilla suhteilla A ja B , ja runko, joka koostuu joko A :lle , B :lle tai molemmille kuuluvista monikoista .
Syntaksi:
Relaatio, jolla on sama otsikko kuin relaatioilla A ja B , ja runko, joka koostuu monikoista, jotka kuuluvat samanaikaisesti molempiin suhteisiin A ja B.
Syntaksi:
Relaatio, jolla on sama otsikko kuin tyyppiyhteensopivilla relaatioilla A ja B , ja runko, joka koostuu monikoista, jotka kuuluvat relaatioon A eivätkä kuulu relaatioon B.
Syntaksi:
Osoitusoperaattorin (:=) avulla voit tallentaa olemassa olevan suhteen relaatiolausekkeen arvioinnin tuloksen.
Relaatio, jonka otsikko ( A 1 , A 2 , …, A n , B 1 , B 2 , …, B m ) on relaatioiden A ( A 1 , A 2 , …, A n ) ja B otsikoiden ketju. ( B 1 , B 2 , …, B m ), ja runko koostuu monikoista, jotka ovat kaikki relaatioiden A ja B monikkoyhdistelmiä : ( a 1 , a 2 , …, a n , b 1 , b 2 , … , b m ),
sellasta
( a 1 , a 2 , …, a n ) ∈ A , ( b 1 , b 2 , …, b m ) ∈ B .Syntaksi:
A TIMES BRelaatio, jolla on sama otsikko kuin relaatio A , ja runko, joka koostuu monikoista, joiden attribuuttiarvot ovat TOSI, kun ne korvataan ehtoon c . c on boolen lauseke , joka voi sisältää relaatio A :n attribuutteja ja/tai skalaarilausekkeita.
Syntaksi:
Esimerkki kirjoitetaan seuraavasti tai missä:
Projektio on unaarinen operaatio , jonka avulla voit saada "pystysuuntaisen" osajoukon tietystä suhteesta tai taulukosta, toisin sanoen sellaisen osajoukon, joka saadaan valitsemalla määritetyt attribuutit ja poistamalla tarvittaessa ylimääräiset kaksoiskappaleet . Olkoon taulukko attribuuttien nimillä , eli jokin osajoukko attribuuttien nimistä . Valittujen määritteiden nimien taulukon projektion tulos on uusi taulukko , joka saadaan alkuperäisestä taulukosta poistamalla attribuutit, jotka eivät sisälly valittuun joukkoon, minkä jälkeen mahdollisesti poistetaan ylimääräiset kaksoiskappaleet.
Projektiota toteutettaessa on tarpeen määrittää projisoitu relaatio ja tietty joukko sen attribuutteja, joista tulee tuloksena olevan releen otsikko.
Kun projektio suoritetaan, operandisuhteen "pystysuora" leikkaus allokoidaan siten, että mahdollisesti syntyneet kaksoiskappaleet tuhoutuvat luonnollisesti.
Syntaksi:
tai
Relaatioiden A ja B yhdistäminen predikaatilla P on loogisesti ekvivalentti A:n ja B : n karteesisen tulon sekventiaalista soveltamista ja predikaatin P valintaa . Jos relaatioissa on samannimisiä attribuutteja, nämä attribuutit on nimettävä uudelleen ennen liitoksen suorittamista.
Syntaksi:
( A KERTA B ) MISSÄ PRelaatio, jossa on otsikko (X 1 , X 2 , …, X n ) ja runko, joka sisältää joukon monikoita (x 1 , x 2 , …, x n ) siten, että kaikille monikoille (y 1 , y 2 , … , y m ) ∈ B suhteessa A(X 1 , X 2 , …, X n , Y 1 , Y 2 , …, Y m ) on monikko (x 1 , x 2 , …, x n , y ) 1 , y 2 , …, y m ) .
Syntaksi:
A JAKO BJotkut relaatiooperaattoreista voidaan ilmaista muilla relaatiooperaattoreilla.
Liity operaattoriinLiitosoperaattori määritellään karteesisen tuotteen kannalta ja valitse operaattorit seuraavasti:
(A KERTA B) MISSÄ X=Y jossa X ja Y ovat relaatioiden A ja B attribuutteja, joilla on alun perin sama nimi. Risteyksen operaattoriLeikkausoperaattori ilmaistaan vähentämällä seuraavasti:
RISTIKKO B = A MIINUS (A MIINUS B) divisioonan operaattoriJakooperaattori ilmaistaan vähennyslaskulla, suorakulmaisella tulolla ja projektiooperaattoreilla seuraavasti:
A JAKO B = A[X] MIINUS ((A[X] KERTAA B) MIINUS A)[X]Ensimmäinen Coddin algebraan perustuva kyselykieli oli Coddin itsensä kehittämä Alpha. Myöhemmin luotiin ISBL, ja monet viranomaiset [5] ovat ylistäneet tätä uraauurtavaa työtä, koska se näyttää tavan muuttaa Coddin idea hyödylliseksi kieleksi. Business System 12 oli lyhytaikainen relaatiotietokantajärjestelmä , joka seurasi ISBL:n esimerkkiä.
Vuonna 1998 Christopher Date ja Hugh Darwen ehdottivat kieltä nimeltä Tutorial D käytettäväksi relaatiotietokantateorian opetuksessa. Tämä kyselykieli perustui myös ISBL:n ideoihin. Rel on opetusohjelman D toteutus.
Jopa SQL -kyselykieli perustuu löyhästi relaatioalgebraan, vaikka SQL:n operandit ( taulukot ) eivät ole täsmälleen suhteita , ja useat hyödylliset relaatioalgebra-lauseet eivät päde SQL:ssä (ehkä optimoijien ja/tai käyttäjien vahingoksi). SQL-taulukkomalli on monijoukko , ei joukko . Esimerkiksi lauseke on relaatioalgebran lause joukoissa, mutta ei relaatioalgebra monijoukoissa; monijoukkojen relaatioalgebran tutkimuksesta, katso luku 5 Garcia-Molinan , Ullmanin ja Widomin "Complete" -oppikirjassa [6] .
Tietokanta | |
---|---|
Käsitteet |
|
Objektit |
|
Avaimet | |
SQL | |
Komponentit |