selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
57gointitiedotilmaistaan aggregointioperaatioilla, joita ovat ylläolevassa luettelossa operaatiot 2-5. Nämä operaatiot on lainattu deduktiivisilleoliotietokannoille suunnitellusta Prolog++ -poh<strong>ja</strong>isesta ky<strong>selykielen</strong> prototyypistä[Christensen, 1998]. Tämä siksi, että ne sopivat lähes sellaisinaan tutkielmanky<strong>selykielen</strong> tarpeisiin.Where-primitiivi (alkuperäiseltä nimeltään provided) on kyselyn muodostamisenkannalta keskeinen. Primitiivin argumentilla arg1 käyttäjä ilmaisee tulosrelaationmuodon, johon hän poimii haluamansa muuttu<strong>ja</strong>t oikealla puolellaolevasta kyselyilmauksesta. Where-primitiivi muistuttaa relaatioalgebran valintaoperaatiota,jolla halutut relaation attribuutit valitaan tulosjoukkoon. Whereprimitiivinsoveltamisella valitaan kuitenkin relaation attribuuttien si<strong>ja</strong>sta kyselyssämukana olevia muuttujia. Tällöin voidaan jättää vastauksesta kyselyssäilmenevät, mutta loppukäyttäjän näkökulmasta merkityksettömät muuttu<strong>ja</strong>tpois. Where-primitiivillä on kuitenkin monipuolisemmat käyttömahdollisuudet,mitä relaatioalgebran valinta-operaattorilla. Where –primitiivin vasemmallepuolelle tuleva tulos ilmaistaan tuple-rakenteina. Käyttäjä voi itse valita tuloksessakäytettävän tuplen nimen. Jos tuplen muuttu<strong>ja</strong>t on arvotettu olioiksi olioita,niihin voi soveltaa : -primitiiviä, jolla olion tietyn attribuutin arvo saadaantulokseen. Primitiivin käyttötapa tulosjoukon yhteydessä eroaa kuitenkin edelläesitetystä. Relaatiossa ei nimittäin käytetä sulku<strong>ja</strong> ominaisuuden nimen jälkeen.Pelkkä ominaisuuden nimi siis riittää tulosjoukon yhteydessä. Jos tuloksessailmaistaan : -primitiivi oliolle, jolla ei ole kyseistä ominaisuutta, niin vastaukseksitähän kohtaan tuple-rakenteessa saadaan arvo null.Where-primitiivin arg1:ssä ilmaistut tuplen alkioina olevat muuttu<strong>ja</strong>t arvottuvatjoillakin arvoilla. Vastaus ilmaistaan relaationa <strong>ja</strong> relaation tuplet tulostetaanomille riveilleen allekkain. Primitiivi poistaa kaikki samat tuplet, relaatiomallintapaan. Esimerkiksi kyselytulos(X) where X is_component_type_of steeringtulostaa vastaukseksi esimerkkitietokannasta seuraavat yksipaikkaiset tulostuplet.Toisin sanoen muuttu<strong>ja</strong> X on arvottunut where-primitiivin oikealla puolellaolevan kyselyilmauksen mukaisesti.tulos(front_axle)tulos(handlebars)tulos(pedals)tulos(wheel)