Relaatiomalli
Johdanto
Aiemmin tarkastelimme intuitiivisesti ja esimerkkien kautta Excel-ohjelmaan tallennetun tietoaineiston organisoimista laskentataulukoihin. Seuraavaksi lähestymme ongelmaa käsitteellisesti ja tutustumme relaatiomalliin.
Relaatiomalli on looginen tietomalli, jolla voidaan täsmällisesti kuvata tietojen organisointi sekä tietoaineistoihin tehtävät kyselyt, poistot ja päivitykset.
Relaatiomallin mukaisesti kuvattu tietoaineisto voidaan toteuttaa relaatiotietokantana. Tällöin voidaan hyödyntää valmiita tietokannan hallintajärjestelmiä eli ohjelmistoja, joiden avulla tietokanta voidaan luoda, sitä voidaan ylläpitää ja siihen voidaan kohdistaa kyselyitä, poistoja ja päivityksiä.
Relaatio ja attribuutit
Seuraavassa kuvataan relaatiomallin keskeisiä käsitteitä. Koska relaatiomallin mukaiset tietoaineistot voidaan esittää taulukkoina, kerrotaan sulkeissa kunkin käsitteen vastine taulukkoesityksessä.
Relaatiolla tarkoitetaan nimettyä, kaksiulotteista tietojoukkoa (taulukkoa/taulua).
Relaatio täyttää seuraavat ehdot:
- Relaatiolla (taulukolla) on nimi, joka erottaa sen muista relaatioista (taulukoista)
- Relaatiolla on attribuutteja (sarakeotsikoita), joista jokaisella on relaation (taulukon) sisällä yksikäsitteinen nimi.
- Relaatio (taulukko) sisältää monikoita (rivejä), joista kukin koostuu attribuuttien arvoista.
- Relaation (taulukon) kaikki rivit ovat erilaisia.
- Attribuuttien (sarakkeiden) ja monikoiden (rivien) järjestyksellä ei ole väliä.
- Kussakin monikossa kukin attribuutin arvo (solun sisältö) on atominen eli se sisältää yhden, yksikäsitteisen arvon.
Tästä lähtien puhumme tauluista, riveistä ja sarakkeista. Taustalla ovat edellä kuvatut relaatiomallin käsitteet.
Tarkastelimme aiemmin työntekijäaineistoa, jossa päädyimme jakamaan tietoaineiston kahteen laskentataulukkoon. Toinen taulukoista sisältää tiedot työntekijöistä ja toinen osastoista:
Onko edellä esitetty ratkaisu relaatiomallin mukainen?
Toteamme, että edellä kuvatut ehdot 1-6 täyttyvät, joten tietoaineistomme on relaatiomallin mukainen. Esimerkiksi kukin ihminen ja kukin osasto esiintyy aineistoissa vain kertaalleen.
Näemme myös, että kaikki Excel-taulukot eivät ole relaatiomallin mukaisia. On helppo kirjoittaa Excel-laskentataulukoita, joiden rakenne rikkoo kutakin edellä esitetyistä ehdoista 1-6.
Pääavain
Taulun pääavaimella tarkoitetaan sellaista saraketta (tai sarakejoukkoa), jonka arvot erottelevat taulun rivit toisistaan yksikäsitteisesti.
TYÖNTEKIJÄ
Henkilönumero | Sukunimi | Etunimi | Osasto |
1 | Nieminen | Ville | 1 |
2 | Peltonen | Maija | 3 |
3 | Virtanen | Mervi | 2 |
OSASTO
Osastonumero | Nimi | Budjetti |
1 | Markkinointi | 20 |
2 | Myynti | 70 |
3 | Asiakaspalvelu | 6 |
Esimerkiksi edellä esitetyn taulun TYÖNTEKIJÄ pääavain on Henkilönumero. Kukin työntekijä voidaan tunnistaa yksikäsitteisesti hänen henkilönumeronsa perusteella. Kahdella työntekijällä ei voi olla samaa henkilönumeroa.
Vastaavasti taulun OSASTO pääavain on Osastonumero. Osastot voidaan erottaa toisistaan osastonumeron perusteella.
Pääavaimen arvojen on oltava yksikäsitteisiä, ja pääavaimelle on annettava arvo jokaisella rivillä.
Viiteavain
Viiteavainten avulla voidaan yhdistää eri taulukoissa olevia tietoja.
Viiteavain viittaa toisen taulun pääavaimeen. Esimerkiksi TYÖNTEKIJÄ-taulun attribuutti Osasto viittaa OSASTO-taulun sarakkeeseen Osastonumero.
Relaatiotietokanta ja relaatiokaavio
Toisiinsa liittyvät taulut muodostavat relaatiotietokannan.
Relaatiokaavion avulla voidaan kuvata relaatiotietokantaan kuuluvat taulut sekä niiden pää- ja viiteavaimet. Relaatiokaaviossa voidaan kuvata myös sarakkeiden arvoalueita (esim. kokonaisluku) ja muuta oheistietoa.
Edellä kuvattu kahdesta taulusta koostuva relaatiotietokanta voitaisiin esittää relaatiokaaviona seuraavasti:
TYÖNTEKIJÄ(Henkilönumero, Sukunimi, Etunimi, Osasto, Lähiosoite, Postinumero, Postitoimipaikka)
OSASTO(Osastonumero, Nimi, Päällikkö, Budjetti)
Edellä pääavaimet kuvattiin alleviivattuina ja viiteavaimet kursivoituina.
Eheysrajoitteet
Arvoaluerajoite
Sarakkeen arvoalueella tarkoitetaan niiden arvojen joukkoa, jotka sarake voi saada. Esimerkiksi edellisen esimerkin taulun TYÖNTEKIJÄ sarakkeen Henkilönumero arvoalueena olisi kokonaislukujen joukko.
Arvoalue voidaan määrittää myös yksityiskohtaisemmin: jos sarake sisältää suomalaisen postinumeron, voitaisiin määrittää, että arvoalueena olisi viisinumeroinen kokonaisluku etunollineen tai (tarkemmin) Suomessa käytössä olevien arvoalueiden joukko.
Kun sarakkeen arvoalue määritetään, voi tietokannan hallintajärjestelmä valvoa, että tietokannassa olevat sarakkeet sisältävät vain arvoalueeseen kuuluvia arvoja. Tällöin esimerkiksi kielletyn muotoisen postinumeron syöttäminen estetään teknisesti.
Avainrajoite
Avainrajoite määrää sen, että kaikilla taulun riveillä on kelvollinen pääavaimen arvo, joka ei ole sama kuin minkään muun pääavaimen arvo.
Tietokannan hallintajärjestelmä valvoo avainrajoitteen toteutumista.
Esimerkiksi seuraava tilanne rikkoo avainrajoitetta (pääavaimena Kurssitunnus):
KURSSI
Kurssitunnus | Nimi | Opintoviikot |
101 | Mekaniikan perusteet | 3 |
201 | Suhteellisuusteoria | 2 |
101 | Astrofysiikka | 4 |
Viite-eheysrajoite
Tilanteissa, joissa sarake viittaa toisen taulun pääavaimeen - eli on viiteavaimena - on tarkoituksenmukaista vaatia, että viittaus osoittaa kohteeseensa (tai viitevaimena on arvona erityinen NULL-arvo). Tämä tarkoittaa sitä, että viiteavaimen arvon on aina esiinnyttävä kohdetaulun jonkin monikon pääavaimen arvona. Muussa tapauksessa viite-eheys rikkoutuu, ja tietokannassa viittauksia, jotka eivät osoita mihinkään.
Seuraava kuva esittää tilannetta, jossa viite-eheys rikkoutuu. Henkilön n:o 2 osastonumeroa (4) ei löydy OSASTO-taulun osastonumeroiden joukosta.
TYÖNTEKIJÄ
Henkilönumero | Sukunimi | Etunimi | Osasto |
1 | Nieminen | Ville | 1 |
2 | Peltonen | Maija | 4 |
3 | Virtanen | Mervi | 2 |
OSASTO
Osastonumero | Nimi | Budjetti |
1 | Markkinointi | 20 |
2 | Myynti | 70 |
3 | Asiakaspalvelu | 6 |
Tietokannan hallintajärjestelmä valvoo viite-eheysrajoitteen toteutumista.
Tietokannan normaalimuodot
Tietokantaa suunniteltaessa tietokanta pyritään saattamaan ns. kolmanteen normaalimuotoon, jossa tietokannan taulujen rakenteella on toivottuja ominaisuuksia. Kolmanteen normaalimuotoon päästään ensimmäisen ja toisen normaalimuodon kautta.
Taulujen saattamista kolmanteen normaalimuotoon kutsutaan tietokannan normalisoinniksi. Ehtoja rikkovat taulut pilkotaan pienemmiksi tauluiksi, kunnes ehdot toteutuvat.
Ensimmäinen normaalimuoto
Ensimmäinen normaalimuoto edellyttää, että kaikki sarakkeiden arvot ovat yksiarvoisia. Tämä ehto täyttyy lähtökohtaisesti, jos tietokanta on suunniteltu relaatiomuotoon. Esimerkiksi sarakkeen Lapset arvo Liisa, Maija, Ville ei olisi yksiarvoinen.
Toinen normaalimuoto
Toinen normaalimuoto vaatii lisäksi, että taulussa ei ole tilannetta, jossa osa pääavaimesta (vaan ei koko pääavain) määräisi jonkin sarakkeen arvon. Seuraava taulu kuvaisi kiellettyä tilannetta:
TOTEUTUS
Kurssi | Toteutusnumero | Opettaja | Opintopisteet |
Sovellusohjelmat | 16 | Virtanen | 3 |
Sovellusohjelmat | 17 | Lehtinen | 3 |
Suhteellisuusteorian perusteet | 16 | Kallio | 4 |
Edellisessä esimerkissä opintopisteiden määrä riippuu pelkästään kurssin nimestä, vaikka taulun pääavaimena ovat Kurssi ja Toteutusnumero yhdessä. Opintopistemäärä joudutaan syöttämään liian moneen paikkaan.
Kolmas normaalimuoto
Kolmas normaalimuoto vaatii lisäksi, että taulussa ei ole ns. transitiivisia riippuvuuksia, joissa jokin sarake riippuu toisesta sarakkeesta, joka ei ole pääavain.
Esimerkiksi seuraava taulu ei ole kolmannessa normaalimuodossa. Sarakkeen Osaston_nimi arvo määräytyy suoraan sarakkeen Osasto perusteella, eikä Osasto-sarake ole taulun pääavain.
TYÖNTEKIJÄ
Henkilönumero | Sukunimi | Etunimi | Osasto | Osaston_nimi |
1 | Nieminen | Ville | 1 | Markkinointi |
2 | Peltonen | Maija | 4 | Asiakaspalvelu |
3 | Virtanen | Mervi | 4 | Asiakaspalvelu |