Yleistä

Tämä materiaali on tarkoitettu Helsingin yliopiston harjoitustyökurssin Tietokantasovellus (4 op) materiaaliksi. Kurssin tietokantasovellus esitietovaatimuksena ovat kurssit Ohjelmoinnin perusteet (TKT-10002), Ohjelmoinnin jatkokurssi (TKT-10003), ja Tietokantojen perusteet (TKT-10004).

Huomaa, että tämä materiaali ei ole enää käytössä vaan kurssilla on nyt uusi materiaali, johon pääset tästä.

Kurssi olettaa merkittävää panostusta omatoimiseen lisätiedon etsimiseen, eikä materiaali kata läheskään kaikkea kurssin kannalta oleellista.

Harjoitustyön eteneminen ja aikataulu

Osa Eteneminen
0
  • Pythonin perusteet
  • Web-sovellusten toimintaperiaatteet
  • Sovellus verkkoon
1
  • Aiheen valinta
  • Tietokantakaavio
2
  • Tietokannan käyttäminen: paikallinen tietokanta
  • Ensimmäinen tietokohde
  • Ensimmäisen tietokohteen käsittelyyn liittyvät näkymät (listaus, lisäys, mahdollinen muokkaus)
  • Sivustolla valikko, josta pääsee helposti listaukseen ja lisäykseen
  • Dokumentaatiossa käyttötapaukset tai user storyt
  • Sovelluksessa käytössä SQLite
3
  • Tietokannan käyttäminen: paikallinen tietokanta ja tuotantotietokanta erikseen
  • Syötteiden validoinnit ja lomakkeiden käsittely
  • Rekisteröityminen ja autentikaatio
  • Toinen tietokohde
  • Täysi CRUD-toiminnallisuus
  • Sovelluksessa SQLite paikalliseen kehitykseen
  • Herokussa käytössä PostgreSQL
4
  • Lisää tietokohteita
  • Ainakin yksi monimutkaisempi yhteenvetokysely sekä sen tulosten näyttäminen
  • Ulkoasun viilaus
  • Toiminnallisuuden täydentäminen
5
  • Toiminnallisuuden täydentäminen
  • Ulkoasun, käytettävyyden ja toiminnallisuuden viilausta
  • Autorisointi
6
  • Toiminnallisuuden täydentäminen
  • Ulkoasun, käytettävyyden ja toiminnallisuuden viilausta
  • Dokumentaation päivittämistä
7
  • Viimeiset viilaukset
  • Loppupalautus
  • Demo

Käytännön yksityiskohdat

Tarkista kulloisenkin toteutuskerran käytännön yksityiskohdat kurssin courses-sivulta. Löydät linkin oikeaan kurssiin weboodista tai esimerkiksi tästä listasta.

Tukiväylät

Kurssilla on ohjausta kurssin courses-sivulla ilmoitetulla tavalla.

Sähköpostitse tapahtuvaa ohjausta ei kurssilla ole. Kumpulan Exactumin mikroluokissa (BK107, B221) saa työskennellä myös ohjausaikojen ulkopuolella, jos siellä ei ole tuolloin muuta toimintaa.

Verkon yli nopein tapa avun kysymiseen on kurssin Telegram-kanava tkt-tsoha , johon on myös IRC-silta kanavan #tsoha @ IRCnet kautta. Sinne taas pääsee esimerkiksi Riot-sillan kautta. Huomaa, että Telegram vaatii rekisteröitymisen. IRC:ssä ja Riot:ssa riittää käyttäjätunnus, varsinaista rekisteröitymistä ei siis tarvita. Kanavan muut osallistujat ovat vapaaehtoisia kurssin kanssaopiskelijoita.

Yhteistyö

Hyvä yhteistyö keskittyy jokaisen osapuolen oppimiseen ja parantaa oppimistuloksia. Jos teet harjoitustyötä yhdessä muiden kanssa, sinun tulee kuitenkin myös tehdä ja palauttaa oma työ.

Hyvä ohjesääntö yhteistyöhön on ns. Gilligan's Island -sääntö:

The Gilligan's Island Rule: You are free to meet with fellow students(s) and discuss an assignment with them. Writing on a board or shared piece of paper during the meeting is acceptable; however, you should not take any written (electronic or otherwise) record away from the meeting. Everything that you derive from the collaboration should be in your head. After the meeting, engage in at least a half-hour of mind-numbing activity (like watching an episode of Gilligan's Island), before starting to work on the assignment. This will assure that you are able to reconstruct what you learned from the meeting by yourself.

Opintovilpistä

Kurssilla seurataan Helsingin yliopiston opintokäytäntöjä. Plagiarismi ja opintovilppi, eli esimerkiksi netissä olevien tai kaverilta saatujen vastausten kopiointi ja niiden palauttaminen omana työnä on kiellettyä.

Todettu opintovilppi johtaa kurssisuorituksen hylkäämiseen ja toistuva opintovilppi voi johtaa opinto-oikeuden määräaikaiseen menettämiseen. Lue lisää osoitteesta http://blogs.helsinki.fi/alakopsaa/opiskelijalle/.

Arvostelu

Harjoitustyön arvostelu perustuu dokumentaatioon, prosessiin sekä lopullisen sovelluksen toimintaan. Arvostelu ym. käytänteet tarkasteltiin kurssin aloitusluennolla. Aloitusluennon kalvot löytyvät kurssisivulta.

Työ arvostellaan useamman osan summana:

  • Dokumentaatio, tietokantarakenteen toimivuus valittuun ongelmaan (18p)
  • Tietokannan toteutus ja tietokantaa käyttävän sovelluksen tietokantaa käyttävän osan rakenne, ml. tietoturva (12p)
  • Web-sovelluksen tietokantaan kuulumaton puoli (5p)
  • Käytettävyys (6p)
  • Ylläpidettävyys (5p)
  • Aikataulussa pysyminen, osapalautukset, demo ja koodikatselmoinnit (14p)

Dokumentaatio, tietokantarakenteen toimivuus valittuun ongelmaan

  • Dokumentaation yleinen sisältö: aiheen kuvaus, sovelluksen käyttöohje, sovelluksen asennusohje, työn ja sovelluksen rajoitteet, työn puuttuvat ominaisuudet, dokumentaation vastaavuus toteutettuun työhön, omat kokemukset.
  • Käyttötapaukset / user storyt ja niihin liittyvät SQL-kyselyt: dokumentaatiossa listattuna oleellisimmat käyttäjäryhmät sekä käyttötapaukset (tai user storyt). Käyttötapausten yhteydessä kuvattuna toimivat ja järkevät SQL-kyselyt.
  • Tietokantarakenteen kuvaus: täyttää kurssin tavoitteet ja soveltuu hyvin tarkoitukseensa, tietokantataulujen normalisointi sekä tarvittaessa perustelu normalisoinnin puutteille, tietokantakaavion sisällyttäminen dokumentaatioon, tietokantakaavion ja todellisen tietokannan vastaavuus, dokumentaatiossa CREATE TABLE -lauseet sekä indeksien lisäykset, valittu tietokannanhallintajärjestelmä toimiva ja ongelma-alueeseen sopiva (ei esim SQLiteä Herokussa).

Tietokannan toteutus ja tietokantaa käyttävän sovelluksen tietokantaa käyttävän osan rakenne, ml. tietoturva

  • Ohjelmassa ei SQL-injektiomahdollisuuksia, isoksi kasvavissa listauksissa sivutus, käyttäjien syötteet validoidaan palvelimella, indeksien käyttö, SQL-virheiden käsittely, kyselyiden toteuttaminen tehokkaasti (yhdellä kyselyllä toteutettavissa olevat asiat tehdään yhdellä kyselyllä useamman sijaan), sovelluksissa käytössä ja toteutettuna monimutkaisempia yhteenvetokyselyitä.

Web-sovelluksen tietokantaan kuulumaton puoli

  • Sovellus toimii päällisin puolin (ei rikkinäisiä linkkejä, lomakkeet toimivat kun syöte järkevä)
  • Sovellus toimii vaikka syöte ei järkevää (validointi joko palvelimella tai selaimella)
  • Sovelluksen yleiskuva (ml. tyylit) on yhtenäinen ja sen käyttö tuntuu luontevalta

Käytettävyys

  • Sovellus on käytettävä, opittava, muistattava ja käyttäjän näkökulmasta tehokas. Sovelluksen tarjoamat sivut ovat loogisesti rakennettu ja sivut ovat helposti löydettävissä (etusivu sovelluksen juuressa, järkevä yleisvälikko). Käyttäjän syötteet validoidaan. Mahdolliset virhetilanteet tuottavat ymmärrettäviä virheviestejä. Sovellus on käytettävä myös laajemmilla tietomäärillä (sivutus, tiedon hakeminen).

Ylläpidettävyys

  • Konfiguraatiot sekä paikalliselle kehitysympäristölle että tuotantoympäristölle. Sovellus ei sisällä tuotantoympäristön salasanoja tms. Koodin laatu ok (ei copy-paste koodia, ei pois-kommentoitua koodia jne), sovellus pilkottu selkeitä vastuualueita hoitaviin luokkiin. Sovelluksen koodi on ymmärrettävää, löydettävissä ja tarpeelliset kohdat kommentoitu. Kurssiin syventynyt kurssilainen tai kurssilaisryhmä ymmärtää ohjelman rakenteen ja tavoitteet ohjelmakoodista.

Aikataulussa pysyminen, osapalautukset, demo ja koodikatselmoinnit

  • Aikataulutus: palautusten tekeminen ajoissa, oma harjoitustyöhön liittyvä ajanhallinta.
  • Vertaistoiminta: vertaisarviointien ja koodikatselmointien tekeminen kurssin annetussa aikataulussa.
  • Demotilaisuuteen osallistuminen

Arvosanarajat

Pisteet Arvosana
91% tai yli 5/5
86%-90% 4/5
81%-85% 3/5
76%-80% 2/5
70%-75% 1/5
< 70% hylätty

Arvosanalle 5 on lisäksi seuraavat minimivaatimukset.

  • Toimiva tietokantaa käyttävä web-sovellus.
  • Vähintään kolme tietokohdetta, eli vähintään 3 tietokantataulua sekä mahdolliset liitostaulut.
  • Kirjautumisen lisäksi käyttäjä on yhdistetty tietokannassa johonkin tietokohteeseen, eli käyttäjien tietoja ei tule käyttää pelkästään kirjautumisen osana.
  • Vähintään kahdesta tietokohteesta täysi CRUD (eli luomis-, lukemis-, päivitys-, ja poistotoiminnallisuus).
  • Yksi tai useampi monesta moneen -suhde.
  • Vähintään kaksi monimutkaisempaa useampaa tietokantataulua käyttävää yhteenvetokyselyä. Yhteenvetokyselyt ovat perustellusti (järkevä) osa sovelluksen käyttötapauksia ja toimintaa.

Harjoitustyön keskeyttäminen

Mikäli olet osallistunut harjoitustyöhön ja keskeyttänyt sen tai saanut harjoitustyöstä hylätyn arvosanan, ja haluat osallistua harjoitustyöhön uudestaan, lähetä sähköpostia toteutuksen vastuuhenkilölle ennen ilmoittautumista.

Sitten materiaaliin...

Löydät tämän sivun ylälaidasta linkin "Osa 0", jolla pääset ensimmäiseen osaan käsiksi. Siirtyminen onnistuu myös tästä painamalla.

Voit osallistua kurssimateriaalin parantamiseen. Jokaisen sivun alalaidassa on linkit, joilla pääset ehdottamaan muutoksia. Muutosten ehdottaminen vaatii Github-tunnuksen.

Sisällysluettelo