310 likes | 423 Views
Relaatioalgebran perusoperaatioita. Relaatioalgebra muodostuu joukosta operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita. Alun perin operaatioita esiteltiin kahdeksan, myöhemmin niitä on esitelty lisää.
E N D
Relaatioalgebran perusoperaatioita • Relaatioalgebra muodostuu joukosta operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita. • Alun perin operaatioita esiteltiin kahdeksan, myöhemmin niitä on esitelty lisää. • Operaatiot voidaan kuitenkin ilmaista viiden (kuuden!) perusoperaation avulla: valinta (selection), projektio (projection), ristitulo (Cartesian product), yhdiste (set union) ja erotus (set difference) (… sekä uudelleennimeäminen, rename!). • Näistä yhdiste, erotus ja ristitulo ovat joukko-opin perusoperaatioita. • Valinta ja projektio ovat relaatioalgebran omia operaatioita. • Hahmotelma operaatioista kuvassa 1a, 1b ja 1c. tMyn
R S R S x 1 a 1 a x = b a 2 2 3 3 a b 1 2 b b 3 Valinta Projektio Ristitulo Kuva 1a. Havainnollistus operaatioista valinta, projektio ja ristitulo. tMyn
R R R S S S Erotus Yhdiste Leikkaus Kuva 1b. Havainnollistus operaatioista yhdiste, leikkaus ja erotus. tMyn
T U B A A A B C B C B C x x a 1 1 x a 1 a 1 b 2 1 y a 1 y a 1 y b 3 z 2 Luonnollinen liitos Ulkoliitos Kuva 1c. Havainnollistus operaatioista luonnollinen liitos ja ulkoliitos. tMyn
Huom! Perusoperaatioita on tosiaan kuusi, siis esim. leikkaus (Set Intersection) voidaan määritellä näiden perusoperaatioiden avulla (erotus, set difference). tMyn
Havainnollistetaan operaatioita tietokannan avulla, jossa on relaatiot: Toimipiste(tpNro, katuOs, kaupunki, postiNro) Henkilokunta(hloNro, eNimi, sNimi, asema, sPuoli, sAika, palkka, tpNro) Vuokrattavat(tilaNro, katuOs, kaupunki, postiNro, tyyppi, huoneLkm, vuokra, omistNro, hloNro, tpNro) Asiakas(asiakasNro, eNimi, sNimi, puhNro, paremm, maxV) Omistaja(omistajaNro, eNimi, sNimi, osoite, puhNro) Esittely(asiakasNro, tilaNro, esPaiva, komm) • Tietokanta kuvaa yritystä, joka harjoittaa tilojen vuokrausvälitystä. tMyn
Toimipiste Henkilokunta tMyn
Vuokrattavat Asiakas tMyn
Omistaja Esittely tMyn
Valinta (Selection) • Valintaoperaation kohteena on yksi relaatio. • Valinnassa poimitaan tulosrelaatioon valintaehdon täyttävät lähtörelaation monikot (rivit). • Esim. tulostetaan relaatiosta Henkilokunta kaikki ne henkilöt, joiden vuosipalkka on suurempi kuin 31000€, kuva 2. • Valinnasta voidaan tehdä monipuolisempi loogisilla operaattoreilla AND, OR tai NOT. tMyn
Kuva 2. Valinta-operaation tekeminen Henkilokunta-relaatiosta. tMyn
Projektio (Projection) • Tämä on relaatioalgebran oma operaatio, joka kohdistuu yhteen relaatioon. • Sen tuloksena saadaan uusi relaatio, jossa on ainoastaan valitut sarakkeet alkuperäisestä relaatiosta. • Esim. tulostetaan relaatiosta Henkilokunta tiedot kaikkien henkilöiden palkasta. Otetaan mukaan sarakkeet hloNro, eNimi, sNimi ja palkka, kuva 3. tMyn
Yhdiste (Set Union) • Yhdisteen avulla voidaan muodostaa relaatio, joka sisältää kahden samanrakenteisen relaation kaikki monikot. • Mikäli monikko esiintyy kummassakin relaatiossa, se tulee tulosrelaatioon vain kertaalleen. • Milloin kaksi relaatiota ovat samanrakenteisia (union-compatible)? • attribuuttien lukumäärä sama • vastinattribuuttien arvoalueiden on oltava sama • siis vastinattribuuttien nimet eivät välttämättä olla samoja! tMyn
Esim. tulostetaan kaikki ne kaupungit joissa on joko toimipiste tai sitten vuokrattavia kohteita. • Nyt täytyy ensimmäiseksi saada relaatiot Toimipiste ja Vuokrattavat samanrakenteisiksi. • Se tapahtuu helposti: otetaan kummastakin relaatiosta projektio attribuutin kaupunki avulla. Jos kaupunki esiintyy useamman kerran, niin duplikaatit poistetaan. • Sitten suoritetaan yhdiste-operaatio näille kahdelle projektiolle, kuva 4. tMyn
Erotus (Set Difference) • Erotuksessa tulosrelaatioon otetaan mukaan ne relaation monikot, jotka eivät sisälly erotettavaan relaatioon. • Relaatioiden tulee olla samanrakenteisia. • Esim. tulostetaan ne kaupungit, joissa on toimipiste, mutta joissa ei ole tiloja vuokrattavana. • Jälleen täytyy ensimmäiseksi saada relaatiot Toimipiste ja Vuokrattavat samanrakenteisiksi. • Siis otetaan kummastakin relaatiosta projektio attribuutin kaupunki avulla. Jos kaupunki esiintyy useamman kerran, niin duplikaatit poistetaan. • Sitten suoritetaan erotus-operaatio näille kahdelle projektiolle, kuva 5. tMyn
Leikkaus (Set Intersection) • Leikkaus on operaatio, jolla saadaan tulokseksi kahden relaation ne monikot, jotka ovat samoja kummassakin relaatiossa. • Relaatioiden tulee olla samanrakenteisia. • Esim. tulostetaan ne kaupungit, jossa on toimipiste ja ainakin yksi vuokrattava kohde. • Jälleen täytyy ensimmäiseksi saada relaatiot Toimipiste ja Vuokrattavat samanrakenteisiksi. tMyn
Siis otetaan kummastakin relaatiosta projektio attribuutin kaupunki avulla. Jos kaupunki esiintyy useamman kerran, niin duplikaatit poistetaan. • Sitten suoritetaan leikkaus-operaatio näille kahdelle projektiolle, kuva 6. tMyn
Ristitulo (Cartesian Product, Cross Product) • Kahden relaation ristitulo sisältää lähtörelaatioiden kaikkien rivien kombinaatiot. • Tuloksena on rivejä lähtörelaatioiden rivien lukumäärien tulon verran. • Esim. tulosta niiden asiakkaiden nimet ja kommentit, jotka ovat käyneet katsomassa kohteita. • Asiakkaiden nimet ovat Asiakas-relaatiossa ja kommentit ovat Esittely-relaatiossa. • Aluksi on tehtävä projektio Asiakas-relaatioon attribuuttien asiakasNro, eNimi ja sNimi sekä projektio Esittely-relaatioon attribuuttien asiakasNro, tilaNro ja komm., kuva 7a. tMyn
Suoritetaan ristitulo näiden kahden relaation välillä x Kuva 7a. Aluksi otetaan tarpeellinen projektio relaatioista Asiakas ja Esittely. tMyn
asiakas.asiakasNro esittely.asiakasNro Kuva 7b. Tehdään ristitulo äskeisten projektioiden kanssa…., tässä alku. tMyn
Kuva 7b. Tehdään ristitulo äskeisten projektioiden kanssa…, tässä loput. tMyn
Kuten huomataan, relaatiossa on paljon ylimääräistä informaatiota! On siis tarve tehdä valinta-operaatio, jonka avulla haetaan ne rivit, jossa asiakas.asiakasNro= esittely.asiakasNro, siis kuva 7c. tMyn
Kuva 7c. Niiden asiakkaiden nimet ja kommentit, jotka ovat käyneet katsomassa jotakin kohdetta. tMyn
Liitos (Join) • Liitosoperaatio on tyypillisesti hyvin vaikeasti toteutettavissa relaatiotietokantasovelluksissa. • Juuri tämä operaatio aiheuttaa suorituskykyongelmia relaatiotietokantasovelluksiin. • Liitoksia on hyvin monenlaisia. • Toiset ovat hyvinkin tarpeellisia, toiset ehkä vähemmän... tMyn
Luonnollinen liitos (Natural join) • Liitoksessa kaksi relaatiota yhdistetään tulosrelaatioksi. • Liitos perustuu yhdistettävien relaatioiden attribuuttien avulla ilmaistavaan ehtoon. • Ensin muodostetaan periaatteessa lähtörelaatioiden tulo, jonka riveistä valitaan annetun ehdon täyttävät rivit. • Luonnollinen liitos on liitos, jossa ei liitosehtoja anneta. • Liitos muodostetaan automaattisesti siten, että liitosehtona vaaditaan kaikkien vastinattribuuttien yhtäsuuruutta. • Vastinattribuutti otetaan tulokseen mukaan vain kertaalleen. tMyn
Niinpä siis äskeisen esimerkin (karteesinen tulo) lopputulos hieman yksinkertaistuu: Kuva 8. Niiden asiakkaiden nimet ja kommentit, jotka ovat käyneet katsomassa jotakin kohdetta. tMyn
Ulkoliitos (Outer join) • Ulkoliitos on yhdisteen ja liitoksen yhdistelmä, jolla saadaan mukaan tulosrelaatioon myös sellaiset lähtörelaation monikot, joille liitosehdon mukaisesti ei löydy paria toisesta lähtörelaatiosta. tMyn