Harjoitustyö

Harjoitustyö on tämän opintojakson yksi arvioitavista suorituksista. Harjoitustyössä tehtäväsi on suunnitella ja optimoida SQLite-relaatiotietokanta itse valitsemallesi kohdealueelle.

Löydät harjoitustyön yksityiskohtaiset ohjeet ja arviointikriteerit alta. Yhteenveto ohjeista:

  • Harjoitustyö arvioidaan arvosanalla 1–5. Arvosana määräytyy vaatimusperusteisesti: työssä on kolme vaatimustasoa, ja kunkin tason kaikkien vaatimusten täyttäminen oikeuttaa tason mukaiseen arvosanaan. Tasojen osittainen täyttäminen ja virheet vaikuttavat arvosanaan.
  • Voit tehdä harjoitustyön parityönä tai yksin.
  • Jos teet harjoitustyön parityönä, sopikaa, kumpi parista palauttaa harjoitustyön osat. Toisin sanoen, vain yksi pareista tekee varsinaiset palautukset TIMiin.
  • Voit pyytää apua harjoitustyön tekemiseen kurssin ohjauksissa.
  • Harjoitustyön voi tehdä ja palauttaa TIM-järjestelmässä tai erillisenä tiedostona opettajien sähköpostilistalle ().
  • Takaraja harjoitustyön palautukselle on 15.3.2026. Ole yhteydessä opettajiin hyvissä ajoin, jos et ehdi takarajaan.

Ohje

Avaa harjoitustyön ohjeet klikkaamalla tästä

Löydät tarkat tehtävänannot alta. Voit tehdä tehtävät suoraan TIM-järjestelmään tai palauttaa ne omavalintaisella tavalla (esim. asiakirja, git-varasto, ZIP-tiedosto, oma verkkosivu). Alla olevalla linkillä pääset nopeasti harjoitustyön palautukseen:

Palauta harjoitustyö ja tarkasta palaute

Harjoitustyön tekeminen parityönä

# parityo_ilmo

Tehtävät

Tehtävä 1: Tietokannan vaatimusmäärittely

Ensimmäisenä tehtävänä on valita itse harjoitustyön aihe ja kirjoittaa sen perusteella tietokannalle vaatimusmäärittely.

Harjoitustyössä suunnitellaan ja toteutetaan relaatiotietokanta johonkin (toivottavasti todelliseen) käyttötarkoitukseen. Mieti siis aluksi, millaiselle kohdealueelle haluaisit suunnitella tietokannan. Voit vaikkapa ottaa jonkin valmiin sovelluksen (WhatsApp, Spotify, Discord) tai alustan (Facebook, X, Instagram) ja mallintaa sen toimintaan tarvittavan yksinkertaisen tietokannan. Jos sinulla on toisaalta jokin peli tai oma ohjelma, jonka olet tehnyt, voit suunnitella sille relaatiotietokannan. Jos kaipaat apua tai inspiraatiota, tutustu ohjeessa oleviin mallikohdealueisiin.

Muista pitää asiat yksinkertaisina! Tällä opintojaksolla harjoitellaan tietokantojen suunnittelua, joten tietokannan ei tarvitse olla heti aluksi valtava.

Kun olet valinnut kohdealueen, kirjoita lyhyt kohdealueen kuvaus ja määrittele, mitä tietoja tietokantaan tulee tallentaa, jotta se täyttää kohdealueen tietokantatarpeet.

Voit muokata vaatimusmäärittelyä milloin tahansa! Harjoitustyön edetessä saatat ehkä haluta tarkentaa kohdealuetta tai tietokannan sisältöä, jos vaikkapa huomaat puutteita tai haluat yksinkertaistaa työtäsi. Tärkeintä on, että kuvauksesi on ajan tasalla.

# harj_t1

Tehtävä 2: Käsitteellinen mallintaminen

Piirrä seuraavaksi ER-kaavio, joka mallintaa tehtävän 1 vaatimusmäärittelyssä esitetyn tietokannan tarpeen ydinkäsitteitä ja niiden välisiä suhteita.

Ota huomioon kaikki vaatimusmäärittelyssä esitetyt kohteet, ominaisuudet ja suhteet ja mallinna ne ER-kaaviossa vastaaviksi kohdetyypeiksi, attribuuteiksi ja suhdetyypeiksi. Mieti ER-kaaviota piirtäessäsi kohdealuetta ja käy tarpeen mukaan tarkentamassa tehtävän 1 tietokannan vaatimusmäärittelyä. Olennaista on, että tietokanta palvelee kohdealueen tarpeita mahdollisimman hyvin.

Voit piirtää ER-kaavion joko käsin, erillisellä piirto-ohjelmalla tai käyttämällä kurssin ER-kaavioeditoria. Huomaa, että voit laajentaa piirtoalan käyttämällä editorissa olevaa Laajenna-painiketta. Muita sopivia piirto-ohjelmia ovat esimerkiksi ERDPlus ja DrawIO.

# harj_t2
# harj_t2_kuva

Tehtävä 3: Transformointi relaatioksi

Seuraavaksi ota tehtävässä 2 piirretty ER-kaavio ja transformoi se relaatiotietokannan kaavaksi.

Sovella transformoinnissa Luvussa 3.2 määriteltyjä transformointisääntöjä. Merkitse relaatiokaavaan relaatioiden nimet, relaatioihin kuuluvat attribuutit ja relaatioiden perusavaimet.

Merkitse relaatiot alla olevaan tekstilaatikkoon. Käytä seuraavia merkintöjä:

R ({|a|}, b, c)        - Relaatio R, jolla on perusavain a sekä attribuutit b, c
S ({|a, b|}, c)        - Relaatio S, jolla on perusavaimet a, b sekä attribuutti c
Kissa ({|nimi|}, ikä)  - Relaatio Kissa, jolla on perusavain nimi ja attribuutti ikä

Sen jälkeen luettele myös relaatioiden viiteavaimet ja mihin relaatioihin ne viittaavat. Viiteavaimet määrittävät relaatioiden väliset suhteet (Luku 3.1). Määritä siis, mitkä relaation attribuutit ovat peräisin toisesta relaatiosta.

Merkitse viiteavaimet relaatiokaavan jälkeen seuraavasti:

R.a -> S.a                - Relaation R attribuutti a viittaa relaation S attribuuttiin a
R.b -> S.b                - Relaation R attribuutti b viittaa relaation S attribuuttiin b
Eläin.nimi -> Kissa.nimi  - Relaation Eläin attribuutti nimi viittaa relaation Kissa attribuuttiin nimi
# harj_t3

Tehtävä 4: Tietokannan määrittäminen SQL-kielellä

Kun ER-malli on transformoitu relaatiotietokannan kaavaksi, voidaan kaavan perusteella luoda tietokanta ja tallentaa siihen dataa.

Määrittele relaatiotietokannan kaavasi perusteella SQLite-tietokanta käyttäen SQL:n tietokannan rakenteen määrittelykieltä (DDL, Luku 4.3). Jokaiselle relaatiokaavassa olevalle relaatiolle tulee määrittää oma tietokantataulu. Ota tietokantataulujen määrittelyssä huomioon attribuuttien tyypit, pääavaimet, viiteavaimet sekä mahdolliset muut eheysrajoitteet.

Lisää tämän jälkeen tietokantaasi mallidataa (Luku 4.2). Mallidataa kannattaa olla riittävästi, jotta saat tehtyä tehtävän 5 hyvin.

Kirjoita SQL-lauseet alla olevaan palautuslaatikkoon. Huomaa, että tehtävälaatikkoon on jo lisätty apukoodia, joka alustaa tietokannan ennen koodisi suorittamista.

Voit myös samalla testata, että data tuli lisätyksi, suorittamalla yksinkertaisia SELECT * FROM taulu; -komentoja. Huomaa, että oletuksena TIM tulostaa No result, jos et suorita mitään hakukomentoja.

# harj_t4

Tehtävä 5: Olennaiset SQL-hakulauseet

Seuraavaksi esitä 1–5 esimerkkiä kohdealueen kannalta olennaisista SQL-kyselyistä, joilla dataa haetaan tietokannasta.

Mieti, millaisia käyttötapauksia tietokannalle olisi kohdealueella. Kirjoita sitten näitä käyttötapauksia vastaavat oleelliset SQL-kyselyt. Voit kirjoittaa haku- (SELECT), poisto- (DELETE) ja muokkauskyselyjä (UPDATE). Datan hallintaan liittyvien SQL-kyselyiden syntaksia on kuvattu Luvussa 4.2.

Esitä esimerkkikyselyt alla olevissa palautuslaatikoissa (1 esimerkki/laatikko). Lisää samalla lyhyt kuvaus siitä, mitä SQL-kysely tekee ja mikä on sen käyttötarkoitus.

Vinkkejä:

  • Hakulauseissa pyri palauttamaan vain ne sarakkeet, jotka ovat käyttötapauksen kannalta oleellisia. Jos palautat taulun kaikki sarakkeet, perustele kommenteissa valintasi.
  • Huomaa, että hakulauseissa voit tehdä laskutoimituksia ja ryhmitellä tuloksia. Näin voit rakentaa monipuolisia kyselyitä.
  • Muista, että poisto- ja muokkauslauseissa voidaan käyttää ehtoja. Tällä tavoin voit muodostaa kohdealueen kannalta hyödyllisiä massamuokkaus- ja massapoistokyselyitä.
  • Voit alustaa tietokantasi takaisin perustilaan painamalla "Aja" tehtävän 4 palautuslaatikossa. Tämä palauttaa tietokantasi takaisin oletustilaan.

Lisää esimerkki 1

Lisää esimerkki 2

Lisää esimerkki 3

Lisää esimerkki 4

Lisää esimerkki 5

Tehtävä 6: Funktionaalisten riippuvuuksien etsiminen

Palataan vielä tehtävässä 3 muodostettuun relaatiotietokannan kaavaan.

Tarkastele funktionaalisia riippuvuuksia, jotka esiintyvät relaatiotietokannassasi. Esitä kaikki tehtävässä 3 määrittelemissäsi relaatioissa olevat epätriviaalit funktionaaliset riippuvuudet.

Muista, että funktionaalinen riippuvuus tarkoittaa, että jonkin relaation attribuutin arvo voidaan määrittää jonkin toisen relaation attribuutin (tai attribuuttijoukon) arvon perusteella (ks. Luku 5.1). Toisin sanoin, tässä tehtävässä sinun tulee esittää, millä tavoin eri tietokannan data riippuu toisesta datasta.

Tässä vaiheessa saatat joutua tekemään tarkennuksia vaatimusmäärittelyyn. On suositeltavaa, että aloitat funktionaalisten riippuvuuksien tarkastelun ja teet epäselvissä tapauksissa tarkentavia muutoksia tehtävään 1.

Voit palauttaa tehtävän alla olevaan tekstilaatikkoon tai kuvana tekstilaatikon alla olevaan palautuslaatikkoon. Jos palautat tekstivastauksen, merkitse funktionaaliset riippuvuudet seuraavasti:

RELAATIO1:   - Relaation "RELAATIO1" funktionaaliset riippuvuudet listataan alla
{X} -> {Y}     - Esimerkki 1: Attribuutti Y riippuu funktionaalisesti attribuutista X

RELAATIO2:   - Relaation "RELAATIO2" funktionaaliset riippuvuudet listataan alla
{X, Y} -> {Z}  - Esimerkki 2: Attribuutti Z riippuu funktionaalisesti attribuuteista X ja Y

Jos palautat vastauksen kuvana, on suositeltua, että käytät Harjoituksessa 5.2 esitettyä merkintätapaa:

# harj_t6
# harj_t6_kuva

Tehtävä 7: Relaatioiden normalisointi

Tarkastele nyt relaatiotietokantasi jokaisen relaation normalisointia käyttämällä edellisessä tehtävässä löytämiäsi funktionaalisia riippuvuuksia. Tutki, missä normaalimuodossa kukin relaatiosi on.

Tämän kurssin kannalta riittää, että tarkastelet normaalimuotoja 1NF, 2NF, 3NF, BCNF sekä 4NF (ks. Luku 5.3).

Jos jokin relaatio ei ole 4. normaalimuodossa, esitä, mitä muutoksia tekisit relaatiomallin kaavaan.

Voit kirjoittaa vastauksesi alla olevaan tekstilaatikkoon.

# harj_t7

Harjoitustyön palautus

Ennen palauttamista:

  • Varmista, että olet vastannut tehtäviin tehtävänannon mukaisesti. Voit vapaasti muuttaa kohdealueen kuvausta sekä tietokannan vaatimuksia ennen työn palauttamista.
  • Tutustu vielä sivun alussa oleviin ohjeisiin ja varmista, että harjoitustyösi täyttää mielestäsi vähintään tason 1 kriteerit.
  • Voit pyytää opettajalta palautetta ohjauksissa.
  • Palauta työ arvioitavaksi vasta, kun uskot sen olevan täysin valmis. Et voi enää muokata harjoitustyötä palautuksen jälkeen. Jos palautat työn parityönä, arvioidaan sen parin työ, joka oli palautettu ensimmäisenä.
  • Työ pyritään arvioimaan noin kahden viikon kuluessa palautuksesta. Arviointi ja arvosana kirjataan tälle sivulle. Saat ilmoituksen, kun työ on arvioitu.

Kun olet mielestäsi valmis palauttamaan:

Huomautus

Et ole ilmoittautunut tämän vuoden opintojakson opiskelijaksi tai olet kirjautunut sisään muulla kuin JYU-tunnuksellasi. Harjoitustyön voivat palauttaa vain tänä vuonna kurssille ilmoittautuneet opiskelijat.

Kokeile kirjautua TIM-järjestelmään uudelleen käyttäen HAKA-sisäänkirjautumista.

Jos olet jo kirjautunut JYU-tunnuksellasi, varmista, että sinulla on voimassa oleva ilmoittautuminen opintojaksolle. Epäselvissä tilanteissa ole yhteydessä opintojakson opettajiin: .

Please to interact with this component.

PalautettuPvm

{}

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.