Ohjelmistotuotanto kesä 2000 - SQLtrainer
Helsingin yliopisto - Tietojenkäsittelytieteen laitos
© OHTU/SQLtr, kesä 2000

SQL-trainer - Kuvaus nykyisestä järjestelmästä

Tietokantojen perusteet -kurssilla on ollut syksystä -99 käytössä laskuharjoitukset korvaava harjoitteluohjelmisto (http://www.cs.helsinki.fi/u/laine/tikape/ftrainer.html). Harjoitteluohjelmisto antaa käyttäjille joukon ongelmia, jotka heidän on ratkaistava SQL-kyselyinä. Ohjelmisto kirjaa käyttäjien vastaukset, analysoi ne ja antaa palautetta vastauksen oikeellisuudesta. Oikein ratkaistut tehtävät tuottavat suorituspisteitä. Harjoitteluohjelmiston tietokantana oli syksyllä 99 Solid-kanta ja keväällä 2000 Oracle-kanta. Ohjelmisto on toteutettu Java-servlet tekniikalla.

Ohjelman toiminta

Ohjelmalla voi harjoitella SQL-kyselyjä. Ohjelma tarjoaa käyttöliittymän, jonka kautta opiskelija voi antaa kyselyn ja saa tuloksena kyselyn vastauksen sekä tietoa kyselyyn liittyvistä ongelmista. Ohjelman käyttöliittymä on sekä suomen- että englanninkieinen. Opiskelijalla on käytettävissään joukko tauluja (englanninkielisiä). Taulujen rakenne ja sisältö kuvataan avustustiedostossa. Järjestelmä voi käyttää mitä tahansa käyttäjälle harkka näkyviä tauluja.

Kirjoittautuessaan järjestelmään opiskelija valitsee itselleen käyttäjätunnuksen ja salasanan. Opiskelija voi halutessaan kirjata henkilötietonsa. Jos hän ei kirjaa henkilötunnustaan ei tuloksia voi kytkeä kurssikirjanpitoon. Seuraavilla käyttökerroilla opiskelija pääsee antamalla käyttäjätunnuksensa ja salasanansa.siihen tilanteeseen, johon hän edellisellä kerralla päätyi.

Järjestelmä esittää käyttäjälle listan tehtävistä. Listassa näkyvät yrityskertojen lukumäärä ja onko käyttäjä onnistunut jo ratkaisemaan tehtävän. Listalta pääsee vastaamaan tehtävään. Tehtäviin voi vastata missä järjestyksessä tahansa. Samaa tehtävää voi yrittää ratkaista useita kertoja. Käyttäjän tehtävään antama vastaus tarkastetaan ja kirjataan tietokantaan. Annetun vastauksen voi valita pohjaksi uuteen vastausyritykseen joko samalle tai eri tehtävälle.

Tarkistuksessa

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

Käyttäjälle annetaan syntaksivirheestä palautteena tkhj:ltä saatu virheilmoitus. Muista virheistä annetaan virhekohtaiset omat ilmoitukset. Jos kysely tuotti tulostaulun se esitetään käyttäjälle.

Ohjelman tekniikka

Järjestelmä käyttää seuraavia systeemitauluja

Järjestelmän käytön kannalta keskeinen on taulu pstask. Siinä annetaan tehtävä ja kuvaillaan oikea vastaus. Tehtävä annetaan sekä suomeksi että englanniksi. Vastauksen kuvailuun liittyvät seuraavat tiedot:

ok_rows integer,

Oikean vastauksen koko riveinä

nonunique integer,

Vastauksen koko, jos välttämätön unique määre on jäänyt pois

ok_cols integer,

Vastauksen sarakkeiden enimmäismäärä

ok_checkable varchar(32),

Tarkistussummasarakkeen nimi

ok_checkvalue integer,

Oikeasta vastauksesta laskettu tarkistussumma

ordered char,

Onko järjestettävä (ei ole käytössä)

neededcols varchar(120),

Välttämättömien sarakkeiden luettelo, Sarakenimet annetaan pilkulla eroteltuina

eqpairs varchar(120),

Identtiset sarakeparit (sarake1=sarake2). Tällaisia ei ole syytä ottaa mukaan tulokseen.

included varchar(120),

Kyselyyn sisältyvä merkkijono jota käytetään järjestysmääreen tarkistukseen. Ennen vertailua kyselysta karsitaan turhat välilyönnit ja tarkentimet.

col_max integer,

Vastauksen sarakkeiden määrä (tämä on tarpeeton)

needed_tabs varchar(120),

Välttämättömien taulujen luettelo, taulunimet pilkulla eroteltuna. Tuottaa virhe ilmoituksen jos jokin näistä puuttuu

needless_tabs varchar(120),

Tarpeettomien taulujen luettelo. taulunimet pilkulla eroteltuina. Tuottaa virheilmoituksen, jos jokin näistä on mukana

Kaavio 1. Taulun pstask sarakkeet

Tehtävät näytetään tehtävänumerojärjestyksessä.

Ohjelman kaavioita


Kaavio 2. Nykyohjelman sivurakenne


Kaavio 3. Nykyohjelman luokkarakenne (osittain)


Kaavio 4. Nykyohjelman tietokantarakenne

© OHTU/SQLtr, kesä 2000