11.07.2015 Views

selykielen suunnittelu ja toteutus Samu Viita

selykielen suunnittelu ja toteutus Samu Viita

selykielen suunnittelu ja toteutus Samu Viita

SHOW MORE
SHOW LESS

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)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!