selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
17Kyselyn perusosat ovat samankaltaisia kuin relaatiotietokantojen yhteydessälaa<strong>ja</strong>ssa käytössä olevassa SQL kyselykielessäkin. Select-osassa kerrotaan, mitähalutaan, eli esimerkin tapauksessa oliota tarkoittavan p-muuttu<strong>ja</strong>n merkkiattribuutinarvo. From–osassa ilmaistaan, että p:n tulee olla olio polkupyöräluokassa.Where-osa puolestaan ilmaisee ehdon, jonka olion p tulee täyttää. Ilmaisussap:llä viitataan mihin tahansa olioon luokassa Polkupyörä. Where-osassaolevassa ilmaisussa ”p.oh<strong>ja</strong>us.pyörä.halkaisi<strong>ja</strong>” alleviivattu osa on polkuesitys.Siinä ilmaistaan, että halkaisi<strong>ja</strong>-attribuuttiin päästään polkupyörän oh<strong>ja</strong>uskomponentissakomponenttina olevan pyörän kautta käsiksi. Käyttäjän täytyy siisosata navigoida rakenteessa. Tämä tarkoittaa sitä, että hänen täytyy tietää tarkalleenkomposiitin rakenne attribuutteineen, jotta hän voisi ilmaista tiettyynkomponenttiin johtavan polun. Jos osa-kokonaisuusrakenne on monimutkainen,navigointi tekee kyselyistä vaikeita. Pelkästään iteraattorin idean ymmärtäminenon hankalaa <strong>ja</strong> rajoittavaa. Lisäksi jos oltaisiin kiinnostuneita eri tyyppisistäpolkupyöristä, kyselyä ei voitaisi ulottaa useampaan tyyppiin yhtä aikaa.Tämä johtuu siitä, että rakenne on usein erilainen eri polkupyörissä. Tällöinhalkaisi<strong>ja</strong>-attribuuttiin johtava navigointipolkukin olisi erilainen eri tyypeillä.Monimutkaisissa kyselyissä voidaan lisäksi joutua soveltamaan sisäkkäisiäiteraattorirakenteita. Tällöin ilmaisu muuttuu huomattavasti vaikeammaksi.Havainnollistan sisäkkäisiä iteraattoreita sisältäviä kyselyjä esimerkein Qaltietomallia<strong>ja</strong> -kyselykieltä käsittelevässä kappaleessa. Navigoinnin ongelma onyleinen oliomallissa. Muutkin oliomalliin poh<strong>ja</strong>utuvat kyselykielet vaativatkäyttäjältä tietoa kompleksisten olioiden rakenteesta <strong>ja</strong> näissä olevista attribuuteista.[Carey et al., 1988].3.3.2. Qal-tietomalli <strong>ja</strong> -kyselykieliJoissakin oliomalleissa käytetään funktionaalisille ohjelmointikielille ominaistaohjelmointitapaa. Tällöin kieleen sisällytetään valmiita funktioita, joiden avullakyselyjä suoritetaan. Funktiot palauttavat tuloksen, johon voidaan edelleensoveltaa funktiota. Käyttäjän täytyy tällöin tietää funktion hyväksymät parametrit<strong>ja</strong> funktion palauttama arvo. Esimerkkinä tehokkaasta funktioita hyödyntävästäkyselykielestä tarkastelen QAL-kieltä [Savnik et al., 1999]. Kieltä onmyös ehdotettu kompleksisten objektien käsittelyyn. QAL on ilmaisuvoimainenkyselykieli, joka poh<strong>ja</strong>utuu oliomalliin aivan kuten O 2 -oliomallikin. Oliot <strong>ja</strong>luokat esitetään pääpiirteittäin samaan tapaan kuin O 2 :ssa. Esimerkkinä QALluokanmäärittelystä tarkastelen department-luokkaa. Siinä varatut sanat ovatlihavoitu<strong>ja</strong>. Luokka määritellään seuraavasti: