Yleistä kurssista

Tämä materiaali on tarkoitettu Helsingin yliopiston tietojenkäsittelytieteen laitoksen kurssille Tietokantojen perusteet (5 op). Kurssilla oletetaan, että osallistuja tuntee Helsingin yliopiston kurssien Ohjelmoinnin perusteet (5 op) ja Ohjelmoinnin jatkokurssi (5 op) sisällön. Kurssilla käytetään ohjelmointikielenä em. kursseilla opittua Java-kieltä.

Materiaalissa näkyvät aikataulut liittyvät luentomuotoiseen kurssiin. Helsingin yliopiston avoimen yliopiston verkkokurssin määräajat kerrotaan kurssin MOODLE-alustalla.

Osaamistavoitteet ja kurssin sisältö

Tietokantojen perusteet -kurssilla tutustutaan tietokantojen suunnitteluun. Tämä kattaa ongelma-alueen (tai järjestelmän) tietosisällön mallintamisen (käsiteanalyysi, luokkakaaviot), tiedon esittämisen (luokkakaaviot, relaatiokaaviot), tiedon tallentamisen ja tiedon hakemisen (SQL-kieli). Kurssilla tutustutaan lisäksi tiedon tallentamiseen liittyvään lainsäädäntöön sekä henkilötietolakiin, tietokantojen historiaan, tietokantaa käyttävien sovellusten luomiseen sekä tietokannan toiminnan kannalta oleellisiin käsitteisiin kuten indeksit, transaktiot ja eheys. Kurssin pääpaino on relaatiotietokannoissa, mutta kurssilla tutustutaan pintapuolisesti myös muihin tietokantajärjestelmiin. Kurssiin kuuluu luentojen ja harjoitustehtävien lisäksi pienryhmissä tehtävä laajempi harjoitustyö, jossa suunnitellaan ja toteutetaan tietokantaa käyttävä web-sovellus.

Viikko Osaamistavoitteet
Esitiedot Tuntee olio-ohjelmoinnin peruskäsitteet kurssien Ohjelmoinnin perusteet (TKT-10002) ja Ohjelmoinnin jatkokurssi (TKT-10003) laaajuudessa.
1 Tuntee käsitteet digitalisaatio, tietokannanhallintajärjestelmä ja tietokanta. Ymmärtää tietokantojen roolin digitalisaatiossa. Tuntee ongelmia, joita tietokannanhallintajärjestelmät pyrkivät ratkaisemaan. Osaa luoda luokkakaavion annetun ohjelman lähdekoodista ja osaa luoda annetussa luokkakaaviossa kuvatut luokat. Ymmärtää luokkien, olioiden ja reaalimaailman käsitteiden suhteen. Osaa käsitellä tietoa ohjelmallisesti.
2 Ymmärtää että tietoa voidaan käsitellä erilaisilla abstraktiotasoilla. Osaa luoda SQL-kielellä yhden tietokantataulun sisältävän tietokannan, lisätä tietokantatauluun tietoa ja tehdä kyselyitä tietokantatauluun. Osaa luoda ohjelman, joka kommunikoi tietokannanhallintajärjestelmän kanssa valmiin rajapinnan kautta. Tuntee käsitteen SQL-injektio. Tietää menetelmiä SQL-injektioon perustuvien hyökkäysten tekemiseen ja osaa toisaalta puolustautua niiltä.
3 Tuntee luokkakaavioissa esiintyvät assosiaatiot yhden suhde yhteen, yhden suhde moneen ja monen suhde moneen. Osaa luoda annetusta luokkakaaviosta relaatiokaavion, ja osaa muuntaa luokkakaavion assosiaatiot tarvittaessa tietokannalle sopivampaan muotoon. Tuntee käsitteet pääavain ja viiteavain. Osaa luoda SQL-kielellä useampia tietokantatauluja sisältävän tietokannan, lisätä tietokantaan tietoa, ja tehdä tietokantaan kyselyitä. Osaa hakea useammasta tietokantataulusta tietoa JOIN-kyselyiden avulla. Osaa luoda ohjelman, joka hyödyntää useamman tietokantataulun sisältävää tietokantaa ja tuntee data access object (DAO) -suunnittelumallin.
4 Tuntee käsiteanalyysin askeleet. Osaa luoda ongelma-alueen kuvauksesta luokkakaavion sekä johtaa siitä relaatiokaavion. Tietää käsitteet tietokannan normalisointi ja tietokannan denormalisointi. Tuntee tietokannan normalisointiin liittyvät ensimmäisen, toisen ja kolmannen normaalimuodon. Osaa perustella noudattaako annettu tietokanta em. normaalimuotoja. Osaa esittää tietoa XML ja HTML-kielellä.
5 Osaa tehdä SQL-kielellä yhteenvetokyselyitä. Osaa luoda yhtä tietokantataulua käyttävän ja muokkaavan web-sovelluksen, jota voi käyttää selaimella. Tuntee sekvenssikaaviot.
6 Tuntee käsitteet indeksi, transaktio ja tietokannan eheys. Osaa luoda useampaa tietokantataulua käyttävän ja muokkaavan web-sovelluksen. Osaa siirtää web-sovelluksen verkkoon, missä se on kaikkien nähtävillä.
7 Tuntee pinnallisesti muutamia NoSQL- ja NewSQL-tietokantoja. Tuntee skaalautuvuuteen liittyvän CAP-teoreeman. Tuntee uuden GDPR-lainsäädännön oleellisimmat vaikutukset tietokantojen suunnitteluun ja henkilötietojen tallennukseen.

Työskentelytavat ja aikataulu

Kurssin suorittaminen perustuu vahvasti itse- ja ryhmäopiskeluun. Opiskelun tueksi kurssilla on viikoittaiset harjoitusryhmät, joihin ilmoittaudutaan WebOodin kautta. Harjoitusryhmissä käydään sekä viikon tehtäviä läpi että harjoitellaan oleellisimpia kurssin asioita. Kurssilla on viikoittaiset luennot perjantaisin klo 12:15-14:00 Exactumin salissa B123 (ei luentoja 6.10. ja 13.10.).

Harjoitusryhmät kokoontuvat Exactumin salissa B221 (mikroluokka).

  • Keskiviikko 12-14, Elina Lassila (elina.lassila at helsinki.fi)
  • Keskiviikko 14-16, Elina Lassila
  • Torstai 10-12, Heikki Ahonen (heikki.a.ahonen at helsinki.fi)
  • Torstai 14-16, Terho Uotila (ttuotila at cc.helsinki.fi)
  • Torstai 16-18, Terho Uotila
  • Perjantai 10-12, Hossein Bahmanpour (hossein.bahmanpour at helsinki.fi)

Ensimmäisen viikon harjoitusryhmien tehtävät tehdään paikan päällä. Seuraavien viikkojen harjoitusryhmiä varten tulee myös kotona tehtäviä tehtäviä. Kurssilla on lisäksi ryhmätyö, ryhmät muodostetaan kurssin kolmannella viikolla harjoitustilaisuuksissa.

Kurssilla on sekä itsenäisesti tehtäviä ohjelmointitehtäviä että harjoitustilaisuuksiin tuotavia tehtäviä. Aikataulu tehtävien palauttamiseen on seuraava.

  • Itsenäisesti tehtävät ohjelmointitehtävät. Huom! Muuttunut! Tehtävät palautetaan TMC:n kautta. Ensimmäisen osan ohjelmointitehtävät tulee olla palautettuna 18.9. klo 23:55 mennessä, toisen osan ohjelmointitehtävät tulee olla palautettuna 25.9. klo 23:55 mennessä jne.
  • Harjoitusryhmiin tuotavat ja harjoitusryhmissä tehtävät tehtävät. Harjoitusryhmiin tuotavat tehtävät tulee tehdä ennen oman ryhmä kokoontumista. Harjoitusryhmissä tehtävät tehtävät tehdään harjoitusryhmissä.
  • Kurssiin liittyvä harjoitustyö palautetaan kahdessa osassa. Ensimmäinen osa sisältää työn suunnitelman (palautetaan 10.10. klo 23:55 mennessä) ja toinen osa konkreettisen työn (palautetaan 29.10. klo 23:55 mennessä). Huom, muuttunut!

Tietokantojen perusteiden kurssikoe järjestetään maanantaina 23.10. klo 16:00 Exactumin saleissa A111 ja CK112. Kokeeseen saa tuoda mukanaan käsin kirjoitetun kaksipuolisen A4-kokoisen "lunttilapun".

Tehtävät

Huomaa, että tämä lista ei koske Helsingin yliopiston Avoimen yliopiston verkkokurssia. Verkkokurssin tehtävät listataan MOODLEssa.

Kotona tehtävät paikan päälle tuotavat tehtävät

  • Viikko 2 tuodaan 13-15.9. järjestettäviin harjoitusryhmiin.
  • Viikko 3 tuodaan 20-22.9. järjestettäviin harjoitusryhmiin.
  • Viikko 4 tuodaan 27-29.9. järjestettäviin harjoitusryhmiin.
  • Viikko 5 tuodaan 4-6.10. järjestettäviin harjoitusryhmiin.
  • Viikko 6 tuodaan 11-13.10. järjestettäviin harjoitusryhmiin.
  • Viikko 7 tuodaan 18-20.10. järjestettäviin harjoitusryhmiin.

Kotona tehtävät ohjelmointitehtävät

  • Osan 1 ohjelmointitehtävät, palautus 18.9. klo 23:55 mennessä.
  • Osan 2 ohjelmointitehtävät, palautus 25.9. klo 23:55 mennessä.
  • Osan 3 ohjelmointitehtävät, palautus 2.10. klo 23:55 mennessä.
  • Osan 4 ohjelmointitehtävät, palautus 9.10. klo 23:55 mennessä.
  • Osan 5 ohjelmointitehtävät, palautus 16.10. klo 23:55 mennessä.
  • Osan 6 ohjelmointitehtävät, palautus 23.10. klo 23:55 mennessä.
  • Osan 7 ohjelmointitehtävät, palautus 30.10. klo 23:55 mennessä (vaikuttavat arvosteluun bonuspisteinä).

Harjoitusryhmissä läsnä tehtävät tehtävät

Tehtävät julkaistaan harjoitustilaisuuksissa.

Harjoitustyön ensimmäisen osan ohjeet löytyvät neljännen viikon tehtävistä. Toisen osan tehtävänanto löytyy tämän osan takaa. Harjoitustyö palautetaan sekä Artolle (arto.hellas@cs.helsinki.fi) että ryhmän ohjaajalle. Tarkemmat palautusohjeet edeltävästä dokumentista. Muistattehan antaa vertaispalautetta ryhmäläisistä kummankin harjoitystyön osan jälkeen.

Tukiväylät

Kurssilla on maanantaisin klo 14-16 järjestettävä kyselytuntimuotoinen paja, joka kokoontuu luokassa C221.

Verkon yli nopein tapa avun kysymiseen on kurssin keskustelukanava #tikape, johon pääsee helpointen kanavan Matrix-huoneen kautta: https://riot.im/app/#/room/#tikape:matrix.org. Jos et pidä modernista teknologiasta, voit myös liityä huoneeseen Ircnetin kautta seuraamalla näitä ohjeita: http://mooc.fi/courses/general/ohjelmointi/tukikanavat/irc/ohjeet/ (valitse kanavaksi #tikape).

Yhteistyö

Hyvä yhteistyö keskittyy jokaisen osapuolen oppimiseen ja parantaa oppimistuloksia. Yhteistyö on kurssin tehtäviä pohtiessa sallittua ja suositeltavaa.

Kurssilla noudatetaan 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.

Jos teet tehtäviä yhdessä muiden kanssa, sinun tulee tehdä ja palauttaa omat ratkaisusi itse. Pidä yhteistyörupeaman jälkeen ainakin puolen tunnin tauko, jolloin teet jotain täysin muuta (esim. katsot jakson Gilligan's Islandia tai Salattuja elämiä), ja aloita omien tehtäviesi työstäminen vasta sitten. Kirjoita myös tehtävien palautuksen yhteyteen kommenteissa niiden kurssikavereidesi nimet, joiden kanssa teit yhteistyötä.

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 kurssilla 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

Kurssin arvostelu perustuu kurssikokeeseen, ennalta harjoitustilaisuuksia varten tehtäviin harjoitustehtäviin sekä ohjelmointitehtäviin, läsnä tehtäviin harjoitustehtäviin, harjoitustyöhön, sekä läsnäoloon harjoitustilaisuuksissa. Kurssin aktiviteeteista voi saada yhteensä 100 pistettä.

Kurssin aktiviteeteista saatavat pisteet jakautuvat seuraavasti:

Osa Pistemäärä (korkeintaan)
Kurssikoe 36 pistettä
Ennalta tehtävät harjoitustehtävät ja ohjelmointitehtävät 7 pistettä / viikko, 6 viikkoa, yht 42 pistettä
Läsnäolo harjoitustilaisuuksissa 1 piste / viikko, 7 viikkoa, yht 7 pistettä
Harjoitustyö 15 pistettä

Täydet pisteet viikoittaisista harjoitustehtävistä saa tekemällä niistä vähintään 90%. Aktiivisesta läsnäolosta luennoilla saa lisäksi puolikkaan pisteen luentokertaa kohden (korkeintaan 2 pistettä).

Kurssin arvosana muodostuu perusteella seuraavasti.

Pisteet Arvosana
< 51 Hylätty
51-60 1
61-70 2
71-80 3
81-90 4
91-100 5

Kurssin työvälineet ja tunnukset

Kurssille tarvitset TMC-tunnukset sekä NetBeans with TMC:n. Jos näitä ei ole vielä käytössäsi, ohjeet löytyvät ohjelmoinnin perusteiden johdannosta osoitteesta materiaalit.github.io/ohjelmointi-s17 kohdasta "Tunnukset ja työvälineet". Käytä TMC-tunnuksenasi opiskelijanumeroasi.

Valitse palvelin ja kurssi TMC:stä seuraavasti.

  • Jos suoritat ensimmäisessä periodissa olevaa luentomuotoista kurssia, valitse palvelimeksi https://tmc.mooc.fi/org/hy/courses/245 ja kurssiksi hy-tikape-s17
  • Jos suoritat koko syksyn mittaista verkkokurssia Helsingin yliopiston avoimen yliopiston kautta, valitse palvelimeksi https://tmc.mooc.fi/org/hy/courses/246 ja kurssiksi hy-tikape-s17-avoin

Tässä materiaalissa näkyvät aikataulut liittyvät luentomuotoiseen kurssiin. Helsingin yliopiston avoimen yliopiston verkkokurssin määräajat kerrotaan kurssin MOODLE-alustalla.

Analytiikkadatan keräämisestä ja kurssilla tehtävästä tutkimuksesta

Analytiikkadatan kerääminen ja arvostelu

Kurssin aikana tehdyistä tehtävistä kerätään tietoa. Kerätty tieto sisältää materiaalissa olevia kyselyitä, ohjelmointitehtävien vastauksia, sekä kurssimateriaalin käyttöä. Jos et hyväksy tiedon keräämistä, kurssin pisteytyksessä ei voida ottaa näitä suorituksia huomioon. Tallennettu tieto sisältää henkilökohtaisen tunnisteen, jonka perusteella ei voida suoraan päätellä henkilöllisyyttäsi. Tieto ei esimerkiksi siis sisällä nimeäsi tai sähköpostiosoitettasi.

Varmista että TMC:n asetuksissa (Valikko TMC -> Settings) kohdassa "Send snapshots of your progress for study" on ruksi. Jos et halua että työstämistäsi tehtävistä kerätään ajoittaista dataa kurssiarvostelua varten, kurssin tentissä on ylimääräinen ohjelmointiaiheinen tehtävä. Analytiikkadataa kerätään vain kurssiin liittyvistä asioista, ei muista tekemisistäsi.

Kurssilla tehtävästä tutkimuksesta

Kurssilla tehdään oppimiseen liittyvää tutkimusta. Tällä tutkimuksella on useampia tavoitteita: (1) lähestyä tilannetta, missä oppimateriaali ja tehtävät osaavat ottaa oppijoiden yksilölliset erot paremmin huomioon ja reagoida niihin tarjoten kohdennetumpaa opetusta, (2) kehittää digitaalisissa ympäristöissä tapahtuvaan oppimiseen liittyvää ymmärrystä ja tietoa, sekä (3) tukea tutkimustiedon kautta muita oppimaterialien kehittäjiä ja oppimisen tutkijoita. Tutkimusdatan hallinnasta vastaa Helsingin yliopiston tietojenkäsittelytieteen laitoksen Agile Education Research -ryhmän Arto Hellas. Anonymisoimattomaan tutkimusdataan eivät pääse käsiksi muut tutkijat. Voit myös pyytää milloin tahansa sinusta kerätyn datan poistamista lähettämällä sähköpostin osoitteeseen arto.hellas@cs.helsinki.fi

Työskentelystä kerättyä tietoa käytetään tutkimuksessa jos sallit. Tutkimuksemme päätavoitteena on osaamisen kehittymisen arviointi tekemisen arvioinnin sijaan, mikä mahdollistaisi yksilöllistä osaamista parhaiten kehittävien vinkkien ja tehtävien tarjoamisen. Tutkimustuloksista ei pystytä tunnistamaan yksittäisiä opiskelijoita. Jos et salli kurssin aikana kerättyjen tietojen käyttämistä tutkimuksessa, siitä ei tule minkäänlaisia seuraamuksia.

Kurssilla saatetaan tehdä lisäksi tutkimusta, joka voi vaikuttaa kurssikokemukseen (esim. kurssisisältö). Jos osallistut tutkimukseen, saatat saada esimerkiksi uusia ominaisuuksia materiaaliin. Jos et halua osallistua tutkimukseen, saat kurssin sisällöstä perusversion. Tutkimukseen osallistuminen ei vaikuta loppuarvosanaan.

Kurssimateriaalin tekijät ja lisenssi

Kurssimateriaalin ovat tehneet Arto Hellas (né Vihavainen) ja Matti Luukkainen.

Tämä materiaali on lisensoitu Creative Commons BY-NC-SA-lisenssillä, joten voit käyttää ja levittää sitä vapaasti, kunhan alkuperäisten tekijöiden nimiä ei poisteta. Jos teet muutoksia materiaaliin ja haluat levittää muunneltua versiota, se täytyy lisensoida samanlaisella vapaalla lisenssillä. Materiaalien käyttö kaupalliseen tarkoitukseen on ilman erillistä lupaa kielletty.

Linkit kurssin sisältöön löytyvät tämän materiaalin ylälaidasta. Kurssimateriaalia julkaistaan kurssin edetessä.

Sisällysluettelo