SISÄLLYS
1 SQL-Trainer uusien ominaisuuksien määrittely
*1.1 Relaatioalgebran harjoitteluväline
*1.1.1 Näyttö
*1.1.2 Relaatioalgebrakäyttöliittymän toiminta
*1.1.3 Käyttöliittymän virheilmoitukset
*1.1.4 Relaatioalgebran harjoitteluvälineen prosessit
*1.2 Tietokannan ylläpito-operaatioiden harjoittelu
*1.2.1 Ylläpito-operaatioiden toiminnallinen määrittely
*1.2.2 Suoritettavan SQL:n validointi
*1.3 Tehtävienlaadinnan apuvälineet ja tarkistaminen
*1.3.1 Tehtävänlaadinnan käyttöliittymän toiminnallinen määrittely
*1.3.2 Tarkistusmenetelmän parantaminen
*2 SQL-Trainer laajennetut ohjelmarakenteet
*2.1 Sivusiirtymäkaavio
*2.2 Tietokantakuvaus
*2.2.1 Tietomäärittely
*3 Aikataulu
*3.1 Projektikaavio
*
1 SQL-Trainer uusien ominaisuuksien määrittely
Tässä dokumentissa määritetään OHTU SQL-Trainer kesä 2000 –ryhmän toimeksiannetun SQL-Trainer ohjelmaan laadittava uusi toiminnallisuus.
1.1 Relaatioalgebran harjoitteluväline
Relaatioalgebran harjoittelu toteutetaan siten, että käyttäjä voi koota lausekkeen yhdelle taululle tehtävistä tai kahden taulun välisistä operaatioista. Jokaisen operaation välitulos on valittavissa
käyttöön jatkokehittelyä varten. Saatuaan aikaan haluamansa lausekkeen, käyttäjä voi nappia painamalla lähettää relaatioalgebrakyselyn, johon hän saa vastauksen tauluna aivan samalla tavalla kuin SQL-harjoittelussakin. Mahdollisista virheistä lopullisessa kyselyssä kommentoidaan myös samalla tavalla kuin SQL-harjoittelussa, mikä on huono tietokantajärjestelmän
virheiden tapauksessa, mutta väliin on vaikea tehdä kaikkien mahdollisten virheilmoitusten 'relaatioalgebralisoijaa'.
Relaatioalgebran harjoittelun sivu on muuten samanlainen kuin SQL-harjoittelun sivu, mutta kysely annetaan tekstikentän sijasta kaaviossa 1. näkyvällä käyttöliittymällä.
Kaavio 1. Relaatioalgebran harjoittelunäyttö
Käyttö tapahtuu askeleittain siten, että opiskelija valitsee operaatioon tarvittavan taulun tai taulut näytöltä ja sen jälkeen haluamansa alkeisoperaation. Harjoittelu etenee alkeisoperaatioita yhdistelemällä askel kerrallaan. Kun opiskelija katsoo saavuttaneensa tehtävänannossa pyydetyn tuloksen, hyväksytään näytöllä oleva tulos vastaukseksi painikkeella.
Jokainen alkeisoperaation tuottama relaatio talletetaan tietokantaan. Näin opiskelija voi palata halutessaan minkä tahansa tehtävän välivaiheeseen ja jatkaa tehtävää tai muuttaa saamaansa vastausta. Välirelaatioita ei poisteta tietokannasta, vaan ne säilötään. Opiskelija voi valita, mitä välivaiheita tauluvalintalistoissa näkyy.
1.1.2 Relaatioalgebrakäyttöliittymän toiminta
Tehtävänanto annetaan suomeksi tai englanniksi samaan tapaan kuin SQL-tehtävissäkin ylimpänä. Operaatiot on jaettu kahteen ryhmään nappeja sen mukaan, koskevatko ne yksittäistä taulua vai ovatko ne kahden taulun välisiä. Täten siis operaatiota ovat vasemmaisimpana ylhäältä alas projektio, valinta ja uudelleennimeäminen. Taululistojen välissä olevat operaatiot ovat leikkaus, yhdiste, erotus, ristitulo ja liitos. Operaationapin painallus lähettää tiedon käsittelevälle proseduurille, joka tulostaa samanlaisen sivun, mutta lisää taululistoihin operaation tulosta vastaavan taulun ja muuttaa näkyvää käsiteltävää relaatioalgebran lauseketta tehdyn operaation
sisältäväksi. Jos operaatiota ei pystytä suorittamaan, tulostetaan vastaava sivu, jolla kerrotaan myös virheen syystä. Yleensä virhe johtuu siitä, että ehdot-kenttään ei ole laitettu mitään. Kannattaa huomata, että jos liitosoperaatiolle ei anna ehtoja, ohjelma yrittää luonnollista liitosta.
Ehdot-kenttään tulee laittaa operaatioon tarvittava lisätieto. Projektiota tehtäessä listataan halutut taulun sarakkeet pilkulla erotettuna.
Valintaa tai liitosta tehtäessä annetaan valintakriteeri loogisena lausekkeena, jossa saa esiintyä attribuuttien nimiä, sql:n arvojoukkojen arvoja, vertailuoperaattorit =, <, >, <=, >= ja <> sql:n syntaksin mukaisesti, sekä loogisia operaattoreita not, and ja or. Jos liitoksesta jättää pois ehdon, järjestelmä yrittää luonnollista liitosta.
Kun nimetään sarakkeita uudelleen, uudelleen nimettävät sarakkeet annetaan muodossa sarakkeen nimi = uusi nimi, pilkulla erotettuna.
Kaikki käyttäjän saamat välitulokset ovat valittavissa menulistasta (Tauluvalikot) jatko-operaatioita varten. Oikeimman puoleiset valintanapit on tarkoitettu suodattamaan listoja, niillä voi valita näkyykö listoissa vain tehtävien perustaulut, vain tämän tehtävän välitaulut, vain välitaulut, jotka on saatu samana päivänä kuin kyselu vai kaikki käyttäjän koskaan tekemät välitaulut. Välitulokset esitetään listassa relaatioalgebrana jos toteutusympäristön merkistö sen sallii.
1.1.3 Käyttöliittymän virheilmoitukset
Käyttöliittymää on mahdollista yrittää käyttää väärin mm. jättämällä operaatioille pakolliset lisäehdot antamatta. Virheilmoitukset näytetän käyttäjälle selkokielisenä. Virheilmoituksia ovat:
"Projektiossa ei annettu haluttujen sarakkeiden nimiä. Projektiolla voi valita relaatiosta nähtäväksi halutut sarakkeet. Sarakkeet pitää antaa Ehdot-kohtaan pilkulla erotettuna."
Tämä tulee, jos Ehdot -kohta on jätetty projektiossa tyhjäksi. Jos Ehdot-kohtaan laitetaan jotain muuta kuin järkeviä sarakkeiden nimiä, tämä ei ilmene ellei kyselyä suoriteta.
"Valinnassa ei annettu perusteita rivien valinnalle. Valinta -operaatiolla voi relaatiosta valita tietyn ehdon täyttävät rivit. Ehto pitää antaa Ehdot-kohtaan loogisena lausekkeena, kannattaa tutustua käyttöohjeeseen."
Tämä tulee jos Ehdot-kohta on jätetty tyhjäksi valinnassa. Taaskaan, jos Ehdot-kohtaan laitetaan jotain järjetöntä, tämä ei välttämättä ilmene heti.
"Uudelleennimeämisoperaatiolla voi antaa sarakkeille uudet nimet. Ne pitää antaa muodossa Sarakkeen nimi=uusi nimi, pilkulla erotettuna."
Jos jättää uudelleennimeämisoperaatiosta pois, mitä nimetään miksikin, saa tämän virheilmoituksen.
"Kohdetaulu pitää valita. Valittu operaatio tarvitsee taulun, jolle se tehdään. Taulun voi valita vasemmanpuoleisesta listasta."
"Valittu operaatio on kahden taulun välinen operaatio. Kummastakin valikosta on valittava taulu, jotta operaatio voitaisiin suorittaa."
Yllä esitetyistä virheilmoituksista näytetään sopivampi, jos on jätetty jompikumpi tauluista pois operaatio-nappia painettaessa.
1.1.4 Relaatioalgebran harjoitteluvälineen prosessit
Kaaviossa 2. on esitetty edellisessä luvussa määritellyn relaatioalgebran käyttöliittymän sisäinen toimintamalli.
Kaavio 2. Relaatioalgebran käyttöliittymän tietovuokaavio
1.2 Tietokannan ylläpito-operaatioiden harjoittelu
SQL-Trainer järjestelmää laajennetaan kattamaan INSERT, UPDATE ja DELETE SQL-lauseet. Kyseisiä operaatioita harjoitellaan samalla käyttöliittymällä kuin SQL -tehtäviä. Toiminnalli-suus toteutetaan olemassa olevia toimintoluokkia laajentamalla sekä uusia lauseita käsittävien toimintohaarojen lisäyksellä. Käyttöliittymän sivujen siirtymäperiaate käy ilmi kaaviossa 3.
Kaavio 3. Ylläpito-operaatioiden harjoittelun käyttölittymän siirtymäkaavio
Kuten nykyjärjestelmässä, ylläpito-operaatiotehtävissä voidaan jättää useita vastausyrityksiä, jotka talletetaan tietokantaan.
Kaavio 4. Ylläpito-operaatioiden harjoittelun vastaus/tehtävä suhdekaavio
Ylläpito-operaatiot toteutetaan siten, että varsinaisiin harjoittelutauluihin ei tehdä muutoksia, vaan muutokset talletetaan aputauluun pstemp (ks.luku 2). Aputauluun talletetaan lisätty, muu-tettu tai poistettu rivi lisättynä opiskelijan tunnistetiedoilla. Kun opiskelija on antanut vastauk-sensa hän saa nähtäväkseen alkuperäisen taulun kera aputaulusta löytyvien muutosten. Aputaulussa pidetään muuttunutta tietoa yllä vain siihen asti että muutos tulostetaan opiskelijan nähtäväksi, tämän jälkeen taulusta poistetaan opiskelijalle kuuluvat rivit.
Koska mitään muutoksia ei kohdisteta alkuperäisiin tauluihin opiskelijan tekemät tehtävät kohdistuvat aina tauluihin, jotka on lähtötilanteessa samanlaisia. Tämä mahdollistaa sen, että operaatioita voidaan kohdistaa mihin tahansa järjestelmän tauluun.
1.2.1 Ylläpito-operaatioiden toiminnallinen määrittely
Ylläpito-operaatioiden harjoittelemista varten oleva sivusto toimii suurimmalta osaltaan samalla tavoin kuin jo olemassa oleva SQL harjoittelun sivusto. Kaaviossa 5. on esitetty ylläpito-operaatioiden käyttöliittymän periaate.
Kaavio 5. Ylläpito-operaatioiden harjoittelun käyttöliittymäperiaate
Tehtävä anto -sivun alussa annetaan tehtävä, joko suomeksi tai englanniksi riippuen käyttäjän asetuksista. Tehtävän alla on tekstikenttä, jonne opiskelija kirjoittaa vastaukseksi kyselyn, jonka on tarkoitus tuottaa haluttu ylläpito-operaatio. Valmis -painike lähetetään kysely eteenpäin luokille, jotka tarkistavat sen oikeellisuuden ja sen että tuottiko kysely tehtävässä halutun vastauksen. Lisäksi sivulla on historia -painike, jolla käyttäjä pääsee tarkastelemaan aiempia ratkaisu yrityksiään, ja takaisin tehtävälistaan -painike joka vie käyttäjän takaisin tehtävälistaan.
Valmis -painikkeen tuottamalla palautesivulla tulostuu mahdolliset virheilmoitukset, jos sellaisia on. Virheilmoitukset tulevat joko sql-trainerin luokilta tai suoraan tietokannasta. Lisäksi sivulla näkyy taulu ennen ja jälkeen ylläpito-operaation. Jos vastaus oli väärin sivulla on painike, jolla päästään takaisin tehtävän anto - tai historia -sivulle. Sivulla on myös painike, jolla päästään takaisin tehtävälistaan.
Historia -painike luo sivun, jolta voidaan SQL-puolen tapaan valita joku aiemmista vastauksista pohjaksi uuteen yritykseen. Lisäksi sivulla on painikkeet, joilla päästää takaisin tehtävän anto -sivulle ilman, että mitään tehtävää otetaan pohjaksi ja painike jolla päästään takaisin tehtävälistaan. Käyttöliittymän yleinen toimintaperiaate on esitetty tietovuona kaaviossa 6.
Kaavio 6. Ylläpito-operaatioiden harjoittelun käyttöliittymän tietovuokaavio
Edelleen, vastaustapahtumaprosessia tarkennetaan kaaviossa 7.
Kaavio 7. Tarkennettu ylläpito-operaatioiden harjoittelun käyttöliittymän tietovuokaavio
1.2.2 Suoritettavan SQL:n validointi
SQL-Traineria laajennetaan siten, että kaikki opiskelijoiden syöttämät SQL -lausekkeet tarkastetaan ennen suorittamista. Nykyistä validointimetodia laajennetaan siten, että se hyväksyy ainoastaan seuraavat SQL-operaatiot ja taulunimet:
Operaatiot:
SELECT, INSERT, DELETE, UPDATE
Sallittuja tauluja ovat kaikki muut paitsi järjestelmätaulut, eli:
pscourse, psanswer, psstudent, psstate, pstask, pstopic, pstemp ja psterm
1.3 Tehtävienlaadinnan apuvälineet ja tarkistaminen
SQL-Trainer –tehtävien laadintaa helpotetaan lisäämällä järjestelmään käyttöliittymä tehtävänlaadintaan.
Tehtäviä voidaan antaa erityisen salasanalla suojattavan WWW-käyttöliittymän kautta. Tehtävä annetaan kaaviossa 8. esitetyllä lomakkeella. Käyttäjältä vaaditaan tehtävän otsikko, kuvaus, aiheryhmä, tehtävätyyppi (joku vaihtoehdoista SQL-kysely, SQL-ylläpitotehtävä tai relaatioalgebrakysely) valintanapeista ja esimerkkivastaus SQL-kyselynä samaan tapaan kuin tehtäviä tehdessä. Jopa relaatioalgebran tehtävät annetaan SQL-kyselyinä.
Kaavio 8. Tehtävänlaadinnan käyttöliittymä
Kun käyttäjä suorittaa esimerkkikyselyn, sen tulostaulu tulostetaan sivun alalaitaan samalla tavalla kuin tehtävien tekosivuilla, mutta jokaista saraketta kohden tulostuu nappi, jota painamalla voi hyväksyä tehtävän tehtäväjoukkoon. Tilanne on esitetty kaaviossa 9. Valitusta sarakkeesta järjestelmä laskee sitten tarkistuskoodin. SQLtrainerin tietokannan tauluun pstask talletetaan hyväksyttäessä tarvittavat tiedot tulostaulusta, tarkistuskoodi, tehtävän tyyppi, tehtävänannot, otsikot ja annettu esimerkkikysely.
Kaavio 9. Tehtävänlaadinnan käyttöliittymä tarkistussummavalinnalla
Jos esimerkkikyselyssä on jotain virheitä, järjestelmä antaa tulostaulun sijaan tietokantajärjestelmän virheilmoituksen. Jos kyselyssä esiintyy tauluja, joita tehtävänannon mukaan ei tulisi esiintyä, tästäkin tulostetaan virheilmoitus.
Tehtävän voi jättää myös hyväksymättä ja lomakkeen saa tyhjennettyä tyhjennä-napista, jonka jälkeen voi syöttää uuden tehtävän.
1.3.1 Tehtävänlaadinnan käyttöliittymän toiminnallinen määrittely
Kaavioissa 8. ja 9. esitellyn käyttöliittymän toiminnallisuus esitellään alla.
Kaavio 10. Tehtävänlaadinnan käyttöliittymän toiminnallinen määrittely
1.3.2 Tarkistusmenetelmän parantaminen
Nykyinen vastausten tarkistusmenetelmää on mahdollista parantaa lisäämällä menetelmään seuraavat tarkistukset:
On hyvä huomata, että opiskelijan on mahdollista saada oikea tulos väärällä kyselyllä, joten täysin aukotonta tarkistamismenetelmää ei tämän projektin tuotteena toteuteta.
Tarkastaminen tapahtuu taulukossa 1. esitetyssä järjestyksessä
Taulukko 1. Tarkastusmenetelmän vaiheet
Tarkistussumma lasketaan numeraalisista arvoista summana sekä merkkimuotoisesta sisällöstä siten, että merkkimuotoisen kentän arvoksi lasketaan merkkijonon ensimmäisen ja viimeisen merkin ascii –arvojen summa.
2 SQL-Trainer laajennetut ohjelmarakenteet
Lisättävä toiminnallisuus edellyttää ohjelmiston ja tietokannan laajentamista. Seuraavissa kohdissa on alustavasti esitetty laajennuksissa käytettävät luokat sekä uusi tietokantarakenne ja tietokuvaus.
Kaaviossa 11. on esitetty laajennetulla toiminnallisuudella varustetun SQL-Trainerin sivusiirtymäkaavio.
Kaavio 11. Käyttöliittymän siirtymäperiaate
Kaaviossa 12. on esitetty SQL-Trainer tietokanta tarpeellisin laajennuksin. Aputaulun pstemp toteutus tarkentuu suunnitteluvaiheessa.
Kaavio 12. SQL-Trainer tietokanta
Taulukkoryhmä 1. esittelee tietokannan kenttien sisältämän tiedon.
pscourse Kurssin tiedot
year Kurssin vuosi
term Kurssin lukukausi
startdate Kurssin aloitusajankohta
enddate Kurssin lopetusajankohta
psterm Apurelaatiotaulu, jolla liitetään pscourse ja pstopic loogisesti toisiinsa
year Kurssin vuosi kuten taulussa pscourse, viite-eheys riippuvuus
term Kurssin lukukausi kuten taulussa pscourse, viite-eheys riippuvuus
tno Tehtäväryhmän numero kuten taulussa pstopic, viite-eheys riippvuus
pstopic Tehtäväryhmätaulu
tno Tehtäväryhmän numero
title_fi Tehtäväryhmän otsikko suomeksi
title_en Tehtäväryhmän otsikko englannuksi
tasks Ei käytössä
credits_upto Tehtäväryhmän vanhenemispäivämäärä
psanswer Vastaustaulu
sid Kuten taulussa psstudent, viite-eheys riippuvuus
task_id Kuten taulussa pstask, viite-eheys riippuvuus
trycnt Vastauksien lukumäärä tähän tehtävään
asnw Opiskelijan antama vastaus
trydate Vastausajankohta
response Tehtävän tarkistuksen paluuarvo
extra Tehtävän tarkistuksen mahdollinen lisäviesti
psstate Opiskelijan ehtävästatustaulu
sid Kuten taulussa psstudent, viite-eheys riippuvuus
task_id Kuten taulussa pstask, viite-eheys riippuvuus
lasttry Vastausten lukumäärälaskuri tälle tehtävälle
state Vastauksen tulos tälle tehtävälle
pstask Tehtävätaulu
task_id Tehtävän numero
title_fi Tehtävän otsikko suomeksi
title_en Tehtävän otsikko englanniksi
task_text_fi Tehtävänanto suomeksi
task_text_en Tehtävänanto englanniksi
ok_rows Oikean vastauksen koko riveinä
nonunique Vastauksen koko, jos välttämätön unique määre on jäänyt pois
ok_cols Vastauksen sarakkeiden enimmäismäärä
ok_checkable Tarkistussummasarakkeen nimi
ok_checkvalue Oikeasta vastauksesta laskettu tarkistussumma
ordered Onko järjestettävä (ei ole käytössä)
neededcols Välttämättömien sarakkeiden luettelo. Sarakenimet annetaan pilkulla eroteltuina
eqpairs Identtiset sarakeparit (sarake1=sarake2). Tällaisia ei ole syytä ottaa mukaan tulokseen
tno Tehtäväryhmän numero, johon tämä tehtävä kuuluu, kuten taulussa pstopic, viite-eheys riippuvuus
included Kyselyyn sisältyvä merkkijono, jota käytetään järjestysmääreen tarkistukseen. Ennen vertailua kyselysta karsitaan turhat välilyönnit ja tarkentimet.
col_max Vastauksen sarakkeiden määrä (tämä on tarpeeton)
needed_tabs Välttämättömien taulujen luettelo, taulunimet pilkulla eroteltuna. Ohjelma tuottaa virheilmoituksen jos jokin näistä puuttuu
needless_tabs Tarpeettomien taulujen luettelo. Taulunimet pilkulla eroteltuina. Ohjelma tuottaa virheilmoituksen, jos jokin näistä on mukana
task_type Tehtävätyyppi
task_answer Tehtävän mallivastaus
psstudent Opiskelijatietotaulu
sid Opiskelijan numero. Järjestelmän sisäinen.
lname Sukunumi
fname Etunimi
last_visit Viimeisin käyttöajankohta
HETU Henkilötunnus
SS Salasana selkokielisenä
stnumber Opiskelijanumero. Yliopiston antama.
Taulukkoryhmä 1. Tietomäärittely
Taulukossa 2. on esitetty projektin tärkeimmät ajankohdat:
Määrittely valmis 27.6.2000
Suunnitteludokumentti ja testaussuunnitelma valmiita 12.7.2000
Ohjelmointi 1.7.-1.8.2000
Testaus 1.8.-15.8.2000
Käyttöohje ja ylläpitodokumentti valmiita 7.8.2000
Projekti päättyy 15..30.8.2000
Taulukko 2. Tarkistuspisteet ja tärkeät ajankohdat
Liitteessä 1. on esitetty tarkennetusti projektin elinkaari. Toteutusvaiheen tehtävänjako tarkentuu määrittely- ja suunnitteluvaiheissa.