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 *

LIITTEET 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'.

1.1.1 Näyttö

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ä

  1. Suoritetaan kysely
  2. Onko kysely syntaktisesti oikein (THKJ tarkistaa)
  3. Ovatko kaikki tarpeelliset taulut mukana vastauksessa
  4. Onko vastauksessa mukana mukana tarpeettomia tauluja
  5. Tutkitaan ovatko kaikki pakolliset sarakkeet mukana
  6. Tarkastetaan esiintyykö sarake sisällöllisesti toisteisena
  7. Tarkastetaan onko vastauksessa liikaa sarakkeita
  8. Tarkastetaan onko vastauksen rivimäärä oikea
  9. Tarkastetaan onko tarkistussumma oikein
  10. Tarkastetaan onko vastauksen järjestys oikein (tarkastetaan kyselyä analysoimalla)

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.

2.1 Sivusiirtymäkaavio

Kaaviossa 11. on esitetty laajennetulla toiminnallisuudella varustetun SQL-Trainerin sivusiirtymäkaavio.

Kaavio 11. Käyttöliittymän siirtymäperiaate

 

 

2.2 Tietokantakuvaus

Kaaviossa 12. on esitetty SQL-Trainer tietokanta tarpeellisin laajennuksin. Aputaulun pstemp toteutus tarkentuu suunnitteluvaiheessa.

Kaavio 12. SQL-Trainer tietokanta

 

 

2.2.1 Tietomäärittely

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

 

3 Aikataulu

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

3.1 Projektikaavio

Liitteessä 1. on esitetty tarkennetusti projektin elinkaari. Toteutusvaiheen tehtävänjako tarkentuu määrittely- ja suunnitteluvaiheissa.