TIETOKANNAN JÄRKEISTÄMINEN

Samankaltaiset tiedostot
Normalisointi. Jouni Huotari & Ari Hovi. kirjan Hovi, Huotari, Lahdenmäki: Tietokantojen suunnittelu & indeksointi, Docendo (2003, 2005) luku 5

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

Käsiteanalyysi prosessina ja tarveanalyysi

KÄSITEANALYYSI PROSESSINA JA TARVEANALYYSI

Tietokantojen suunnittelu, relaatiokantojen perusteita

TIEDONHALLINTA - SYKSY Luento 7. Pasi Ranne /10/17 Helsinki Metropolia University of Applied Sciences

TIETOKANNAN NORMALISOINTI JA NORMAALIMUODOT

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Jouni Huotari & Ari Hovi. Käsitemallinnuksesta relaatiokantaan KÄSITEMALLI. LOOGINEN MALLI: tietomalli valittu. FYYSINEN MALLI: DBMS valittu

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

TIETOKANTOJEN SUUNNITTELU

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

2. Käsiteanalyysi ja relaatiomalli

3. Käsiteanalyysi ja käsitekaavio

Tietokantojen suunnittelu

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

HELIA 1 (17) Outi Virkki Tiedonhallinta

Relaatiomalli ja -tietokanta

SELECT-lauseen perusmuoto

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

TIETOKANNAN SUUNNITTELU

Fyysinen suunnittelu

HELIA 1 (17) Outi Virkki Tiedonhallinta

Tietokannat II -kurssin harjoitustyö

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

TIEDONHALLINTA - SYKSY Luento 2. Pasi Ranne /8/17 Helsinki Metropolia University of Applied Sciences

FYYSINEN SUUNNITTELU

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Tietovarastojen suunnittelu

Tietokannat II -kurssin harjoitustyö

Haaga-Helia / TIKO-05 1 (12) Tietokannan suunnittelu ja Toteutus Outi Virkki

TIETOVARASTOJEN SUUNNITTELU

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

OpenOffice.org Base 3.1.0

RADAR - RANDOM DATA GENERATOR

Tietokannan suunnittelu

Visual Case 2. Miika Kasnio (C9767)

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

SQL - STRUCTURED QUERY LANGUAGE

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

HELIA 1 (20) Outi Virkki Tiedonhallinta

IIO30100 TIETOKANTOJEN SUUNNITTELU (6 OP)

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tietokannat PERUSMATERIAALI Microsoft Access 2007 Kieliversio: suomi Materiaaliversio 1.0 päivitetty

IIO30100 Tietokantojen suunnittelu (6 op)

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

HELIA TIKO-05 1 (20) ICT03D Tieto ja tiedon varastointi O.Virkki

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 ER-mallin peruskäsitteet.

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

HELIA 1 (14) Outi Virkki Tiedonhallinta

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

Tietokantakurssit / TKTL

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

ECDL Tietokannat. Copyright 2015 ECDL Foundation ECDL Tietokannat Sivu 1 / 7

IIO30100 Tietokantojen suunnittelu (6 op)

Mikko Mäkelä KONEHUOLTOJEN TIETOKANNAN SUUNNITTELU JA TOTEUTUS

HARJOITUS 2. Kasvattamot ja mittaukset

Luento 3 Tietokannan tietosisällön suunnittelu

Ryhmäkirjeen hyödyntäminen

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Julkaisun laji Opinnäytetyö. Sivumäärä 43

Opintopiiritehtävä 3: Verkkohuutokauppa

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIETOJENKÄSITTELY/TIETOKANTA Tehtävä C

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Päivityspalvelu. Tietuekuvaus. Tietuekuvaus 1 (5) Päivityspalvelu. Julkinen - Public

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Pikaohje formaatin valmistamiseen

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

IIO10200 TIETOKANTAOHJELMOINTI (4 OP) OPINTOJAKSON ESITTELY JOUNI HUOTARI

INTINU13A6 Java sovellukset

Relaatioista TIETOJENKÄSITTELYTIETEIDEN LAITOS, JUHA IISAKKA 11-14

CSE-A1200 Tietokannat

4.2 Yhteensopivuus roolimalleihin perustuvassa palvelussa

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Järjestelmäriippumattomia siivousohjeita

IIO10200 Tietokantaohjelmointi (4 op)

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Relaatiomallin peruskäsitteet Harri Laine 1. Relaatiotietokannat DONOTP

Tulorekisteri: Varmenne Visma Fivaldi

Tietokannan suunnittelu

Hakusuosikit UNIFAUN

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

FYYSINEN SUUNNITTELU

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Kyvyt.fi eportfolion luominen

Transkriptio:

Mikko Mitronen TIETOKANNAN JÄRKEISTÄMINEN Esimerkkinä EnergiaGuru -palvelun sähkösääennuste Opinnäytetyö CENTRIA AMMATTIKORKEAKOULU Mediatekniikan koulutusohjelma Toukokuu 2014

TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Ylivieska Aika Toukokuu 2014 Tekijä/tekijät Mikko Mitronen Koulutusohjelma Mediatekniikan koulutusohjelma Työn nimi TIETOKANNAN JÄRKEISTÄMINEN. Esimerkkinä EnergiaGuru -palvelun sähkösääennuste Työn ohjaaja Hannu Puomio Työelämäohjaaja Terho Kivimaa Sivumäärä 22 Opinnäytetyön kehitystehtävänä oli järkeistää EnergiaGuru palvelun sähkösääennuste. Palvelun tietokantaa muokattiin joustavammaksi ja näin tarpeisiin soveltuvammaksi. Teoriaosuudessa perehdytään ensin tietokannan suunnitteluun, käsiteanalyysiin, tarveanalyysiin sekä normalisointiin. Viimeinen teoriaosuuden kappale käsittelee tietokannan toteutusta: käsitemallin tuomista taulurakenteeksi sekä taulujen luomista. Käytännön osuudessa sovelletaan teoriassa opittuja asioita EnergiaGurun tarpeisiin. Asiasanat Käsiteanalyysi, Käsitemalli, Normalisointi, Tarveanalyysi, Taulu, Tietokanta

ABSTRACT Unit Ylivieska Date May 2014 Degree programme Media Technology Name of thesis Rationalization of the Database. Case EnergiaGuru. Instructor Hannu Puomio Supervisor Terho Kivimaa Author/s Mikko Mitronen Pages 22 Subject of this thesis was to rationalization of the database of Energiaguru. New database was created based on old non-flexible one. New database is now flexible and fits the needs of the service. In theory section reader will get to know basics of designing database, conceptual modelling and normalization. Last part of this thesis is concerning more about creating the database. Key words Conceptual Modelling, Database, Normalization, Table

ESIPUHE Opinnäytetyön tekeminen oli omalta osalta suhteellisen pitkä ja jokseenkin rankka. Aihe oli erittäin mielenkiintoinen ja nosti ajatuksia siitä, että tulevaisuudessa työskentelisin tietokantojen parissa. Miksi opinnäytetyön tekeminen oli omalta osaltani pitkä, johtuu siitä, että kaiken uuden aloittaminen on minulle hankalaa. Erityiset kiitokset haluankin antaa ohjaajalleni Hannu Puomiolle siitä, että hän jaksoi uskoa minuun ja siihen, että työ tulee tehdyksi. Kiitokset myös Terho Kivimaalle, joka otti minut mukaan tähän projektiin. Haluan myös kiittää läheisiäni, jotka uskoivat minuun ja kannustivat epätoivon hetkillä. Ljusdalissa 18.5.2014 Mikko Mitronen

TIIVISTELMÄ ABSTRACT ESIPUHE SISÄLLYS 1 JOHDANTO 1 2 TIETOKANNAN SUUNNITTELU 2 2.1 Suunnittelun merkitys 2 2.2 Suunnittelun tarkoitus 3 3 KÄSITEANALYYSI 4 3.1 Käsiteanalyysin tarkoitus 4 3.2 Käsitteiden nimeäminen 5 3.3 Perusavain 6 4 TARVEANALYYSI 7 5 NORMALISOINTI 8 5.1 Ensimmäinen normaalimuoto 8 5.2 Toinen normaalimuoto 10 5.3 Kolmas normaalimuoto 12 6 TIETOKANNAN TOTEUTUS 14 6.1 Käsitemallista taulurakenteeksi 14 6.2 Taulujen muodostaminen 14 7 ESIMERKKINÄ ENERGIAGURU 16 7.1 (Poistettu julkisesta versiosta) 16 7.2 (Poistettu julkisesta versiosta) 16 7.3 (Poistettu julkisesta versiosta) 16 8 TULOKSET JA POHDINTA 17 LÄHTEET 18 TAULUKOT TAULUKKO 1. Esimerkki Henkilo taulusta. 8 TAULUKKO 2. Henkilo taulu palkkahistorian kanssa 9 TAULUKKO 3. Palkkahistoria erillisenä tauluna 9 TAULUKKO 4. Erillinen PALKKA taulu ensimmäisessä normaalimuodossa 9 TAULUKKO 5. Yksinkertainen Henkilo taulu 10 TAULUKKO 6. Osien tilauksiin liittyvä taulu 11 TAULUKKO 7. Osien toimittajat erotettu omaan tauluunsa 11 TAULUKKO 8. Osat eroteltu omaan tauluunsa 11 TAULUKKO 9. Tilaus omana taulunaan 11 TAULUKKO 10. Henkilötietoja taulussa 12 TAULUKKO 11. Henkilötietoja sisältävä taulu kolmannessa normaalimuodossa 13 TAULUKKO 12. Postitoimipaikka omana tauluna 13

TAULUKKO 13. Käsitemallista relaatiokantaan 14

1 1 JOHDANTO Opinnäytetyön käytännön osuudessa suunniteltiin uusi tietokanta Suomen Energianeuvonnan EnergiaGuru palvelulle. EnergiaGuru on internetissä toimiva palvelu, joka laskee kuluttajalle edullisimmat sähköntarjoajat, neuvoo sähköntarjoajien kilpailuttamisessa ja laskee sähkösääennusteita. Tietokanta haluttiin järkeistää toimivammaksi ja näin sopivammaksi EnergiaGurun tarpeisiin. Opinnäytetyössä keskityttiin pohtimaan millä keinoilla saadaan järkeistettyä palvelun toiminnan edellyttämä tietokanta. Opinnäytetyössä perehdytään aluksi käsiteanalyysin, tarveanalyysin ja normalisoinnin kautta tietokannan toteutukseen. Lopuksi sovelletaan saatuja tietoja EnergiaGurun palvelun rakentamiseen. Opinnäytetyössä ei käsitellä käytännön toteutuksessa käytettyjä ohjelmistoja kuten Contaota. Sivuston ulkoasun luomista ei myöskään tulla käsittelemään opinnäytetyössä. Opinnäytetyössä ei myöskään perehdytä tietokantojen perusteisiin, kuten mihin tietokantoja käytetään tai tietokantojen eri tyyppeihin.

2 2 TIETOKANNAN SUUNNITTELU Tietokannan suunnittelun alussa on hyvä perehtyä siihen mitä suunnittelulla haetaan ja mihin sillä pyritään. Suunnittelun alussa on tärkeää miettiä mitä kaikkea tietokannalta halutaan, mihin käyttöön se tarkalleen ottaen tulee sekä pyrkiä suunnittelussa miettimään ohjelman tai palvelun tulevaa kehitystä. 2.1 Suunnittelun merkitys Tietokanta voidaan käsittää loogisena kokoelmana tietyin ennaltamäärätyin ehdoin yhteenliittyvää tallennettua tietoa (Ekonoja, Lahtonen & Mäntylä 2011a; Kuuselo). Tietokanta säilöö siis loogisella tavalla tietoa siten, että tiedot kuuluvat samaan kokonaisuuteen ja näiden välillä on jokin käyttötarkoituksen kannalta järkevä yhteys (Kuuselo). Käytön kannalta on oleellista, että tietokanta on suunniteltu, rakennettu ja täytetty tiedolla erityisesti jotakin tiettyä käyttötarkoitusta ja käyttäjäryhmää varten (Ekonoja ym. 2011a). Suunnittelun tärkeys korostuu entisestään projektien kasvaessa suuremmiksi ja monimutkaisemmiksi. Ekonoja, Lahtonen ja Mäntylä esittävät tietokannan suunnittelun vaiheiksi vaatimusten määrittelyn, käsitteellisen mallintamisen, käyttöliittymän suunnittelun, tietokannan loogisen suunnittelun ja lopuksi toteutuksen. Näistä tietokannan vaatimusten määrittely tarkoittaa yksinkertaistettuna, mitä tietoa järjestelmään tulisi saattaa. Käsitteellinen mallintaminen, eli käsiteanalyysi, voidaan toteuttaa kaaviona, joka kuvaa tietokannan sisältöä, eli käsitteitä ja näiden suhteita. Tämän jälkeen käyttöliittymän suunnittelussa suunnitellaan sovelluksen käyttöliittymän rakenne ja sisältö määriteltyjen käytettävyystavoitteiden mukaisiksi. Viimeisenä varsinaisena suunnittelun vaiheena on tietokannan looginen suunnittelu, jonka pohjalta toteutetaan tietokannan varsinainen rakenne. (Ekonoja ym. 2011a.)

3 2.2 Suunnittelun tarkoitus Tietokannan suunnittelun tärkeimpiä tarkoituksia on tiedon tarkoituksen mukaisen säilömisen ja käsittelyn mahdollistaminen. Tämän myötä voidaan välttyä valitun käyttötarkoituksen näkökulmasta turhan tiedon säilömiseltä, kuin myös saman tiedon toistamiselta eri paikoissa. Tiedon säilömiseen liittyen tietokannan suunnittelussa on hyvä korostaa joustavuutta, jolla voidaan mahdollistaa tietokannan pidempiaikainen käyttö. Hyvin suunniteltu tietokanta mahdollistaa tiedon hakemisen myös sellaisin kriteerein, joita järjestelmän suunnitteluvaiheessa ei pystytty ennakoimaan. Tietokanta olisi suotavaa suunnitella niin, että tietokannan rakenteellinen muuttaminen on mahdollista myös käyttöönoton jälkeen siten, että koko järjestelmää tarvitsee rakentaa alusta asti uudelleen. (Ekonoja ym. 2011a.) Yleisiä tavoitteita tietokannalle on tiedon turvallinen ja käyttötarkoituksen mukainen säilöminen. Tietokantoja yhdistää myös mahdollisuus hakea tietoa tietyin ehdoin, sekä koostaa näistä hauista tarvittaessa yhteenvetoja ja laskutoimituksia. Näiden lisäksi käytön mahdollistamiseksi on järjestelmälle välttämätöntä haetun ja käsitellyn tiedon jakaminen käyttäjälle. Järjestelmän käyttötarkoitukselle erityiset ominaisuudet tulisi kartoittaa kuitenkin etukäteen tutustumalla mahdolliseen kirjalliseen materiaaliin ja käyttäen apuna mahdollisuuksien mukaan haastatteluita sekä vapaamuotoisempia keskusteluja. (Ekonoja ym. 2011a.)

4 3 KÄSITEANALYYSI Käsiteanalyysissa tarkoituksena on miettiä mitä tietoja tietokantaan halutaan tallentaa. Tarkoitus on miettiä onko mahdollinen tallennettava tieto sellaista, mikä tarvitsee tallentaa. Käsiteanalyysi antaa suunnittelijalle sekä etenkin asiakkaalle ymmärrystä siitä minkälainen tietokannasta tulee ja mitä tietoja siihen ollaan tallentamassa. Tässä vaiheessa ei ole tarkoitus miettiä kuinka tietokannan rakenne vaikuttaa sen suorituskykyyn vaan pääasia on saada kaikki mahdollinen tieto muistiin. Suorituskyvyn miettiminen ja parantaminen tulee esille tietokannan suunnittelun seuraavissa vaiheissa. 3.1 Käsiteanalyysin tarkoitus Käsiteanalyysi on yleinen termi, jolla tarkoitetaan tietosisältömäärittelyn muodostamista käsitteellisellä tasolla. Kyseessä on siis eräänlainen käsitekaava, jonka tarkoitus on mallintaa tietokannan käsitteellinen rakenne ja sisältö sekä eri tietoihin liittyvät säännöt. Menetelmän tarkoitus on luoda malli järjestelmän tietosisällöstä, jonka pohjalta voidaan suunnitella tietokannan lopullinen rakenne. Käsiteanalyysi kattaa myös järjestelmän toimintojen määrittelyn. Tarkkuustaso tai työskentelytapa ei ole rajattu suoraan menetelmään, vaan sitä voi soveltaa projektin tarpeen mukaan. (Laine 2005; Kilpeläinen.) Tärkeitä käsitteitä ymmärtää käsiteanalyysissä ovat käsite (kohde), tieto (attribuutti) ja suhde. Käsitteellä tarkoitetaan eroteltavissa olevaa asiaa tai tapahtumaa, esimerkiksi ihmistä. Termiin liittyy myös käsitetyypit, jolla tarkoitetaan vain edellä kuvatuista koostuvaa laajempaa ryhmää, kuten kaikki ihmiset. Eri kohteiden sisältämät samanlaisuudet ilmenevät myös niihin liittyvistä suhteista ja attribuuteista, joita tarkastelemalla voidaan suunnitteluvaiheessa kyetä yhdistämään joitakin kohdejoukkoja. Tieto, eli attribuutti, tarkoittaa käsitteeseen liittyvää piirrettä, joka on merkityksellinen joko kohteen itsensä tai sen yhteyden kannalta. Esimerkkinä yhteydestä on ihmisen nimi. Yhden kohdealueen käsitteet ja näiden sisältämät tiedot muodostavat yhdessä kohdealuetta kuvaavan taulun. (Kilpeläinen.) Yhteydellä tarkoitetaan yhden tai useamman kohteen välillä olevaa riippuvuutta tai muuta asiayhteyttä. Esimerkkinä tietty ihminen omistaa auton tarkoittaa että, käsitteiden ihminen

5 ja ajoneuvo välille syntyy yhteys. Samantapaisesti kuin käsitteet voivat muodostaa käsitetyypin, voi samanlaiset yhteydet koostaa keskenään yhteystyypin. Tämän lisäksi yhteydet kuvaavat myös erilaisia rakenteellisia sääntöjä, osallistumisrajoitteita, joiden huomaaminen saattaa vaatia tarkempaa analyysia. Yhteys voi olla yhdestä-yhteen, jolloin käsite liittyy vain yhteen toiseen käsitteeseen, esimerkiksi avioliitto, jolloin yhteys on ihminen-ihminen. Yhteys voi syntyä myös yhdestä-moneen, eli yhdestä käsitteestä useampaan käsitteeseen, esimerkkinä päätösvalta: yhteys puolestaan muodostuu yhdestä esimiehestä useampaan alaiseen. Näiden lisäksi yhteys voi olla myös monesta-moneen, jolloin yksi käsite voi liittyä yhteen tai useampaan toiseen käsitteeseen ja päinvastoin, esimerkkinä osanvalmistus, jossa yhteys on useamman henkilön ja osan välillä. On kuitenkin huomioitavaa että hyvin suunnitellussa tietokannassa tulisi välttää tällaisia monesta-moneen yhteyksiä minimaalisuuden ja resurssien käytön vuoksi. (Laine 2005; Kilpeläinen; Kuuselo.) 3.2 Käsitteiden nimeäminen Käsiteanalyysin ensimmäisenä vaiheena voidaan pitää käsitteiden nimeämistä. Tässä vaiheessa kartoitetaan ja luetteloidaan tarkasteltavaan ilmiöön liittyvistä keskeisistä kohteista ja ilmiöistä. Nämä kohteet ja ilmiöt koostetaan luetteloon ehdokkaiksi tietokannan käsitteiksi. Luetteloinnin jälkeen tarkastellaan ehdokkaat läpi ja karsitaan niistä pois käyttötarkoituksen näkökulmasta turhat käsitteet. Turhia käsitteitä ovat sellaiset joita ei ole välttämätöntä tallentaa ja jotka eivät ole tärkeitä kohdealueen kannalta. Yksinkertaistettuna voidaan todeta että turha sisältö on sellaista jota ilman tietokanta toimisi edelleen halutulla tavalla. Tämä karsintavaihe tulee todennäköisesti suorittaa useamman kerran, jotta ehdokkaat voidaan rajata tarkoituksenmukaisesti. (Laine 2005.) Kun käsite -ehdokkaista on karsittu mukaan vain tarpeelliset, on vuorossa näiden käsitteiden yhteyksien tunnistaminen. Tässäkin vaiheessa on oleellista pohtia kriittisesti onko löydetyt yhteydet oleellisia tietokannan toiminnan kannalta ja onko näin ollen niiden tallentaminen tarpeellista. Käsitteiden välille muodostettujen yhteyksien jälkeen tarkennetaan käsitteitä lisäämällä näihin eri tietoja, eli attribuutteja. Käsitteiden sisältämien tietojen kartoittamiseksi voi olla tarpeellista suorittaa lisäselvitystä jotta tarpeellinen sisältö löydetään. Kootessa tietoja tulisi edelleen pohtia niiden tarvetta laajemmasta näkökulmasta. Tietojen

6 lisäämisen jälkeen tarkennetaan rakenteellisia sääntöjä, eli tarkennetaan yhteyksien tyyppiä ja niiden muodostamia rajoitteita. (Laine 2005.) Koko analyysin läpi on hyvä pohtia valitun datan rajaamista, jottei sisältö ole turhaan liian laaja, mutta kuitenkin riittävä järjestelmän toiminnan kannalta. Kuitenkin lopuksi on hyvä varmistaa vielä että tiedot ovat yhteensopivia järjestelmän käyttötarkoituksen kannalta. Tämän jälkeen voidaan vielä optimoida tietokantaa, mikäli sama data toistuu turhaan useassa eri paikassa, kuten synonyymeina eri paikoissa tai sama asia voi ilmentyä niin yhteytenä kuin käsitteen alaisena tietona. (Laine 2005.) 3.3 Perusavain Jokainen käsitteiden muodostama taulu tarvitsee perusavaimen jonka tarkoitus on yksilöidä sen tiedot (Ekonoja, Lahtonen & Mäntylä 2011b). Perusavaimelle vaadittavia ehtoja on että se määritellä jokainen taulun käsite yksiselitteisesti ja sen tulee viitata taulun kenttään suoraan. Jokaisen käsitteen tulee olla uniikki, eikä se saa olla tyhjä (NULL). Joissain tilanteissa taulun perusavaimeksi voisi soveltua useampi ehdokas, näin ollen tulee tarkastella jälleen mikä ehdokkaista olisi tarkoituksen mukaisin ja helpoin käsiteltävä järjestelmän toiminnan kannalta. (Kuuselo.)

7 4 TARVEANALYYSI Käsitemalli voi vielä tässä vaiheessa olla hieman puutteellinen, etenkin käsitteiden osalta. Tarveanalyysin aikana vasta saadaan käsitemallia täydennettyä tarkalle tasolle. Listään enemmän yksityiskohtia eli tietoja tietotarpeiden mukaan. Tietotarpeella tarkoitetaan tulevan ohjelman eri ikkunoita, raportteja ja muita vastaavia tapahtumia, jotka toimivat tietokannan kanssa. Tarveanalyysi perustuu ohjelman suunnitteluvaiheessa tehtyyn tietotarpeeseen. Tarveanalyysin tavoitteena on tarkistaa ja testata olemassa olevaa käsitemallia jo tiedossa olevien tietotarpeiden asettamien vaatimusten mukaan. Vielä voidaan mahdollisesti lisätä käsitemalliin uusia tietoja ja mahdollisia uusia käsitteitä ja yhteyksiä. Tietotarpeen testauksessa täytyy olla mukana kaikki tiedot eli on oltava jo käsitys siitä mitä yksittäisiä tietoja ne koskevat. Tarveanalyysiin kuuluu myös muun muassa lajittelukriteerien ja tieto-, käyttäjä- ja tapahtumamäärien selvitys (Hovi, Huotari & Lahdenmäki 2005, 80). Näitä tietoja tarvitaan esimerkiksi testausta varten. Käytännössä tarveanalyysiä tehdään seuraavalla tavalla: Otetaan tietotarve, esimerkiksi ohjelman jokin ikkuna, ja samalla otetaan myös käsitemalli esille. Avataan ohjelman ikkuna ja tarkastellaan löytyvätkö kaikki ikkunassa tarvittavat tiedot käsitemallista. Käsitemalli on tässä vaiheessa kuitenkin vielä työn alla, joten kaikkia tietoja tai yhteyksiä ei välttämättä ole. Mikäli tieto tai yhteys puuttuu, lisätään se käsitemalliin. Tätä jatketaan kunnes kaikki tietotarpeet on käyty. Tarveanalyysin jälkeen on käsitemalli saatu täydennettyä tarkalle tasolle. Käsitemalli on samalla saatu testattua toimivaksi, ainakin tämän hetkisille tietotarpeille.

8 5 NORMALISOINTI Normalisointi on menetelmä, jolla pyritään vähentämään saman tiedon toistamista tietokannassa. Tämä tekee päivitysten tekemisestä tehokkaampaa, koska tietoja tarvitsee päivittää vain yhteen paikkaan. Kun tietoja päivitetään vain yhteen paikkaan, ei tietokannasta tule jäykkää. Tällöin palvelun laajetessa ei tietokantaa tarvitse rakentaa uudestaan alusta vaan pienillä muutoksilla siitä saadaan joustava ja tarpeisiin mukautuva. Jaakkolan ja Sarjan mukaan normalisoinnin tarkoitus on selkeyttää, yhtenäistää sekä tutkia normaalisuus ja jakaa se tarvittaessa osiin. (Jaakkola & Sarja 2005.) Normalisointiteoriassa määritellään tauluille eri normaalimuotoja. Yleisimmät muodot ovat ensimmäinen, toinen ja kolmas normaalimuoto. 5.1 Ensimmäinen normaalimuoto Ensimmäisessä normaalimuodossa on tarkoitus poistaa yksittäisessä taulussa toistuvat ryhmät. Tällaisessa tilanteessa luodaan erillinen taulu toistuvien tietojen joukkiolle. Ensimmäisen normaalimuodon perussääntönä on poistaa toistuvat ryhmät ja moniarvoiset sarakkeet. TAULUKKO 1. Esimerkki Henkilo taulusta. HENKILO htun sukunimi etunimi palkka 1112 Virtanen Matti 2300 1221 Klemola Raili 2400 1645 Lindström Petri 2300 Tässä esimerkissä on yrityksen HENKILO taulu, jolla pidetään muistissa asianomaisen palkkatiedot. (TAULUKKO 1.) Tämä taulu ei ole joustava siinä mielessä, jos halutaan pitää palkkahistoriaa. Ylläoleva taulu näyttää vain nykyisen palkan, mutta ei aiempaa palkkaa. Jotta saadaan talteen myös edelliset palkat, joudutaan tauluun lisäämään muutama ylimääräinen sarake:

9 TAULUKKO 2. Henkilo taulu palkkahistorian kanssa HENKILO htun sukunimi etunimi palkka pvm1 palkka1 pvm2 palkka2 2245 Virtanen Matti 2300 1.1.2009 2001 1.3.2011 2200 3343 Klemola Raili 2400 1.1.2009 1988 3.9.2012 2350 3242 Lindström Petri 2300 1.1.2009 2250 Nyt yllä olevasta taulusta saadaan selville edelliset palkat sekä päivämäärät, koska ne ovat muuttuneet. (TAULUKKO 2.) Tämä ei kuitenkaan ole hyvä tapa sillä taulussa on nyt kaksi toistuvaa ryhmää. Taulu ei myöskään ole joustava siinä tapauksessa, jos henkilö saa palkankorotuksen. Tällöin joudutaan lisäämään tietokantaan sarakkeita (pvm3, palkka3). Tämä johtaa siihen, että myös itse ohjelmiston koodia joudutaan muokkaamaan, jotta se ymmärtää uudet sarakkeet. Taulun rakenteen tulee olla sellainen mitä ei tarvitse muokata jatkuvasti. Taulun sarakkeessa olisi hyvä olla vain yksi arvo, jotta laskutoimitusten tekeminen olisi mahdollisimman helppoa. Kuten nähdään, jos palkkahistorian pitämisen haluaa toteuttaa yhdellä sarakkeella, tulee laskutoimitusten ja yhden arvon hakemisesta vaikeaa. (TAULUKKO 3.) TAULUKKO 3. Palkkahistoria erillisenä tauluna palkka palkkahistoria 2300 2100, 2200 Jotta toistuvat ryhmät ja moniarvoiset sarakkeet saadaan poistettua, suoritetaan normalisointi. Toistuvat ryhmät ja moniarvoiset sarakkeet poistetaan ja luodaan uusi taulu. Näin saadaan seuraavanlainen PALKKA taulu: taulukko 4. TAULUKKO 4. Erillinen PALKKA taulu ensimmäisessä normaalimuodossa PALKKA htun pvm palkka 1112 1.1.2000 2000 1112 1.3.2002 2200 1221 1.1.2000 2000 1221 3.9.2002 2400 1645 1.1.2000 2150

10 Tämän lisäksi tarvitaan HENKILO taulu, jossa on seuraavat sarakkeet: htun, etunimi, sukunimi. (TAULUKKO 5.) Palkkatiedot saadaan tekemällä kysely, jossa käytetään halutun henkilön henkilötunnusta (htun -sarake). Esimerkkikysely missä haetaan Matti Virtasen palkkahistoria, järjestettynä päivämäärän mukaan: SELECT * FROM palkka WHERE htun = 1112 ORDER BY pvm 5.2 Toinen normaalimuoto Toisessa normaalimuodossa tutkitaan funktionaalista riippuvuutta. Muodostetaan eri taulujen välille suhteita viiteavaimien avulla. Todetaan, että sarake tai kenttä A on funktionaalisesti riippuvainen sarakkeesta tai kentästä B. Jokaista B:tä kohti on korkeintaan yksi A:n arvo. Toisen normaalimuodon perussääntönä voisi pitää seuraavaa: Jos taulussa on moniosainen perusavain, niin kaikkien sarakkeiden tulee olla funktionaalisesti riippuvia koko perusavaimesta, ei vain osa-avaimesta (Hovi ym. 2005, 91). TAULUKKO 5. Yksinkertainen Henkilo taulu Htun Sukunimi Etunimi 1112 Virtanen Matti 1221 Klemola Raili 1645 Lindström Petri Esimerkkitaulussa sukunimi on riippuvain henkilötunnuksesta (Htun), koska yhtä henkilötunnusta kohti on yksi sukunimi. (TAULUKKO 5.) Henkilötunnus taas ei ole funktionaalisesti riippuvainen sukunimestä, sillä yhtä sukunimeä kohti voi olla monta henkilötunnusta. Riippuvuus voidaan merkitä seuraavasti: Htun Sukunimi. Nuoli luetaan siis seuraavasti: Yhtä henkilötunnusta kohti on olemassa nolla tai yksi sukunimi. Tällainen sarakkeiden välinen analyysi on tehtävä kaikkien taulun sarakkeiden välillä. Toinen esimerkki auttaa ymmärtämään asiaa hieman paremmin. Tarkastellaan taulukon 6 mukaista taulua ja sen eri sarakkeiden funktionaalisia riippuvuuksia.

11 Toimittajatun saraketta kohti on yksi Toim_nimi sarake. Sitä kohti taas voi olla monta Osanro, Osanimi ja määrä saraketta. Funktionaalinen riippuvuus löytyy Toimittajatun ja Toim_nimi väliltä. TAULUKKO 6. Osien tilauksiin liittyvä taulu Toimittajatun Osanro Pvm Toim_nimi Osanimi Määrä 1001 101b 4.6.2013 A-Yritys Oy Osa12 22 1001 102b 3.4.2013 A-Yritys Oy Osa13 10 1002 101b 15.5.2013 B-Yritys Oy Osa12 5 Osanimi ja Osanro ovat toisistaan riippuvaisia. Määrä sarake on riippuvainen taas monesta sarakkeesta: Toimittajatun, Osanro sekä Pvm. Suomeksi tämä olisi tietyltä toimittajalta tiettynä päivänä tiettyä osaa. Esimerkkitaulussa ei ole vielä toista normaalimuotoa, mutta se saadaan, kun jaetaan taulu moneen osaan, eli normalisoidaan se. Normalisoimalla toiseen muotoon saadaan seuraavat taulut: taulukko 7, taulukko 8 ja taulukko 9. TAULUKKO 7. Osien toimittajat erotettu omaan tauluunsa Toimittajatun Toim_nimi 1001 A-Yritys Oy 1002 B-Yritys Oy TAULUKKO 8. Osat eroteltu omaan tauluunsa Osanro 101b 102b Osanimi Osa12 Osa13 TAULUKKO 9. Tilaus omana taulunaan Toimittajatun Osanro Pvm Määrä 1001 101b 4.6.2013 22 1001 102b 3.4.2003 10 1002 101b 15.5.2003 5 Toisessa normaalimuodossa on tieto jaettu useampaan tauluun, mikä mahdollistaa huomattavasti helpomman tavan pitää tilausten historiaa. Tällä tavoin on myös kätevämpi

12 seurata tietyn toimittajan tilausten tietoja ja määriä. Nyt myös tietokantaan on helpompi lisätä uusi toimittaja, muokata toimittajan nimeä ja niin edelleen. Sillä toimittajat on eroteltu omaan tauluunsa, joten muokkaaminen tai lisääminen tapahtuu vain yhteen tauluun. (TAULUKKO 7.) Vain jos toimittajien tietoja tarvitaan toisessa taulussa, tässä tapauksessa lähinnä nimeä, tarvitsee lisätä vain viittaus toimittajat tauluun. 5.3 Kolmas normaalimuoto Kolmannessa normaalimuodossa tarkoitus on saada poistettua kaikki sellaiset kentät, jotka eivät ole riippuvaisia perusavaimesta. Esimerkkitaulussa perusavain on Htun ja yhtä henkilötunnusta kohti voi olla yksi sukunimi, etunimi, katuosoite, postinro sekä postitoimipaikka. (TAULUKKO 10.) Tämän lisäksi myös Postinro ja Postitoimipaikka sarakkeilla on funktionaalinen riippuvuus, koska yhtä postinumeroa kohti on vain yksi postitoimipaikan nimi. TAULUKKO 10. Henkilötietoja taulussa Htun Sukunimi Etunimi Katuosoite Postinro Postitoimipaikka 1112 Virtanen Matti Elmerintie 1 00200 HELSINKI 1221 Klemola Raili Kukkakuja 2 00200 HELSINKI Kolmannen normaalimuodon sääntö kuuluukin seuraavasti: Jokaisen sarakkeen pitää olla funktionaalisesti riippuvainen vain perusavaimesta. Vaikkakin esimerkissä oleva Postitoimipaikka sarake on funktionaalisesti riippuvainen henkilötunnuksesta, kuten pitääkin, niin on se myös riippuvainen postinumerosta. Tämä rikkoo kolmannen normaalimuodon sääntöä. Kun normalisoidaan esimerkkitaulu kolmanteen normaalimuotoon, saadaan seuraavat taulut: taulukko 11 ja taulukko 12. Nyt postitoimipaikkojen nimet eivät toistu turhaan, joka paikassa moneen kertaan. Tällä ratkaisulla myös postinumeroiden ja toimipaikkojen esitallennus on mahdollista, mutta esimerkin tapauksessa ne tulivat järjestelmään sitä mukaan, kun osoitteita kirjoitettiin järjestelmään. Uudella ratkaisulla postinumero ja - toimipaikka kirjoitetaan kerran, jolloin sitä voidaan käyttää useissa paikoissa. Vanhalla mallilla jouduttiin aina kirjaamaan tiedot uudelleen.

13 TAULUKKO 11. Henkilötietoja sisältävä taulu kolmannessa normaalimuodossa Htun Sukunimi Etunimi Katuosoite Postinro 1112 Virtanen Matti Elmerintie 1 00200 1221 Klemola Raili Kukkakuja 2 00200 TAULUKKO 12. Postitoimipaikka omana tauluna Postinro Postitoimipaikka 00200 Helsinki

14 6 TIETOKANNAN TOTEUTUS Suunnittelun tässä vaiheessa on tietokantaa testattu ja todettu toimivaksi. Tietokannan toteutuksessa aletaan luomaan käsitemallin mukaista tietokantaa. Käsitemalli on hiottu siihen kuntoon, että se on valmis toteutettavaksi. Taulujen luonnissa on kuitenkin omia pieniä muistisääntöjä. Täytyy olla mietittynä missä järjestyksessä taulut luodaan, jotta tietokanta saadaan luotua mahdollisimman kivuttomasti. 6.1 Käsitemallista taulurakenteeksi Tietokantaa on käsitelty tähän asti vain niin sanottuna paperiversiona, mutta nyt on aika miettiä kuinka saadaan tehtyä toimiva tietokanta aikaisemmin mietityistä asioista. Tähän asti kuvattu käsitemalli edustaa tietomallia missä on kolme objektia: käsitteitä, tietoja ja yhteyksiä. Relaatiokantojen tietomalli on relaatiomalli missä on vain kahdenlaisia objekteja, tauluja ja tietoja. Käsitemallin yhteyksille ei ole omaa vastinetta relaatiomallissa vaan niistä tehdään kanssa sarakkeita. (Hovi ym. 2005, 104.) TAULUKKO 13. Käsitemallista relaatiokantaan Käsitemalli Relaatiokanta Käsite Taulu Tieto Sarake Yhteys Sarake (viiteavain) 6.2 Taulujen muodostaminen Käsitemallin objektit muutetaan relaatiokantaan seuraavilla tavoilla. 1. Käsitteet Jokaisesta käsitteestä tulee taulu. 2. Tiedot Käsitteiden tiedoista tulee sarakkeita tauluun. 3. Yksi-moneen-yhteydet Näistä yhteyksistä syntyy viiteavaimia.

15 4. Nimeäminen Nimeä taulut ja sarakkeet. Kannattaa miettiä tarkkaan, sillä jos nimeä tarvitsee muuttaa jälkikäteen toiseen voi työ olla aikamoinen. Onhan taulujen nimiä käytetty SQL kyselyissä ja ohjelmissa. 5. Perusavaimet Avaineheyssäännön perusteella perusavaimen arvo on pakollinen. Silloin kun luodaan taulua kirjoita perusavainsarakkeen kohdalle NOT NULL. Esimerkiksi CREATE TABLE Henkilo (htun char(12) NOT NULL) 6. Viiteavaimet Jos viiteavaimen yhteys on pakollinen, on silloin käytettävä NOT NULL jos se taas ei ole pakollinen voidaan se jättää pois Esimerkki Asiakas taulun perustamisesta: CREATE TABLE Asiakas (AsiakasID SMALLINT NOT NULL, AsiakasNimi VARCHAR(70), AsiakasPuh SMALLINT, PRIMARY KEY(AsiakasID)) Kyseinen SQL lause luo Asiakas nimisen taulun, jonka perusavain on AsiakasID. NOT NULL tarkoittaa, että AsiakasID:llä on oltava jokin arvo. VARCHAR AsiakasNimi kohdan perässä tarkoittaa, että se on tekstimuodossa oleva kenttä ja sen maksimipituus on 70 merkkiä. SMALLINT tarkoittaa pientä kokonaislukua. Tauluja voi perustaa siinä järjestyksessä missä haluaa muutamaa poikkeusta lukuun ottamatta. Jos tietokantaan yritetään perustaa lapsitaulua, johon viitataan FOREIGN KEY lauseessa on isätaulu oltava jo luotuna. Muutoin taulun luonti epäonnistuu, sillä kaikkia yhteyksiä ei ole saatu.

16 7 ESIMERKKINÄ ENERGIAGURU Energiaguru on Suomen Energianeuvonta Oy:n uusi palvelu, joka toimii Internetissä. Palvelu auttaa kuluttajia sekä yrityksiä mahdollisimman hyvään sähkösopimukseen. Energiaguru auttaa löytämään vastauksia millainen sähkösopimus kannattaa tehdä, minkä sähkönmyyjän kanssa ja koska on oikea hetki kilpailuttaa tai vaihtaa sähkönmyyjää. Palvelun alkuaikoina palvelua lupasi rakentaa paikallinen toimija. Suomen Energianeuvonta Oy ei ollut tyytyväinen heidän työpanokseensa, joten palvelun tekeminen siirtyi ammattikorkeakoululle. Edellinen tekijä oli luonut oman versionsa tietokannasta, jonka pohjalta Energiaguru palvelu olisi toiminut. Kun palvelun tekeminen siirrettiin ammattikorkeakoululle, huomattiin nopeasti silloisen tietokannan puutteet. Se ei ollut tarpeeksi joustava ja mukautuva palvelun ominaisuuksille. 7.1 (Poistettu julkisesta versiosta) 7.2 (Poistettu julkisesta versiosta) 7.3 (Poistettu julkisesta versiosta)

17 8 TULOKSET JA POHDINTA Aikaisemman palvelun rakentajan luoma epäselvä ja rikkonainen tietokanta antoi ymmärtää, että tuleva urakka on erittäin kova ja pitkä. Teoriaosuudessa käytiin läpi tietokannan suunnittelu alkuvaiheesta aina taulujen luontiin asti. Tämä helpotti tietokannan järkeistämistä todella paljon. Opinnäytetyötä tehdessä mielenkiinto tietokantoja kohtaan on lisääntynyt. Yllätyksenä tuli se, että kuinka haastavaa yksinkertaisenkin asian pilkkominen pieniin palasiin on. Se, että joutuu miettimään taulujen yhteyksiä ja onko mahdollinen tieto tarpeellista palvelun tai ohjelmiston kannalta. Energiagurussa on taustalla paljon erilaisia termejä ja näiden ymmärtäminen ja nimeäminen kuvaavasti ja ymmärrettävästi oli paikoitellen todella vaikeaa. Mielenkiintoisimpana kohtana projektissa oli erityisesti taulujen luontiin liittyvät seikat. Erityisen kiehtovaa on kuinka SQL lause voi olla hyvinkin yksinkertainen, mutta muodostua pienistä seikoista liittyen monimutkaiseksi. Opinnäytetyötä tehdessä olisi voinut ajan käyttää järkevämmin. Eri lähteitä selatessa voi hyvinkin helposti hairahtua hieman tutkimuksen kohteesta. Se, että huomaa mitä kaikkia mahdollisuuksia on olemassa ja mitä kaikkea tietokantojen kyselyt voivat tehdä. Tämä saattaa aiheuttaa sen, että tutkii muita aiheeseen liittyviä asioita liian pitkään, mikä aiheuttaa aikatauluongelmia. Suunnittelun eri vaiheisiin olisi voinut perehtyä hieman enemmän ja syvällisemmin. Eritoten erilaisten SQL kyselyiden tekeminen ja esimerkkien antaminen jäi vähäiseksi.

18 LÄHTEET Ekonoja, A., Lahtonen, T. & Mäntylä, J. 2011a. Tietokannan suunnittelu - Luento 1. Www-dokumentti. Saatavissa: http://appro.mit.jyu.fi/tiedonhallinta/luennot/luento1/#toc15. Luettu 27.4.2014. Ekonoja, A., Lahtonen, T. & Mäntylä, J. 2011b. Relaatiotietokantojen peruskäsitteet. Www-dokumentti. Saatavissa: http://appro.mit.jyu.fi/doc/tiedonhallinta/tietokannat/index2.html. Luettu 29.4.2014. Hovi, A. 2009. SQL-opas. 8. painos. Jyväskylä: Docendo Finland Oy. Hovi, A., Huotari, J. & Lahdenmäki, T. 2005. Tietokantojen suunnittelu & indeksointi. Porvoo: WS Bookwell. Jaakkola, T. & Sarja, J. 2005. Normalisointi. Www-dokumentti. Saatavissa: http://verkkopedagogi.net/vanhat/fi/sisalto/materiaalit/access2003/luku045704.html?c:d= 419716&selres=419716. Luettu 27.4.2014. Kilpeläinen, A. 2007. ER-mallinnus. Wwwdokumentti. http://homes.jamk.fi/~kivni/http0140/material/ermallinnus.html. Luettu: 30.4.2014. Kuuselo, M. Tietokantojen peruskäsitteet. Tiedonhallintajärjestelmät -verkkokurssi. Oulun seudun ammattiopisto. Www-dokumentti. Saatavissa: http://www.okol.org/verkkokurssit/datanomi/tietojarjestelmien_kehittaminen/ti edonhallintajarjestelmat/peruskasitteet.htm. Luettu 28.4.2014. Laine, H. 2005. Tietokantojen perusteet, Helsingin yliopisto, Tietojenkäsittelytieteen laitos. Www-dokumentti. http://www.cs.helsinki.fi/u/laine/tkp/tietomallit/kasiteanalyysi.html. Luettu: 30.4.2014. Microsoft. 2014. Tietokannan normalisoinnin perusteiden kuvaus. Www-dokumentti. Saatavissa: http://support.microsoft.com/kb/283878/fi. Luettu 27.4.2014..