Tietokantaratkaisujen suunnittelun pohjana on peruskäsitteiden ymmärtäminen. Sinun olisi myös ymmärrettävä tietojärjestelmien suunnittelun yleisperiaatteet (näitä on käsitelty Tietojärjestelmien suunnittelu-kurssilla).
3.1.Miksi tietokantoja tarvitaan?
Tiedot ovat yrityksen tai muun organisaation toiminnan kannalta keskeinen ja elintärkeä resurssi. Organisaatiot tuottavat toiminnassaan koko ajan tietoa ja käyttävät paljon muiden tuottamaa tietoa. Jotta syntyvä ja käytettävä tieto olisi mahdollista tallentaa kohtuullisilla kustannuksilla luotettavasti, tarvitaan tietokantoja. Käytännössä kaikki nykyaikaiset yritysten tietojärjestelmät perustuva tietokantojen käyttöön.
Tietokantoihin liittyy termi tiedonhallinta, jolla tarkoitetaan kaikkea tallennetun tiedon määrittelemiseen ja käyttöön liittyvää toimintaa. Jos ajatellaan yritysorganisaatiota, niin vastaavalaista toimintaa ovat esimerkiksi materiaalinhallinta ja henkilöstönhallinta, joihin liittyy tiedonhallintaa. Materiaali ja henkilöstö ovat yrityksen resursseja samoin kuin tieto. Tiedonhallinta on siis tietoresurssin hallintaa.
Tietokanta on käsitteenä hieman tuotekohtainen asia. Esimerkiksi suositun Microsoft Excel - taulukkolaskentaohjelma ominaisuuksissa puhutaan tietokannasta, vaikka kyseessä on pikemminkin haku- ja laskentaominaisuuksilla varustettu luettelo.
Tämän kurssin yhteydessä tietokannalla tarkoitetaan nimenomaan relaatiotietokantaa, joka voidaan määritellä seuraavasti:
Tietokanta on loogisesti yhteenkuuluvien, tallennettujen tietojen joukko, jota voidaan helposti käsitellä kyselykielellä.
Mitä tarkoitetaan loogisesti yhteenkuuluvilla tiedoilla ja mitä tarkoitetaan kyselykielellä? Looginen yhteenkuuluvaisuus tarkoittaa sitä, että tietokannassa olevat tiedot kuuluvat samaan kokonaisuuteen siten, että eri tietojen välillä on jokin järkevä yhteys. Käytännössä tämä tarkoittaa sitä, että jos tietokannassa on vaikkapa yrityksen asiakastietoja, niin siellä ei sitten ole mitään asiaan kuulumatonta, esimerkiksi ammattiopiston opiskelijoiden opintosuorituksia.
Kyselykielellä tarkoitetaan relaatiotietokantojen sisältämään SQL-kieltä, jonka avulla voidaan suorittaa tietojen hakua, ylläpitoa ja monia muita toimintoja.
3.3. Tietokannan hallintajärjestelmä
Tietokannassa olevia tietoja käytetään joko jonkin sovellusohjelman kautta tai sitten erityisellä tietokannan hallintajärjestelmällä. (Relational Database Management System, RDMS, suomeksi näkee käytettävän lyhennettä TKHJ). Tämän järjestelmän avulla voidaan rakentaa tietokanta, lisätä, muuttaa ja poistaa tietoja, muuttaa tietokannan rakennetta ja vaikkapa jakaa käyttöoikeuksia. Monessa tapauksessa hallintajärjestelmän työkaluilla voidaan myös luoda tietokannan käyttöliittymä.
Markkinoilla on useita tietokannan hallintajärjestelmiä, joista osa on tarkoitettu vaativaan käyttöön ja osa sopii paremmin protoiluvälineiksi ja henkilökohtaiseen käyttöön. Vaativaan käyttöön tarkoitetuista tietokannan hallintajärjestelmistä mainittakoon Oracle, DB2, Microsoft SQL Server. Kevyempää sarjaa edustakoon Microsoft Access ja tällä kurssilla käytettävä ilmainen MySQL (Huom. On makuasia, pitääkö Accessia ja MySQL:ää kevyen sarjan tuotteina, edellä esitetty o kirjoittajan mielipide).
3.4. Tietokannan peruskäsitteet
Relaatiotietokantojen suunnitteluun perehtyminen on aloitettava peruskäsitteiden opiskelulla. Käytän tässä kappaleessa esimerkkinä tietokantaa, johon on tallennettu yrityksen työntekijöitä koskevia tietoja.
Tietokanta koostuu tauluista (table) ja taulujen välisistä yhteyksistä (relation). Taulut koostuvat tietueista (record) ja kentistä (field). Kenttä on tietokannan pienin osa, sillä jokaista tietokantaan tallennettavaa tietoa varten tarvitaan kenttä. Esimerkkitietokantamme koostuu tässä vaiheessa yhdestä Duunari- nimisestä taulusta, jossa ovat kentät etunimi, sukunimi ja tyontekijanumero (Huom. Kenttien nimissä ei ole suotavaa käyttää niin sanottuja skandinaavisia aakkosia). Kaikki kentät yhdessä muodostavat tietueen.
Kenttä, tietue ja taulu
Alla olevassa kuvassa näet esimerkkitietokannan yhden kentän, useamman kentän muodostaman tietueen ja alimpana useamman tietueen muodostaman taulun.
Etunimi | ||
Antti |
Tyontekijanro | Etunimi | Sukunimi |
1 | Antti | Ahkera |
Tyontekijanro | Etunimi | Sukunimi |
1 | Antti | Ahkera |
2 | Lauri | Laiska |
3 | Oskari | Onnenonkija |
Kuva 1. Duunari-taulun kenttä, tietue ja koko taulu
Tietokannan kentällä on koko joukko ominaisuuksia, jotka sinun tulee tuntea ja osata määritellä tietokantaa luodessasi. Tärkeimmät näistä ominaisuuksista ovat kentän nimi (field name) ja tietotyyppi (datatype).
Kentän nimenä kannattaa käyttää kentän tietosisältöä kuvaava ja selkeää nimeä. Älä käytä nimessä välilyöntejä, erikoismerkkejä äläkä skandinaavisia aakkosia. Niistä aiheutuu todennäköisesti ongelmia.
Tietotyyppi voi olla esimerkiksi aakkosnumeerinen, numeerinen, päivämäärä tai looginen. Käytettävissä olevat tietotyypit ja niiden nimitykset vaihtelevat käytettävästä tietokannan hallintajärjestelmästä riippuen.
Avaimet
Tietokannan toiminnan kannalta keskeinen asia ovat avaimet (keys). Avaimia on neljää eri lajia: avainehdokkaita, pääavaimia (primary key), viiteavaimia (referential key) ja epäavaimia.
Avainehdokkaalla tarkoitetaan sellaista taulun kenttää tai useamman kentän yhdistelmää, jonka avulla jokainen taulun tietue voidaan tunnistaa yksikäsitteisesti. Taulun pääavain/pääavaimet valitaan avainehdokkaiden joukosta. Taululla tulee olla vähintään yksi avainehdokas. Jotta kenttä kelpaisi avainehdokkaaksi ja samalla myös pääavaimeksi, tulee sen täyttää seuraavat ehdot:
- avainehdokkaan pitää määritellä jokainen taulun tietue yksiselitteisesti
- avainehdokkaalla tulee olla jokaisessa tietueessa ainutlaatuinen arvo
- avainehdokkaan arvo ei voi olla tyhjä (null)
- avainehdokas ei voi olla moniosainen kenttä
- avainehdokas sisältää vain niin monta kenttää kuin on tarpeen ehdokkaan yksiselitteiseksi määrittelemiseksi
- avainehdokkaan arvo ei voi olla vapaaehtoinen
- avainehdokkaan arvon pitää viitata taulun kenttään suoraan
- avainehdokkaan arvoa ei saa muuttaa
Taulun pääavain valitaan siis avainehdokkaiden joukosta. Pääavaimeksi kannattaa valita sellainen avainehdokas, jonka käyttö on kaikkein helpointa. Esimerkkitietokantamme taulussa on vain yksi avainehdokas, joten valinta on helppo: pääavaimeksi sopii tyontekijanumero.
Kun taulun pääavain on valittu, syntyy niin sanottu taulutason eheys.
Jotta voisimme käsitellä viiteavainta, laajennamme esimerkkitietokantaa lisäämällä siihen toisen taulun, jossa on tietoja yrityksen osastoista ja osastoilla työskentelevistä työntekijöistä. Tarvittavat kentät ovat osa voi osastonro, osastonimi ja tyontekijanro. Tämän Osasto-taulun pääavain on selvästikin osastonro, mutta mikä kenttä on viiteavain? Mikä on sellainen kenttä, joka on sekä Duunari- että Osasto-taulussa? Se on tietenkin tyontekijanro.
Tyontekijanro | Etunimi | Sukunimi |
1 | Antti | Ahkera |
2 | Lauri | Laiska |
3 | Oskari | Onnenonkija |
Osastonro | Osastonimi | Tyontekijanro |
1 | Johto | 2 |
Kuva 2. Duunari- ja Osastotaulut
Viiteavainta siis tarvitaan, kun kaksi taulua yhdistetään toisiinsa eli kun taulujen välille luodaan relaatio. Yhdistäminen tapahtuu toisen taulun pääavaimesta (merkitty sinisellä) toisen taulun viiteavaimeen (merkitty punaisella), esimerkkimme tapauksessa Duunari-taulun Tyontekijanro-kentästä Osasto-taulun Tyontekijanro-kenttään. Jotta yhdistäminen onnistuisi, täytyy pääavainkentän ja viiteavainkentän olla tietotyypiltään yhteensopivia. (Kirj. huom. Järjestelmästä riippuen voi pääavain-viiteavain - parille olla muitakin vaatimuksia).
Epäavain on kenttä, joka ei toimi avainehdokkaana, pääavaimena tai viiteavaimena. Epäavain on kenttä, joka edustaa taulun asian jotain ominaisuutta ja jonka arvon määrää pääavain. Käytännössä kaikki ei-avainkentät ovat epäavaimia. (Kirj. huom. Epäavain on jokseenkin teoreettinen käsite, käytännössä näihin ei kiinnitetä huomiota).
Yhteydet
Määritelmän mukaan yhteys on kahden taulun välinen liitos. Yhteys on olemassa, kun taulut on yhdistetty toisiinsa pääavaimen ja viiteavaimen avulla (tai joissakin tapauksissa niin sanotun linkitystaulun avulla).
Yhteys on ratkaisevan tärkeä asia tietokannan toiminnan kannalta, koska
- se yhdistää kaksi taulua, joiden sisältämät tiedot liittyvät loogisesti toisiinsa
- taulurakenteet tulevat paremmiksi, ylimääräisen tiedon määrä minimoituu
- se mahdollistaa tiedon hakemisen useasta taulusta yhtä aikaa
- oikein luodut yhteydet mahdollistavat yhteystason eheyden
Taulujen välillä voi olla eri tyyppisiä yhteyksiä: yhdestä - yhteen, yhdestä - moneen, monesta - moneen.
Yhdestä - yhteen: taulun A jokainen tietue liittyy yhteen ja vain yhteen taulun B tietueeseen ja kääntäen.
Yhdestä - moneen: taulun A yksittäinen tietue voi liittyä yhteen tai useampaan taulun B tietueeseen, mutta taulun B yksittäinen tietue liittyy vain yhteen taulun A tietueeseen. Tämä on yleisin yhteystyyppi.
Monesta - moneen: taulun A yksittäinen tietue voi liittyä yhteen tai useampaan taulun B tietueeseen ja taulun B yksittäinen tietue voi liittyä yhteen tai useampaan taulun A tietueeseen. Tätä tyyppiä ei saa esiintyä hyvin suunnitellussa tietokannassa.
Oppimistehtävä 1. Selvitä jonkin tuntemasi tiedonhallintajärjestelmän (esim. Access, MySQL) kenttien ominaisuudet (sallitut tietotyypit, kentän maksimipituus, pääavain-viiteavain - parille asetetut vaatimukset jne.)