Tietokannan suunnittelun perusteet

Tietokannan suunnittelun perusteet

Oikein suunniteltu tietokanta antaa ajan tasalla olevat ja tarkat tiedot. Koska oikea suunnittelu on tärkeää tavoitteiden saavuttamiseksi tietokannan parissa työskenneltäessä, hyvää rakennetta koskevien periaatteiden opiskelemiseen kannattaa käyttää aikaa. Loppujen lopuksi tuloksena on todennäköisesti tietokanta, joka täyttää tarpeesi ja mukautuu helposti muutoksiin.

Tämä artikkeli sisältää ohjeet tietokannan työpöytäversion suunnitteluun. Opit päättämään, mitä tietoja tarvitset, miten tiedot jaetaan sopiviin taulukoihin ja sarakkeisiin ja miten nämä taulukot liittyvät toisiinsa. Tämä artikkeli kannattaa lukea ennen ensimmäisen työpöytätietokannan luomista.

Tärkeää: Access sisältää rakenneominaisuuksia, joiden avulla voit luoda tietokantasovelluksia verkkoa varten. Monet rakenteeseen liittyvät osat ovat erilaisia, kun tietokantaa suunnitellaan verkkoa varten. Tässä artikkelissa ei käsitellä verkon tietokantasovellusten rakennetta. Lisätietoja verkkotietokannoista on artikkelissa Internetin kautta jaettavan tietokannan luominen.

Tämän artikkelin sisältö

Tietokantaan liittyviin termeihin tutustuminen

Mikä on hyvä tietokannan rakenne?

Suunnitteluprosessi

Tietokannan tarkoituksen määrittäminen

Tarvittavien tietojen etsiminen ja järjestäminen

Tietojen jakaminen taulukoihin

Tietokohteiden muuttaminen sarakkeiksi

Perusavainten määrittäminen

Taulukoiden yhteyksien luominen

Rakenteen hienosäätäminen

Normalisointisääntöjen käyttäminen


Tietokantaan liittyviin termeihin tutustuminen

Access järjestää tietoja taulukoiksi, eli rivien ja sarakkeiden luetteloiksi, jotka muistuttavat tilikirjaa tai laskentataulukkoa. Yksinkertaisessa tietokannassa saattaa olla vain yksi taulukko. Useimmissa tietokannoissa niitä tarvitaan useampia. Käytössä voi olla esimerkiksi taulukko, johon tallennetaan tietoa tuotteista, toinen taulukko, johon tallennetaan tietoja tilauksista, ja kolmas taulukko, joka sisältää tietoja asiakkaista.

Kuva, jossa on kolme taulukkoa taulukkonäkymissä

Kutakin riviä kutsutaan tietueeksi ja kutakin saraketta kentäksi. Tietue on havainnollinen ja yhdenmukainen tapa yhdistää tietoja tietystä aiheesta. Kenttä on yksittäinen tietokohde. Se on kohdelaji, joka näkyy jokaisessa tietueessa. Esimerkiksi Tuotteet-taulukossa jokaisella rivillä, eli jokaisessa tietueessa, olisi tietoja yhdestä tuotteesta. Jokaisessa sarakkeessa, eli kentässä, olisi kyseistä tuotetta koskeva tietyntyyppinen tieto, kuten nimi tai hinta.

Sivun alkuun

Mikä on hyvä tietokannan rakenne?

Tietyt periaatteet ohjaavat tietokannan suunnitteluprosessia. Ensimmäinen periaate on tietojen kaksoiskappaleiden (eli päällekkäisten tietojen) välttäminen. Ne vievät tarpeettomasti tilaa ja lisäävät virheiden ja epäyhtenäisyyksien todennäköisyyttä. Toinen periaate on tietojen oikeellisuuden ja eheyden tärkeys. Jos tietokanta sisältää virheellisiä tietoja, myös tietokannasta tietoja noutavat raportit sisältävät virheellisiä tietoja. Tällöin raportteihin perustuvat päätökset tehdään väärien tietojen pohjalta.

Hyvän tietokannan rakenne on sellainen, joka

  • jakaa tiedot aihepohjaisiin taulukoihin päällekkäisten tietojen vähentämiseksi

  • tarjoaa Accessille sen tarvitsemat tiedot, jotta se voi liittää taulukoissa olevat tiedot yhteen tarpeen mukaan

  • auttaa tietojen tarkkuuden ja eheyden tukemisessa ja varmistamisessa

  • vastaa tietojen käsittely- ja raportointitarpeita.

Sivun alkuun

Suunnitteluprosessi

Suunnitteluprosessi koostuu seuraavista vaiheista:

  • Määritä tietokantasi tarkoitus   

    Tämä auttaa valmistautumaan muihin vaiheisiin.

  • Etsi ja järjestä tarvittavat tiedot   

    Kerää kaikentyyppiset tiedot, jotka haluat tallentaa tietokantaan, kuten tuotteiden nimet ja tilausnumerot.

  • Jaa tiedot taulukoihin    

    Jaa tiedot pääkohteisiin tai -aiheisiin, kuten tuotteisiin tai tilauksiin. Jokaisesta aiheesta tulee taulukko.

  • Muuta tietokohteet sarakkeiksi    

    Määritä, mitä tietoja haluat tallentaa mihinkin taulukkoon. Jokaisesta kohteesta tulee kenttä, joka näkyy taulukossa sarakkeena. Työntekijätaulukossa voi olla esimerkiksi kentät Sukunimi ja Aloittanut.

  • Määritä perusavaimet    

    Valitse jokaisen taulukon perusavain. Perusavain on sarake, jolla yksilöidään kukin rivi. Se voi olla esimerkiksi Tuotetunnus tai Tilaustunnus.

  • Määritä taulukoiden yhteydet    

    Katso taulukoita ja päätä, miten taulukossa olevat tiedot liittyvät toisen taulukon tietoihin. Lisää tarvittaessa taulukoihin kenttiä tai luo uusia taulukoita yhteyksien selventämiseksi.

  • Tarkenna rakennetta    

    Analysoi rakenne virheiden varalta. Luo taulukoita ja lisää esimerkkitietoja tietueisiin. Katso, saatko taulukoista haluamasi tulokset. Muokkaa rakennetta tarvittaessa.

  • Käytä normalisointisääntöjä    

    Käytä normalisointisääntöjä, jotta näet, onko taulukoiden rakenne oikea. Muokkaa taulukoita tarvittaessa.

Sivun alkuun

Tietokannan tarkoituksen määrittäminen

Tietokannan tarkoitus kannattaa kirjoittaa paperille. Listaa sen tarkoitus, käyttötapa ja kuka sitä käyttää. Jos haluat luoda pienen tietokannan kotonasi toimivaa yritystä varten, voit kirjoittaa jotakin yksinkertaista, kuten ”Asiakastietokannassa säilytetään asiakastietojen luetteloa postituksia ja raportteja varten”. Jos tietokanta on monimutkainen tai monet käyttävät sitä (kuten monesti yritysmaailmassa tapahtuu), tarkoitus voi olla helpostikin kappaleen pituinen tai pidempikin. Sen tulee sisältää milloin ja miten kukin henkilö käyttää tietokantaa. Ideana on tuottaa pitkälle jalostettu tehtäväkuvaus, johon voidaan palata suunnitteluprosessin aikana. Tällaisen kuvauksen ansiosta on helpompi keskittyä tavoitteisiin päätöksiä tehtäessä.

Sivun alkuun

Tarvittavien tietojen etsiminen ja järjestäminen

Aloita olemassa olevista tiedoista, jotta löydät tarvittavat tiedot ja voit järjestää ne. Voi esimerkiksi olla, että tallennat tällä hetkellä ostotilaukset tilikirjaan tai säilytät asiakastietoja arkistokaappiin säilöttävissä paperilomakkeissa. Kerää kyseiset asiakirjat ja luetteloi jokainen näytettävä tietotyyppi (esimerkiksi jokainen lomakkeessa täytettävä ruutu). Jos valmiita lomakkeita ei ole, mieti, millaisen lomakkeen suunnittelisit asiakastietojen tallentamiseen. Mitä tietoja laittaisit lomakkeeseen? Mitä täytettäviä ruutuja loisit? Tunnista ja luettele nämä kohteet. Oletetaan esimerkiksi, että pidät asiakasluetteloa kortistokorteilla. Kortteja tarkastelemalla saatat huomata, että jokaisessa kortissa on asiakkaan nimi, osoite, kaupunki, osavaltio, postinumero ja puhelinnumero. Niistä jokainen voi vastata taulukon saraketta.

Kun valmistelet luetteloa, älä yritä saada siitä täydellistä heti kerralla. Luetteloi sen sijaan jokainen kohta, joka tulee mieleen. Jos joku muukin käyttää tietokantaa, pyydä myös häneltä ideoita. Voit hienosäätää luetteloa myöhemmin.

Mieti seuraavaksi tietokannasta luotavia raportti- tai postitustyyppejä. Voit esimerkiksi luoda tuotteen myyntiraportin, jossa myynti näkyy alueittain, tai varaston yhteenvetoraportin, jossa näkyvät tuotevaraston määrät. Ehkä tarpeena on myös luoda asiakkaille lähetettäviä kirjeitä, joissa ilmoitetaan myyntitapahtumasta tai tarjotaan etuja. Suunnittele raportti mielessäsi ja kuvittele, miltä se näyttäisi. Mitä tietoja laittaisit raporttiin? Luettele jokainen kohta. Toimi samoin kirjeiden ja muiden haluamiesi raporttien kohdalla.

Henkilö kuvittelemassa tuoteinventaarioraporttia

Raporttien ja postitusten miettiminen saattaa auttaa tunnistamaan tietokannassa tarvittavat kohteet. Oletetaan esimerkiksi, että annat asiakkaille mahdollisuuden vastaanottaa (tai olla vastaanottamatta) säännöllisiä sähköpostipäivityksiä ja haluat tulostaa luettelon asiakkaista, jotka ovat ilmoittaneet haluavansa vastaanottaa päivitykset. Tallennat tiedon lisäämällä asiakastaulukkoon Sähköpostin lähettäminen -sarakkeen. Voit asettaa jokaisen asiakkaan kohdalla kentän arvoksi Kyllä tai Ei.

Sähköpostiviestien lähettäminen asiakkaille tuo mukanaan toisen tallennettavan kohdan. Kun tiedät, että asiakas haluaa vastaanottaa sähköpostiviestejä, sinulla on myös oltava sähköpostiosoite, johon viestit lähetetään. Sen vuoksi on tallennettava jokaisen asiakkaan sähköpostiosoite.

Jokaisesta raportista tai tulosluettelosta kannattaa tehdä prototyyppi. Lisäksi kannattaa harkita, mitä tietoja raportin tuottamiseen tarvitaan. Kun esimerkiksi tarkastelet joukkokirjettä, mieleen voi tulla muutamia seikkoja. Jos haluat sisällyttää kirjeeseen kunnollisen tervehdyksen, esimerkiksi merkkijonolla ”Herra”, ”Rouva” tai ”Neiti” alkavan tervehdyksen, sinun on luotava tervehdyskohde. Kirjeen alussa saattaa lisäksi olla yleensä ”Hei herra Nieminen” sen sijaan, että alussa lukisi ”Hei. herra Pekka Nieminen”. Tämä osoittaa, että sukunimi kannattaa yleensä tallentaa erikseen etunimestä.

Kannattaa myös muistaa, että jokainen tieto tulee purkaa pienimpiin käyttökelpoisiin osiin. Nimen ollessa kyseessä nimi puretaan kahteen osaan, etunimeen ja sukunimeen, jotta sukunimi on helposti käytettävissä. Jos raportti halutaan esimerkiksi lajitella sukunimen mukaan, asiakkaan sukunimi on kätevästi tallennettuna erikseen. Jos haluat lajitella tai etsiä tietoja, suorittaa laskutoimituksen tai luoda raportin tietyn tiedon perusteella, sijoita kyseinen tieto omaan kenttäänsä.

Mieti kysymyksiä, joihin haluat saada vastauksen tietokannasta. Esimerkiksi kuinka monta kappaletta myit kyseistä tuotetta viime kuussa? Missä parhaat asiakkaasi asuvat? Kuka toimittaa myydyimmän tuotteesi? Näiden kysymysten ennakoiminen auttaa löytämään muut tallennettavat kohteet.

Tietojen keräämisen jälkeen olet valmis seuraavaan vaiheeseen.

Sivun alkuun

Tietojen jakaminen taulukoihin

Jos haluat jakaa tietoja taulukoiksi, valitse pääkohteet tai -aiheet. Esimerkiksi tuotemyynnin tietokannan tietojen löytämisen ja järjestämisen jälkeen alustava luettelo voi näyttää tältä:

Käsinkirjoitettuja tieto-osia, jotka on ryhmitelty aiheisiin.

Tässä näkyviä pääkohteita ovat tuotteet, toimittajat, asiakkaat ja tilaukset. Näistä neljästä taulukosta kannattaa siis aloittaa: yhdessä on tuotteiden tiedot, toisessa toimittajia koskevat tiedot, kolmannessa asiakkaiden tiedot ja neljännessä tilausten tiedot. Vaikka luettelo ei olekaan täydellinen, se on hyvä lähtökohta. Voit jatkaa luettelon tarkentamista, kunnes tuloksena on hyvin toimiva rakenne.

Alustavaa luetteloa ensimmäistä kertaa tarkasteltaessa saattaa tulla mieleen, että ne voisi kaikki laittaa yhteen taulukkoon yllä olevassa kuvassa olevien neljän taulukon sijasta. Opit tässä, miksi se ei kannata. Mieti hetki alla näkyvää taulukkoa:

Kuva, jossa on sekä tuotteita että toimittajia sisältävä taulukko

Tässä tapauksessa jokaisella rivillä on tietoja sekä tuotteesta että toimittajasta. Koska samalta toimittajalta voi olla useita tuotteita, toimittajan nimi- ja osoitetiedot on toistettava monta kertaa. Tämä vie turhaan levytilaa. Parempi ratkaisu on tallentaa toimittajan tiedot vain kerran erilliseen toimittajataulukkoon ja linkittää kyseinen taulukko sitten tuotetaulukkoon.

Toinen tämän rakenteen ongelma käy ilmi, kun sinun pitää muokata toimittajan tietoja. Oletetaan esimerkiksi, että sinun pitää muuttaa toimittajan osoitetta. Koska se on useissa paikoissa, saatat vahingossa muuttaa osoitteen yhdessä paikassa, mutta saatat unohtaa muuttaa sen muissa paikoissa. Toimittajan osoitteen tallentaminen vain yhteen paikkaan ratkaisee tämän ongelman.

Kun suunnittelet tietokantaa, yritä aina tallentaa kunkin tieto vain kerran. Jos huomaat toistavasi samat tiedot useassa paikassa, kuten tietyn toimittajan osoitteen, lisää kyseinen tieto erilliseen taulukkoon.

Oletetaan lopuksi, että olemassa on vain yksi Coho Wineryn toimittama tuote ja haluat poistaa tuotteen, mutta säilyttää toimittajan nimi- ja osoitetiedot. Miten tuotetietue voitaisiin poistaa poistamatta samalla toimittajan tietoja? Ei mitenkään. Koska jokainen tietue sisältää tiedon tuotteesta ja myös toimittajasta, toista ei voi poistaa poistamatta toista. Tiedot on pidettävä erillisinä jakamalla taulukko kahdeksi taulukoksi: toinen tuotteen tietoja ja toinen toimittajan tietoja varten. Tämän jälkeen tuotetietue poistettaessa poistetaan vain tuotteen tiedot, ei toimittajan tietoja.

Kun olet valinnut aiheen, jota taulukko edustaa, kyseisen taulukon sarakkeisiin kannattaa tallentaa tietoja vain kyseisestä aiheesta. Esimerkiksi tuotetaulukkoon tulee tallentaa vain tuotteita koskevia tietoja. Koska toimittajan osoite on toimittajaan liittyvä tieto eikä se koske tuotetta, osoite kuuluu toimittajataulukkoon.

Sivun alkuun

Tietokohteiden muuttaminen sarakkeiksi

Määritä taulukon sarakkeet päättämällä, mitä tietoja taulukkoon tallennetusta aiheesta on seurattava. Esimerkiksi Asiakkaat-taulukossa sarakeluettelon lähtökohta voisi olla Nimi, Osoite, Kaupunki-osavaltio-postinumero, Tervehdys ja Sähköpostiosoite. Taulukon kukin tietue sisältää samat sarakkeet, joten voit tallentaa nimen, osoitteen, kaupungin, osavaltion, postinumeron, tervehdyksen ja sähköpostiosoitteen kullekin tietueelle. Osoitesarake sisältää esimerkiksi asiakkaiden osoitteet. Kukin tietue sisältää yhden asiakkaan tiedot, ja osoitekenttä sisältää kyseisen asiakkaan osoitteen.

Kun olet määrittänyt ensimmäisen sarakejoukon kullekin taulukolle, voit tarkentaa sarakkeita. Esimerkiksi asiakkaan nimi kannattaa tallentaa kahteen erilliseen sarakkeeseen (etunimi ja sukunimi), jotta voit lajitella ja indeksoida vain tarvittavat sarakkeet sekä tehdä niistä hakuja. Vastaavasti osoite koostuu viidestä erillisestä osasta (osoite, kaupunki, osavaltio, postinumero ja maa/alue), joten nekin kannattaa tallentaa eri sarakkeisiin. Jos haluat suorittaa haun, suodattaa tai lajitella esimerkiksi osavaltion mukaan, osavaltiotiedot on tallennettava erilliseen sarakkeeseen.

Harkitse myös, onko tietokannassa vain kotimaisia tietoja vai tallennetaanko siihen myös kansainväliset tiedot. Jos esimerkiksi aiot tallentaa kansainväliset osoitteet, osavaltion sarakkeen tilalla kannattaa olla alueen sarake, koska siihen voidaan tallentaa sekä osavaltioita että muiden maiden alueita. Vastaavasti tämä kannattaa huomioida myös postinumerossa, jos aiot tallentaa kansainvälisiä osoitteita.

Seuraavassa on lueteltu muutamia vinkkejä sarakkeiden määrittämiseen.

  • Älä sisällytä laskettuja tietoja    

    Useimmissa tapauksissa taulukoihin ei kannata tallentaa laskutoimitusten tulosta. Sen sijaan Access kannattaa määrittää tekemään laskutoimitukset silloin, kun tulos halutaan nähdä. Oletetaan esimerkiksi, että Tuotteita tilauksessa -raportissa näkyy välisumma tilauksen kustakin tietokannan tuoteluokasta. Missään taulukossa ei kuitenkaan ole Yksiköitä tilauksessa -välisummasaraketta. Sen sijaan Tuotteet-taulukko sisältää Yksiköitä tilauksessa -sarakkeen, johon on tallennettu kunkin tuotteen tilauksessa olevat yksiköt. Access laskee tietojen avulla välisumman aina, kun tulostat raportin. Itse välisummaa ei pidä tallentaa taulukkoon.

  • Tallenna tiedot pienimmissä loogisissa osissa    

    Yhden kentän käyttäminen koko nimelle tai tuotenimien käyttäminen tuotekuvauksissa saattaa houkuttaa. Jos yhdistät kenttään useita tietoja, yksittäisten tietojen noutaminen myöhemmin on vaikeaa. Yritä jakaa tiedot loogisiin osiin. Luo esimerkiksi erilliset kentät etu- ja sukunimelle tai tuotenimelle, -luokalle ja -kuvaukselle.

Kuva tieto-osista suunnitteluprosessin aikana

Kun olet määrittänyt kunkin taulukon tietosarakkeet, voit valita jokaisen taulukon perusavaimen.

Sivun alkuun

Perusavainten määrittäminen

Jokaisessa taulukossa tulisi olla sarake (tai sarakeryhmä), joka yksilöi jokaisen taulukkoon tallennetun rivin. Se on usein yksilöllinen tunnistenumero, esimerkiksi työntekijän tunnusnumero tai sarjanumero. Tietokantaterminologiassa tällaista tietoa kutsutaan taulukon perusavaimeksi. Access yhdistää usean taulukon tiedot ja tuo yhdistetyt tiedot nopeasti saatavillesi perusavainkenttien avulla.

Jos taulukolle on jo yksilöllinen tunniste, kuten tuotenumero, joka yksilöi jokaisen tuoteluettelossa olevan tuotteen, voit käyttää sitä taulukon perusavaimena. Se onnistuu kuitenkin vain siinä tapauksessa, että sarakkeessa olevat arvot ovat aina erilaiset kutakin tietuetta varten. Perusavaimessa ei saa olla kaksoisarvoja. Älä esimerkki käytä henkilöiden nimiä perusavaimena, koska nimet eivät ole yksilöllisiä. Samassa taulukossa voi hyvinkin olla kaksi henkilöä, joilla on sama nimi.

Perusavaimella on aina oltava arvo. Jos sarakkeen arvo voi muuttua määrittämättömäksi tai tuntemattomaksi (puuttuva arvo) jossain vaiheessa, sitä ei voi käyttää perusavaimen osana.

Valitse aina perusavain, jonka arvo ei muutu. Useita taulukoita käyttävässä tietokannassa taulukon perusavainta voidaan käyttää viittauksena muissa taulukoissa. Jos perusavain muuttuu, muutos on otettava käyttöön avaimen kaikissa viittauspaikoissa. Muuttumattoman perusavaimen käyttäminen pienentää sen mahdollisuutta, että perusavain poikkeaisi muista taulukoista, joissa siihen viitataan.

Usein perusavaimena käytetään satunnaista yksilöllistä numeroa. Jokaiselle tilaukselle voidaan esimerkiksi määrittää yksilöllinen tilausnumero. Tilausnumeron tarkoituksena on vain tilauksen yksilöiminen. Kun se on määritetty, se ei muutu.

Jos mielessäsi ei ole saraketta tai sarakejoukkoa, joka sopisi hyvin perusavaimeksi, voit käyttää saraketta, jonka tietotyyppinä on Laskuri. Kun käytät Laskuri-tietotyyppiä, Access määrittää arvon automaattisesti. Tällainen tunniste on sisällötön. Se ei sisällä mitään sen edustamaa riviä kuvaavaa tietoa. Sisällöttömät tunnisteet sopivat erinomaisesti perusavaimiksi, koska ne eivät muutu. Perusavain, joka sisältää tietoja rivistä (esimerkiksi puhelinnumeron tai asiakkaan nimen), voi todennäköisemmin muuttua, koska faktat itsessään saattavat muuttua.

Kuva, jossa on Tuotteet-taulukko ja perusavainkenttä.

1. Laskuri-tietotyypiksi määritetty sarake on usein hyvä perusavain. Tuotetunnus on aina yksilöllinen.

Joissakin tapauksissa voidaan käyttää vähintään kahta kenttää, jotka yhdessä muodostavat perusavaimen. Esimerkiksi tilaustietotaulukossa, johon tallennetaan tilausten rivinimikkeet, perusavain voi käyttää kahta saraketta: Tilaustunnus ja Tuotetunnus. Kun perusavain käyttää vähintään kahta saraketta, sitä kutsutaan myös yhdistelmäavaimeksi.

Tuotemyynnin tietokannalle voit luoda kullekin taulukolle Laskuri-sarakkeen, joka toimii perusavaimena: Tuotetunnus Tuotteet-taulukossa, Tilaustunnus Tilaukset-taulukossa, Asiakastunnus Asiakkaat-taulukossa ja Toimittajatunnus Toimittajat-taulukossa.

Kuva tieto-osista suunnitteluprosessin aikana


Sivun alkuun

Taulukoiden yhteyksien luominen

Nyt kun tiedot on jaettu taulukoihin, tiedot on yhdistettävä uudelleen merkityksellisillä tavoilla. Esimerkiksi seuraava lomake sisältää tietoja useista taulukoista.

Tilaukset-lomake

1. Tämän lomakkeen tiedot ovat Asiakkaat-taulukosta...

2. ...Työntekijät-taulukosta...

3. ...Tilaukset-taulukosta...

4. ...Tuotteet-taulukosta...

5. ...ja Tilaustiedot-taulukosta.

Access on relaatiotietokannan hallintajärjestelmä. Relaatiotietokannassa tiedot voidaan jakaa erillisiksi taulukoiksi aiheen mukaan. Sen jälkeen tiedot kerätään yhteen tarpeen mukaan taulukoiden välisten yhteyksien avulla.

Sivun alkuun

Yksi-moneen-yhteyden luominen

Pohdi tätä esimerkkiä: Toimittajat- ja Tuotteet-taulukot tuotetilausten tietokannassa. Toimittaja voi toimittaa minkä tahansa määrän tuotteita. Tästä seuraa se, että Toimittajat-taulukossa olevalla toimittajalla voi olla useita tuotteita Tuotteet-taulukossa. Toimittajat-taulukon ja Tuotteet-taulukon välinen yhteys on siis yksi-moneen-yhteys.

Yksi-moneen-käsite

Voit esittää yksi-moneen-yhteyden tietokannan rakenteessa ottamalla perusavaimen yhteyden yksi-puolelta ja lisäämällä sen lisäsarakkeena tai -sarakkeina taulukkoon yhteyden monta-puolelle. Tässä tapauksessa esimerkiksi lisäät Toimittajatunnus-sarakkeen Toimittajat-taulukosta Tuotteet-taulukkoon. Access voi tämän jälkeen etsiä kullekin tuotteelle oikean toimittajan Tuotteet-taulukossa olevalla toimittajan tunnusnumerolla.

Tuotteet-taulukon Toimittajatunnus-saraketta kutsutaan viiteavaimeksi. Viiteavain on toisen taulukon perusavain. Toimittajatunnus-sarake Tuotteet-taulukossa on viiteavain, koska se on myös Toimittajat-taulukon perusavain.

Kuva tieto-osista suunnitteluprosessin aikana

Luot perustan taulukoiden välisille yhteyksille muodostamalla perusavaimista ja viiteavaimista pareja. Jos et ole varma, millä taulukoilla kannattaa olla yhteinen sarake, yksi-moneen-yhteyden tunnistaminen varmistaa, että kahdessa toisiinsa liittyvässä taulukossa on oltava jaettu sarake.

Sivun alkuun

Monta-moneen-yhteyden luominen

Otetaan esimerkiksi Tuotteet-taulukon ja Tilaukset-taulukon välinen yhteys.

Yksi tilaus saattaa sisältää useita tuotteita. Toisaalta taas yksi tuote voi esiintyä monessa tilauksessa. Siten Tilaukset-taulukon jokaista tietuetta kohti voi olla useita tietueita Tuotteet-taulukossa. Lisäksi Tuotteet-taulukon jokaista tietuetta kohti voi olla useita tietueita Tilaukset-taulukossa. Tällaista yhteyttä kutsutaan monta-moneen-yhteydeksi, koska millä tahansa tuotteella voi olla monta tilausta ja missä tahansa tilauksessa voi olla monia tuotteita. Huomaa, että taulukoiden välisen monta-moneen-yhteyden havaitseminen edellyttää yhteyden molempien puolien huomioon ottamista.

Näiden kahden taulukon aiheilla eli tilauksilla ja tuotteilla on monta-moneen-yhteys. Se aiheuttaa ongelman. Kuvittele ongelman ymmärtämiseksi, mitä tapahtuisi, jos yrittäisit luoda yhteyden kahden taulukon välille lisäämällä Tuotetunnus-kentän Tilaukset-taulukkoon. Jotta tilauksessa voisi olla useita tuotteita, Tilaukset-taulukossa on oltava useita tietueita tilausta kohti. Toistaisit yhtä tilausta koskevat tilaustiedot kullakin rivillä, joten tuloksena olisi tehoton rakenne, joka saattaa aiheuttaa virheellisiä tietoja. Sama ongelma tulee eteen, jos lisäät Tilaustunnus-kentän Tuotteet-taulukkoon: Tuotteet-taulukossa olisi useita tietueita kullekin tuotteelle. Miten ongelma ratkaistaan?

Vastaus on kolmannen taulukon luominen. Sitä kutsutaan usein liitostaulukoksi ja se purkaa monta-moneen-yhteydet kahdeksi yksi-moneen-yhteydeksi. Perusavain lisätään kummastakin taulukosta kolmanteen taulukkoon. Tällöin kolmas taulukko tallentaa yhteyden jokaisen esiintymän.

Monta-moneen-yhteys

Jokainen Tilaustiedot-taulukon tietue edustaa yhtä tilauksen rivinimikettä. Tilaustiedot-taulukon perusavain koostuu kahdesta kentästä: Tilaukset- ja Tuotteet-taulukoiden viiteavaimista. Yksistään Tilaustunnus-kentän käyttäminen perusavaimena ei toimi tässä taulukossa, koska yhdessä tilauksessa voi olla useita rivinimikkeitä. Tilaustunnus toistetaan tilauksen jokaiselle rivinimikkeelle, joten kenttä ei sisällä yksilöllisiä arvoja. Yksistään Tuotetunnus-kentän käyttäminenkään ei toimi, koska yksi tuote voi esiintyä monessa eri tilauksessa. Yhdessä nämä kaksi kenttää tuottavat yksilöllisen arvon kullekin tietueelle.

Tuotteiden myynnin tietokannassa Tilaukset-taulukko ja Tuotteet-taulukko eivät liity toisiinsa suoraan. Sen sijaan ne liittyvät toisiinsa epäsuorasti Tilaustiedot-taulukon kautta. Tilausten ja tuotteiden välinen monta-moneen-yhteys esitetään tietokannassa käyttämällä kahta yksi-moneen-yhteyttä:

  • Tilaukset-taulukolla ja Tilaustiedot-taulukolla on yksi-moneen-yhteys. Kussakin tilauksessa voi olla useita rivinimikkeitä, mutta kukin rivinimike on yhdistetty vain yhteen tilaukseen.

  • Tuotteet-taulukolla ja Tilaustiedot-taulukolla on yksi-moneen-yhteys. Kuhunkin tuotteeseen voi liittyä useita rivinimikkeitä, mutta kukin rivinimike viittaa vain yhteen tuotteeseen.

Voit määrittää Tilaustiedot-taulukossa kaikki tiettyyn tilaukseen liittyvät tuotteet. Voit myös määrittää kaikki tietyn tuotteen tilaukset.

Tilaustiedot-taulukon lisäämisen jälkeen taulukoiden ja kenttien luettelo voi näyttää esimerkiksi tällaiselta:

Kuva tieto-osista suunnitteluprosessin aikana


Sivun alkuun

Yksi-yhteen-yhteyden luominen

Toinen yhteystyyppi yksi-yhteen-yhteys. Oletetaan esimerkiksi, että haluat tallentaa tuotteelle erityisiä lisätietoja, joita tarvitset vain harvoin tai jotka koskevat vain harvoja tuotteita. Koska tietoja ei tarvita usein ja koska tietojen tallentaminen Tuotteet-taulukkoon aiheuttaisi tyhjää tilaa jokaisessa tuotteessa, jota tiedot eivät koske, lisätiedot voi sijoittaa erilliseen taulukkoon. Tuotteet-taulukon tavoin Tuotetunnus toimii perusavaimena. Tämän lisätietotaulukon ja Tuotteet-taulukon välinen yhteys on yksi-yhteen-yhteys. Jokaiselle Tuotteet-taulukossa olevalle tietueelle on yksi vastaava tietue lisätietotaulukossa. Kun löydät tällaisen yhteyden, kummassakin taulukossa on oltava yhteinen kenttä.

Kun tunnistat tietokannassa tarpeen yksi-yhteen-yhteydelle, mieti, voisiko kahden taulukon tiedot yhdistää yhteen taulukkoon. Jos et halua tehdä sitä jostain syystä, koska se esimerkiksi aiheuttaa paljon tyhjää tilaa, seuraavassa on lueteltu tapoja esittää yhteys suunnittelussa:

  • Jos kummallakin taulukolla on sama aihe, voit ehkä määrittää yhteyden käyttämällä taulukoissa samaa perusavainta.

  • Jos kahdella taulukolla on eri aiheet ja erilaiset perusavaimet, valitse toinen taulukko (kumpi tahansa) ja lisää sen perusavain toiseen taulukkoon viiteavaimena.

Taulukoiden välisten yhteyksien määrittämisellä voit varmistaa, että oikeat taulukot ja sarakkeet ovat käytössä. Kun yksi-yhteen- tai yksi-moneen-yhteys on olemassa, yhteyteen liittyvissä taulukoissa on oltava yhteinen sarake tai useita yhteisiä sarakkeita. Kun monta-moneen-yhteys on olemassa, yhteyden esittämiseen tarvitaan kolmas taulukko.

Sivun alkuun

Rakenteen hienosäätäminen

Kun tarvittavat taulukot, kentät ja yhteydet ovat valmiina, lisää taulukoihin esimerkkitietoja ja kokeile tietojen käyttämistä: luo kyselyjä, lisää uusia tietueita ja niin edelleen. Testaamisen avulla voit löytää mahdolliset ongelmakohdat. Saatat esimerkiksi huomata, että joudut lisäämään suunnitteluvaiheessa unohtuneen sarakkeen tai että taulukko on jaettava kahdeksi taulukoksi kaksoisarvojen poistamista varten.

Katso, saatko tarvittavat vastaukset tietokantaa käyttämällä. Laadi lomakkeista ja raporteista luonnoksia ja katso, näkyvätkö odottamasi tiedot niissä. Etsi tietoja tarpeettomasta päällekkäisyydestä. Kun löydät päällekkäisyyttä, poista se muuttamalla rakennetta.

Alkuperäistä tietokantaa testatessasi huomaat todennäköisesti kehityskohtia. Esimerkiksi seuraavat asiat kannattaa tarkistaa:

  • Onko sarakkeita unohtunut? Jos on, kuuluvatko tiedot olemassa oleviin taulukoihin? Jos tiedot liittyvät johonkin muuhun, voit joutua luomaan uuden taulukon. Luo sarake jokaiselle seurattavalle tietokohteelle. Jos tietoja ei voi laskea muista sarakkeista, tarvitset todennäköisesti niille uuden sarakkeen.

  • Onko tietokannassa turhia sarakkeita, koska niiden tiedot voidaan laskea olemassa olevista kentistä? Jos tietokohde voidaan laskea olemassa olevista sarakkeista (alennettu hinta lasketaan esimerkiksi jälleenmyyntihinnasta), niin kannattaa yleensä toimia, jotta uuden sarakkeen luominen voidaan välttää.

  • Syötätkö toistuvasti samoja tietoja yhteen taulukoista? Jos näin on, taulukko on todennäköisesti jaettava kahdeksi taulukoksi, joilla on yksi-moneen-yhteys.

  • Onko taulukoissa useita kenttiä, rajallinen määrä tietueita ja useita tyhjiä kenttiä yksittäisissä tietueissa? Jos on, mieti taulukon suunnittelemista uudelleen, jotta kenttiä on vähemmän ja tietueita enemmän.

  • Onko jokainen tieto purettu pienimpiin käyttökelpoisiin osiin? Jos tietokohdetta tarvitaan raportoinnissa, lajittelussa, haussa tai laskemisessa, kyseinen tieto kannattaa lisätä omaan sarakkeeseensa.

  • Sisältääkö kukin sarake yhden tiedon taulukon aiheesta? Jos sarake ei sisällä tietoja taulukon aiheesta, se kuuluu toiseen taulukkoon.

  • Ovatko kaikki taulukoiden väliset yhteydet esitettyinä joko yhteisten kenttien tai kolmannen taulukon kautta? Yksi-yhteen- ja yksi-moneen-yhteydet edellyttävät yhteisiä sarakkeita. Monta-moneen-yhteyksissä on käytettävä kolmatta taulukkoa.

Tuotteet-taulukon hienosäätäminen

Oletetaan, että jokainen tuotemyynnin tietokannassa oleva tuote kuuluu yleisluokkaan, esimerkiksi juomiin, mausteisiin tai kalaruokiin. Tuotteet-taulukko sisältää kentän, jossa näytetään kunkin tuotteen luokka.

Oletetaan, että tietokannan rakenteen tarkastelun ja hienosäätämisen jälkeen päätät tallentaa luokan kuvauksen sen nimen kanssa. Jos lisäät Luokan kuvaus -kentän Tuotteet-taulukkoon, joudut toistamaan luokan kuvauksen jokaisessa kyseiseen luokkaan kuuluvassa tuotteessa, joten tämä ei ole hyvä ratkaisu.

Parempi ratkaisu on määrittää Luokat tietokannassa seurattavaksi uudeksi aiheeksi ja lisätä sille oma taulukko ja oma perusavain. Sen jälkeen voit lisätä Luokat-taulukon perusavaimen Tuotteet-taulukkoon viiteavaimena.

Luokat- ja Tuotteet-taulukoilla on yksi-moneen-yhteys: luokka voi sisältää useita tuotteita, mutta tuote voi kuulua vain yhteen luokkaan.

Kun tarkastelet taulukon rakennetta, etsi toistuvia ryhmiä. Kuvitellaan esimerkiksi, että taulukko sisältää seuraavat sarakkeet:

  • Tuotetunnus

  • Nimi

  • Tuotetunnus1

  • Nimi1

  • Tuotetunnus2

  • Nimi2

  • Tuotetunnus3

  • Nimi3

Tässä jokainen tuote on toistuva ryhmä sarakkeita, jotka eroavat muista vain siten, että sarakkeen nimen loppuun on lisätty numero. Kun näet tällä tavalla numeroituja sarakkeita, rakennetta kannattaa tarkastella uudelleen.

Tällaisessa rakenteessa on useita vikoja. Ensinnäkin se pakottaa määrittämään ylärajan tuotteiden määrälle. Kun raja ylittyy, joudut lisäämään uuden sarakeryhmän taulukkorakenteeseen. Se on iso järjestelmänhallinnallinen toimenpide.

Toinen ongelma on siinä, että tilaa hukkaantuu toimittajiin, joilla on tuotteita enimmäismäärää vähemmän, koska ylimääräiset sarakkeet on tyhjiä. Vakavin rakenteellinen vika on siinä, että rakenne vaikeuttaa useiden tehtävien suorittamista (esimerkiksi taulukon lajittelua tai indeksointia tuotetunnuksen tai nimen mukaan).

Aina kun näet toistuva ryhmiä, tarkastele rakennetta tiiviisti ja mieti taulukon jakamista kahtia. Yllä olevassa esimerkissä kannattaa käyttää kahta taulukkoa: toista toimittajille ja toista tuotteille. Taulukot on yhdistetty toimittajatunnuksella.

Sivun alkuun

Normalisointisääntöjen käyttäminen

Voit käyttää tietojen normalisointisääntöjä rakenteen seuraavassa vaiheessa. Käytä sääntöjä, jotta näet, onko taulukoiden rakenne oikea. Sääntöjen käyttämistä tietokannan rakenteeseen kutsutaan tietokannan normalisoinniksi tai vain normalisoinniksi.

Normalisoinnista on eniten hyötyä sen jälkeen, kun kaikki tietokohteet on esitetty ja alustava rakenne on valmis. Tavoitteena on varmistaa, että tietokohteet on jaettu sopiviin taulukoihin. Normalisointi ei kuitenkaan voi varmistaa, että kaikki oikeat tietokohteet ovat lähtökohtaisesti käytössä.

Sääntöjä käytetään peräkkäin. Näin varmistetaan jokaisessa vaiheessa, että rakenne vastaa yhtä niin kutsuttua normaalimuotoa. Yleisesti hyväksyttyjä normaalimuotoja on viisi: ensimmäisestä normaalimuodosta viidenteen. Tässä artikkelissa käsitellään tarkemmin kolme ensimmäistä, koska niitä tarvitaan suurimmassa osassa tietokantarakenteita.

Ensimmäinen normaalimuoto

Ensimmäinen normaalimuoto määrittää, että jokaisessa taulukon rivin ja sarakkeen leikkauskohdassa on yksittäinen arvo. Siinä ei ole koskaan arvojen luetteloa. Käytössä ei esimerkiksi voi olla Hinta-kenttää, johon lisätään useita Hinta-arvoja. Jos jokaista rivien ja sarakkeiden leikkauskohtaa ajatellaan soluna, kussakin solussa voi olla vain yksi arvo.

Toinen normaalimuoto

Toisessa normaalimuodossa edellytetään, että kukin ei-avainsarake on täysin riippuvainen koko perusavaimesta, eikä vain avaimen osasta. Tätä sääntöä käytetään, kun käytössä on perusavain, joka koostuu useammasta kuin yhdestä sarakkeesta. Oletetaan, että taulukossasi on seuraavat sarakkeet, joissa Tilaustunnus ja Tuotetunnus muodostavat perusavaimen:

  • Tilaustunnus (perusavain)

  • Tuotetunnus (perusavain)

  • Tuotteen nimi

Tämä rakenne ei ole toisen normaalimuodon mukainen, koska Tuotteen nimi on riippuvainen tuotetunnuksesta, mutta ei tilaustunnuksesta, joten se ei ole riippuvainen koko perusavaimesta. Tuotteen nimi on poistettava taulukosta. Se kuuluu toiseen taulukkoon (Tuotteet).

Kolmas normaalimuoto

Kolmas normaalimuoto edellyttää, että sen lisäksi, että jokainen ei-avainsarake on riippuvainen koko perusavaimesta, kyseiset ei-avainsarakkeet ovat itsenäisiä toisiinsa nähden.

Toisin sanoen jokaisen ei-avainsarakkeen on oltava riippuvainen pääavaimesta ja vain pääavaimesta. Oletetaan esimerkiksi, että taulukko sisältää seuraavat sarakkeet:

  • Tuotetunnus (perusavain)

  • Nimi

  • OVH

  • Alennus

Oletetaan, että Alennus riippuu ohjevähittäishinnasta (OVH). Tämä taulukko ei ole kolmannen normaalimuodon mukainen, koska ei-avainsarake Alennus on riippuvainen toisesta ei-avainsarakkeesta (OVH). Sarakkeen riippumattomuus tarkoittaa sitä, että mitä tahansa ei-avainsaraketta pitäisi voida muuttaa ilman että se vaikuttaa toiseen sarakkeeseen. Jos muutat OVH-kentän arvoa, Alennus-kentän arvo muuttuu vastaavasti eli sääntöä rikotaan. Tässä tapauksessa Alennus pitää siirtää toiseen taulukkoon, jonka avaimena on OVH.

Sivun alkuun

Kehitä taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×