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.
13kokonaisuussuhteiden yhteydessä on huomattavasti intuitiivisempaa, kuinnormaalin relaatiomallin yhteydessä.Nf 2 –relaatiomallille on kehitelty sekä formaale<strong>ja</strong> että loppukäyttäjälle tarkoitettu<strong>ja</strong>kyselykieliä [Korth and Roth, 1987]. Helppokäyttöiset kielet ovatSQL-ky<strong>selykielen</strong> kaltaisia. Nf 2 –relaatiomallin kyselykielillä on samat operaatiotkuin normaalilla relaatioalgebrallakin. Tämän lisäksi useissa kielissä on kaksiuudelleenstrukturointioperaatiota, nest <strong>ja</strong> unnest. Nest -operaatio lisää yhdenuuden hierarkiatason nf 2 –relaatioon. Operaatiolle annetaan parametriksi joukkoattribuutte<strong>ja</strong> <strong>ja</strong> se muodostaa näistä attribuuteista uuden relaatioarvoisenattribuutin. Unnest -operaatio on vastakkainen operaatio nest-operaatiolle. Sepoistaa yhden hierarkiatason nf 2 –muotoisesta relaatiosta. Nf 2 –relaatiolla on siisparemmat mahdollisuudet tiedon strukturointiin, vaikka normaali relaatiomallipystyykin tallettamaan saman informaation. Nf 2 –relaatiolla pystytään siis mallintamaankomponentit attribuutteihin, jolloin tiedon esitys ei ole niin ha<strong>ja</strong>naista.Tämä tekee kokonaisuudesta helpomman hallita, koska komposiitit <strong>ja</strong> komponentitovat samassa rakenteessa.Tarkastellaan seuraavaksi yksinkertaista kaaviota: OPISKELIJA(NIMI,KURSSI), joka on opiskeli<strong>ja</strong>sta tehty nf 2 –relaatiokaavio. Kaaviossa OPISKELIJAon relaation nimi. Relaatiossa oleva NIMI on atominen attribuutti, <strong>ja</strong> KURSSIattribuuttion relaatioarvoinen attribuutti muotoa KURSSI(KNIMI,ARVOSANA). Ekstensionaalisella tasolla tämä tarkoittaa sitä, että jokaista opiskeli<strong>ja</strong>nnimeä kohti voi esiintyä useita KNIMI-ARVOSANA -pare<strong>ja</strong>, jotka yhdessämuodostavat opiskeli<strong>ja</strong>n nimeen liittyvän relaation ilmentymän.Nf 2 –muotoiseen relaatiomalliin perustuvat kyselykielet ovat tavallisestiSQL-kielen laajennuksia, <strong>ja</strong> niitä on ehdotettu kompleksisten rakenteiden käsittelyynsoveltuviksi kyselykieliksi. Niitä on kuitenkin suhteellisen vaikea käyttää,koska käyttäjän täytyy ilmaista uudelleenstrukturointi -operaatiot. Tämänvuoksi monimutkaisia rakenteita sisältävien objektien käsittelyssä kyselynmuodostaminen on vaikea loppukäyttäjälle. Kyselyjen tekeminen muistuttaausein enemmänkin proseduraalista ohjelmointikieltä, kuin deklaratiivista kyselyjentekemistä. Tähän ongelmaan on tarjottu Timo Niemen <strong>ja</strong> Kalervo Järvelinintoimesta ratkaisua, jossa käyttäjän ei tarvitse huolehtia itse uudelleenstrukturointioperaatiosta[Niemi and Järvelin, 1996]. Heidän Prolog-toteutuksessaankäyttäjä määrittelee tuloksen rakenteen nf 2 –mallin mukaisesti <strong>ja</strong> kertoo, mistärelaatioista vastausta haetaan, sekä mitkä ehdot tulokseksi tulevan nf 2 –relaationtulee täyttää. Kuitenkaan tämäkään ratkaisu ei pysty välttämään tiettyjä ongelmia,joita tämän tutkielman esittelemässä kyselykielessä pyritään välttämään.Nf 2 –relaatiomalliin poh<strong>ja</strong>utuvan ky<strong>selykielen</strong> käyttäjällä täytyy olla tietoasekä osa-kokonaisuussuhteen rakenteesta, että attribuuttien <strong>ja</strong> relaatioiden