hyväksymispäivä arvosana arvostelija Tietokantasovelluksen määrittelydokumentti Tuomas Husu <thusu@cs.helsinki.fi> Helsinki 19.4.2008 582203 Tietokantasovellus, kevät 2008 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Sisältö i 1 Johdanto 1 1.1 Järjestelmän tarkoitus.......................... 1 1.2 Toimintaympäristö............................ 1 1.3 Rajaukset................................. 2 1.4 Optiot................................... 2 1.5 Toteutusympäristö............................ 2 2 Yleiskuva järjestelmästä 3 2.1 Sidosryhmäkaavio............................. 3 2.2 Käyttäjäryhmät.............................. 3 2.2.1 Opiskelija............................. 3 2.2.2 Opintoneuvoja.......................... 4 2.2.3 ATK-tukihenkilö......................... 4 3 Käyttötapaukset 4 3.1 Opiskelijan käyttötapaukset....................... 4 3.2 Opintoneuvojan käyttötapaukset.................... 4 3.3 ATK-tukihenkilön käyttötapaukset................... 5 4 Järjestelmän tietosisältö 7 5 Käyttöliittymän hahmotelma 8 6 Tietokannan kuvaus 9 6.1 Relaatiotietokantakaavio......................... 9 6.2 Create table -lauseet........................... 9 Liitteet 1 Tehtävänanto
1 Johdanto 1 Harjoitustyön tarkoituksena on perehtyä tietokantaohjelmointiin ja yksinkertaisten web-sovellusten rakenteisiin sekä web-sovelluksen toteutukseen. 1.1 Järjestelmän tarkoitus Opintoneuvonnan UKK (usein kysytyt kysymykset) -verkkopalvelun avulla voivat opiskelijat etsiä vastauksia usein esitettyihin opiskeluasioita koskeviin kysymyksiin, jolloin jokaisen ei tarvitse kysyä samoja asioita erikseen. Halutessaan opiskelija voi jättää oman kysymyksensä yhteystietoineen. Opintoneuvojat voivat kirjautua tunnuksillaan järjestelmään ja vastata esitettyihin kysymyksiin joko yksityisesti (sähköpostitse) tai julkaisten kysymys-vastaus -parin UKK-listalla. Julkaistavat kysymykset opintoneuvojat jakavat luomiinsa aihepiireihin, jolloin kysymysten etsiminen helpottuu. ATK-tukihenkilöt tai ylläpitäjän statuksen saaneet opintoneuvojat hallinnoivat järjestelmän käyttäjätunnuksia. 1.2 Toimintaympäristö Verkkopalvelu tehdään vapaan lähdekoodin LAMP-alustalle (Linux-Apache-MySQL- PHP) ja se vaatii siis toimiakseen Apache -HTTP-palvelimen, PHP-ohjelmointikielen sekä MySQL-tietokantapalvelimen. WWW-palvelimena käytetään Apachea, koska se on suorituskykyinen ja luotettava sen lisäksi, että se on käytetyin WWW-palvelinohjelma maailmassa. Tietokantana on MySQL, joka on ilmainen ja suorituskykyinen relaatiotietokanta. Sekä PHP että MySQL ovat niin sanottuja cross platform -ohjelmistoja, eli ne toimivat laajasti sekä Windows- että Unix-pohjaisissa käyttöjärjestelmissä. Verkkopalvelun käyttäjä tarvitsee järjestelmää käyttääkseen Javascriptiä ja evästeitä (engl. cookie) tukevalla www-selaimella varustetun laitteen, jolla on muodostettavissa verkkoyhteys järjestelmän palvelimeen. Järjestelmää testattaneen yleisimmillä selaimilla (mm. Microsoft Internet Explorer, Mozilla Firefox) ja se pyritään samaan toimimaan niillä moitteettomasti. Verkkosivujen toteutuksesta pyritään tekemään HTML- ja CSS-standardien mukainen, jolloin se toiminee kaikilla standardin mukaisilla selaimilla. Mobiililaitteita tai muita
2 erikoisia vempaimia ei suunnittelussa erityisesti huomioida. 1.3 Rajaukset Alkuperäisessä tehtävänannossa (liitteenä) mainittu kysymysten osoittaminen jollekin tietylle opintoneuvojalle jätetään toteuttamatta, koska opiskelijat eivät oletettavasti tiedä kuka osaa ja ehtii parhaiten heidän kysymyksiinsä vastata. Tehtävänannossa mainittu yksityinen vastaaminen opiskelijalle toteutetaan siten, että päättäessään vastata yksityisesti opintoneuvoja ottaa yhteyttä haluamallaan tavalla opiskelijan jättämien yhteystietojen avulla, mutta esimerkiksi sähköpostinlähetystoimintoja ei järjestelmään ole tarkoitus sisällyttää. Tehtävänannosta poiketen aihepiirejä ei järjestetä minkään erillisen indeksin mukaan, vaan ne näytetään aakkosjärjestyksessä. Selainyhteys on salaamaton eikä tietoturvaa aseteta toteutuksessa muutenkaan erityisen korkealle sijalle. Tyypillisimmät tietoturvariskit pyritään kuitenkin eliminoimaan sanitoimalla SQL-injektiot pois käyttäjät syötteistä sekä tallentamalla tietokantaan salasanojen sijasta SHA1-tiivisteitä. 1.4 Optiot Ajan salliessa järjestelmään toteutetaan myös haku, jolloin kysymys-vastaus -pareja voi hakea haluamallaan hakuehdolla. Kysymyksiin voitaisiin ajan salliessa liittää myös tieto katselumäärästä, jolloin voitaisiin luoda tiiviitä suosituimpien (esim. top-10 ) kysymysten listoja. 1.5 Toteutusympäristö Toteutusympäristönä on Tietojenkäsittelytieteen laitoksen Alkokrunni-palvelin (url http://db.cs.helsinki.fi/). Palvelinpään toteutusympäristön käyttöjärjestelmä on Linux (Fedora 7), HTTPpalvelin Apache (versio 2.2.6) ja toteutuksen osalta www-ohjelmointikielenä on PHP (Hypertext Preprocessor, versio 5.2.5) ja tietokantapalvelimena MySQL (versio 5.0.27).
2 Yleiskuva järjestelmästä 3 2.1 Sidosryhmäkaavio Sidosryhmäkaaviossa on esitetty järjestelmän käyttäjäryhmät tavallisinpine käyttötapauksineen. Kuva 1: Sidosryhmäkaavio. 2.2 Käyttäjäryhmät 2.2.1 Opiskelija Opiskelija on käyttäjäryhmänä käytännössä kuka tahansa opintoneuvonnan UKKverkkosivuille päätynyt henkilö.
4 2.2.2 Opintoneuvoja Opintoneuvoja on henkilö, jolla on käyttäjätunnus järjestelmään. Opintoneuvoja voi kirjauduttuaan vastata esitettyihin kysymyksiin. 2.2.3 ATK-tukihenkilö ATK-tukihenkilö vastaa järjestelmän teknisesti ylläpidosta ja hallinnoi järjestelmän käyttätunnuksia. 3 Käyttötapaukset 3.1 Opiskelijan käyttötapaukset Kysymysten ja vastausten selailu kuka tahansa voi selailla kysymyksiä ja niihin annettuja vastauksia klikkaamalla etusivulta haluamaansa aihepiiriä ja sen jälkeen klikkaamalla itseään kiinnostavaa kysymystä. Uusimpien kysymysten ja vastausten selailu uusimpia (viimeisimpänä lisättyjä) kysymyksiä ja vastauksia voi selailla valitsemalla lukumäärän (10 uusinta) tai ajanjakson (viikko, kaksi viikkoa, kuukausi), jolta kysymykset haluaa. Kysymysten ja vastausten haku kysymyksiä ja vastauksia voi hakea haluamallaan hakuehdolla ja hakuehtoja vastaavat tulokset näytetään, kuten normaaliselailussakin. Kysymyksen jättäminen kuka tahansa voi jättää lomakkeella kysymyksen opintoneuvojille klikkaamalla Jätä kysymys ja syöttämällä kysymyksen sekä yhteystietonsa niille varattuihin kenttiin. 3.2 Opintoneuvojan käyttötapaukset Järjestelmään kirjautuminen opintoneuvoja kirjautuu järjestelmään klikkaamalla Kirjaudu sisään ja syöttämällä käyttäjätunnuksensa ja salasanansa niille varattuihin kenttiin.
5 Jätettyjen kysymysten selailu järjestelmään kirjauduttuaan opintoneuvoja näkee listan kysymyksistä, joihin ei ole vielä vastattu. Kysymystä klikkaamalla opintoneuvoja voi ryhtyä vastaamaan haluamaansa kysymykseen. Kysymykseen vastaaminen opintoneuvoja voi vastata kysymyksiin valitsemalla vastaamattoman kysymyksen listalta, valitsemalla sopivan aihepiirin ja syöttämällä vastauksen sekä halutessaan hyperlinkin niille varattuihin kenttiin ja klikkaamalla Julkaise. Yksityisesti vastatessaan opintoneuvoja merkitsee kysymyksen vastatuksi klikkaamalla Älä julkaise. Kysymysten ja vastausten muokkaaminen opintoneuvoja voi uusiin kysymyksiin vastatessaan halutessaan muokata kysymysta; esimerkiksi muokata kieliasua julkaisuun sopivammaksi. Jo vastattuja kysymyksiä voi muokata valitsemalla Kaikki kysymykset ja valitsemalla ensin aihepiirin ja sen jälkeen haluamansa kysymyksen. Kaikki kysymykseen liittyvät tiedot (kysymys, vastaus, aihepiiri, hyperlinkki, julkaisustatus) ovat muokattavissa. Aihepiirin luonti opintoneuvoja voi luoda uusia aihepiirejä klikkaamalla Aihepiirit ja Lisää aihepiiri ; esimerkiksi sivuaineopintoja koskevia kysymyksiä varten sivuaineopinnot -aihepiirin. Salasanan vaihtaminen valitsemalla Omat tiedot ja Vaihda salasana voi opintoneuvoja vaihtaa salasanansa syöttämällä haluamansa salasanan kahdesti niille varattuihin kenttiin ja klikkaamalla Vaihda salasana. Uusi salasana on voimassa seuraavan kerran kirjauduttaessa. Omien tietojen muokkaaminen valitsemalla Omat tiedot ja Muokkaa voi opintoneuvoja muokata yhteystietosivulla sekä kaikissa vastaamissaan kysymyksissä allekirjoituksena näytettävää nimeä. 3.3 ATK-tukihenkilön käyttötapaukset Opintoneuvojan käyttötapausten lisäksi: Käyttäjätunnuksen lisääminen ATK-tukihenkilö voi luoda uusia opintoneuvojan tai ATK-tukihenkilön tunnuksia järjestelmään klikkaamalla Käyttäjätunnukset ja Lisää uusi käyttäjä. ATK-ylläpitäjä syöttää käyttäjätunnuksen ja nimen sekä valitsee tunnustyypin, järjestelmä generoi uudelle käyttäjälle 8-merkkisen salasanan.
6 Käyttäjätunnuksen muokkaaminen ATK-tukihenkilö voi muokata omaa tunnustaan lukuunottamatta kaikkia olemassa olevia käyttäjätunnuksia klikkaamalla Käyttäjätiedot ja klikkaamalla haluamansa käyttäjätunnusta. Käyttäjän nimi ja tunnustyyppi ovat muokattavissa. Käyttäjätunnuksen kuolettaminen kun tunnusta ei enää käytetä (esim. käyttäjä jää eläkkeelle tms.), tunnuksen voi kuolettaa valitsemalla Poista käytöstä käyttäjätunnustenhallintasivulta. Käyttäjän kirjoittamia viestejä ei poisteta, mutta tunnuksella ei voi enää kirjautua eikä ko. henkilön nimeä näytetä yhteystietosivulla. Käyttäjätunnuksen salasanan resetointi opintoneuvojan unohtaessa salasanansa, voi ATK-ylläpitäjä Resetoi salasana -painikkeella resetoida muokattavaksi valitun käyttäjän salasanan. Järjestelmä generoi käyttäjälle uuden satunnaisen 8-merkkisen salasanan, jonka ATK-ylläpitäjä toimittaa opintoneuvojalle parhaaksi katsomallaan tavalla ja kehottaa vaihtamaan salasanan uuteen ensi tilassa.
4 Järjestelmän tietosisältö 7 Järjestelmän tietosisältö on kuvattu käsitekaaviossa, jossa taulujen avainattribuutit on alleviivattu ja nuolet osoittavat tauluihin, joihin kursivoidut viiteavaimet viittaavat. Kuva 2: Tietosisältöä kuvaava käsitekaavio.
8 5 Käyttöliittymän hahmotelma Käyttöliittymän hahmotelmassa on luonnosteltu järjestelmän käyttöliittymä toteutettavaksi ajatellussa laajuudessa. login.php julkinen vaatii kirjautumisen index.php admin.php Selaa kysymyksiä ja vastauksia Uudet kysymykset Uusimmat kysymykset Kaikki kysymykset Haku Aihepiirit Jätä kysymys Syötä uusi kysymys Yhteystiedot Omat tiedot Käyttäjätunnukset Kuva 3: Käyttöliittymän hahmotelma.
6 Tietokannan kuvaus 9 6.1 Relaatiotietokantakaavio Microsoft Visio -työkalulla luodussa tietokantakaaviossa on tietokannan tauluja kuvaavien suorakulmioiden vasemmanpuolimmaisessa sarakkeessa pääavaimet (primary key) merkitty PK- ja viiteavaimet (foreign key) FK-tunnuksin. Keskimmäisessä sarakkeessa on attribuutin nimi ja oikeanpuolimmaisessa sarakkeessa tietotyyppi. Pakolliset (arvo ei voi olla NULL) attribuutit on lihavoitu. Nuolet osoittavat tauluihin, joihin viitataan. Testi [?] Kuva 4: Tietokantakaavio. 6.2 Create table -lauseet Käyttäjät-taulu CREATE TABLE kayttajat ( kayttajaid int(11) NOT NULL auto_increment,
10 kayttajatunnus varchar(8) NOT NULL, salasana char(40) NOT NULL, nimi varchar(64) default NULL, yllapitajyys tinyint(1) default NULL, PRIMARY KEY ( kayttajaid ), UNIQUE KEY kayttajatunnus ( kayttajatunnus ) ); Aihepiirit-taulu CREATE TABLE aihepiirit ( tunnus int(11) NOT NULL auto_increment, aihepiiri varchar(64) NOT NULL, PRIMARY KEY ( tunnus ), UNIQUE KEY aihepiiri ( aihepiiri ) ); Kysymykset-taulu CREATE TABLE kysymykset ( tunnus int(11) NOT NULL auto_increment, kysymys varchar(256) NOT NULL, kysyja_nimi varchar(64) default NULL, kysyja_email varchar(64) default NULL, paivays date NOT NULL, aihepiiri int(11) default NULL, vastattu tinyint(1) NOT NULL, julkaistu tinyint(1) NOT NULL, PRIMARY KEY ( tunnus ), KEY aihepiiri ( aihepiiri ), FULLTEXT KEY kysymys ( kysymys ) ); Vastaukset-taulu CREATE TABLE vastaukset ( tunnus int(11) NOT NULL,
11 vastaus varchar(512) NOT NULL, hyperlinkki varchar(128) default NULL, kayttajaid int(11) NOT NULL, paivays date default NULL, PRIMARY KEY ( tunnus ), KEY kayttajaid ( kayttajaid ) );
Liite 1. Tehtävänanto Opintoneuvonnan UKK (FAQ = Frequenty Asked Questions) IS97HL16 Opintoneuvonnasta kysytään kaikenlaisia asioita. WWW-pohjaisessa neuvontapalveluun voitaisiin koota yleisimmin esiintyvät kysymykset ja vastaukset. Vastaukseen voisi sisältyä tietokantaan kirjattu lyhyt viesti ja tämän lisäksi linkkejä joihinkin tiedostoihin, tai paikkoihin, joista saa lisätietoa tai paremman vastauksen. Kysymykset voisi luokitella aihepiirin perusteella. Järjestelmää käyttäisivät sekä opiskelijat että opintoneuvojat etsiessään vastauksia ongelmiin. Jos opiskelija ei löydä vastausta hän voi välittää kysymyksen opintoneuvojalle neuvontapalvelun kautta. Neuvoja voi sitten sen lisäksi, että vastaa yksityisesti, myös laittaa vastauksen järjestelmään. Toimintoja: 1. kysymysten ja vastausten katselu 2. vastausten ajankohdat vanhentuneiden löytämiseksi 3. uusien kysymysten selailu 4. vastauksen vienti järjestelmään 5. Kysymyksen teko järjestelmän kautta (kenelle tahansa opintoneuvojalle, jollekin tietylle). 6. Aihepiirien ja niiden järjestyksen määrittely