Tietokannan suunnittelun perusteet

Oikein suunniteltu tietokanta mahdollistaa sen, että saat käyttöösi päivitettyjä ja tarkkoja tietoja. Koska oikea suunnittelu on oleellista tavoitteidesi saavuttamisessa tietokantaa käytettäessä, hyvän suunnittelun periaatteiden opettelemiseen kannattaa panostaa aikaa. Lopputuloksena on mitä todennäköisesti sellainen tietokanta, joka vastaa tarpeitasi ja jota voit mukauttaa myöhemmin.

Tässä artikkelissa on ohjeita sellaisen tietokannan suunnitteluun, jota ei käytetä WWW-ympäristössä. Opit päättelemään, mitä tietoja tarvitset, kuinka jakaa tietoja sopiviin taulukoihin ja sarakkeisiin sekä sen, millainen kulloisenkin taulukon suhde on toiseen taulukkoon. Sinun kannattaa lukea tämä artikkeli, ennen kuin luot ensimmäisen tietokantasi.

Tärkeää: Microsoft Access 2010 -ohjelmalla voi nyt suunnitella tietokantasovelluksia myös WWW-ympäristöön, mikä tuo mukanaan monia suunnittelussa huomioitavia erikoispiirteitä. Tässä artikkelissa ei käsitellä WWW-tietokantasovellusten suunnittelua. Lisätietoja on artikkelissa Internetin kautta jaettavan tietokannan luominen.

Artikkelin sisältö

Tietokantaan liittyviä termejä

Hyvä tietokannan rakenne

Suunnitteluprosessi

Tietokannan tehtävän määrittäminen

Vaadittavien tietojen etsiminen ja järjestäminen

Tietojen jakaminen taulukoihin

Tieto-osien muuntaminen sarakkeiksi

Perusavainten määrittäminen

Taulukoiden välisten yhteyksien luominen

Rakenteen hienosäätäminen

Normalisointisääntöjen käyttöönotto


Tietokantaan liittyviä termejä

Access 2010 järjestää tiedot taulukoihin: tilikirjaa tai laskentataulukkoa muistuttaviin rivien ja sarakkeiden luetteloihin. Yksinkertainen tietokanta saattaa sisältää vain yhden taulukon. Useimpiin tietokantoihin tarvitaan kuitenkin useita taulukoita. Sinulla voi esimerkiksi olla yksi taulukko, johon on tallennettu tietoja tuotteista, ja toinen taulukko, johon on tallennettu tietoja tilauksista, ja vielä kolmas taulukko, jossa on tietoja asiakkaista.

Kuva, jossa on kolme taulukkoa taulukkonäkymissä

Jokaista riviä kutsutaan tietueeksi ja jokaista saraketta kutsutaan kentäksi. Tietue on merkityksellinen ja johdonmukainen tapa yhdistää tietoja jostakin. Kenttä on tiedon yksittäinen osa – osatyyppi, joka esiintyy jokaisessa tietueessa. Tuotteet-taulukossa jokainen rivi tai tietue sisältää esimerkiksi tietoja yhdestä tuotteesta. Jokainen sarake tai kenttä sisältää jonkinlaisia tietoja kyseisestä tuotteesta, kuten sen nimen tai hinnan.

Sivun alkuun

Hyvä tietokannan rakenne

Tietyt periaatteet ohjaavat tietokannan suunnitteluprosessia. Ensimmäinen periaate on se, että kaksoistiedot (kutsutaan myös toistuviksi tiedoiksi) ovat huonoja, koska ne vievät turhaa tilaa ja lisäävät virheiden ja epäjohdonmukaisuuksien todennäköisyyttä. Toisen periaatteen mukaan tietojen oikeellisuus ja eheys ovat tärkeitä. Jos tietokanta sisältää virheellisiä tietoja, raportit, jotka hakevat tietoja tietokannasta, sisältävät silloin myös virheellisiä tietoja. Tämän tuloksena kyseisiin raportteihin perustuvat päätökset ovat vääriä.

Siksi hyvä tietokannan rakenne onkin sellainen, joka

  • jakaa tiedot aihekohtaisiin taulukoihin toistuvien tietojen vähentämiseksi

  • antaa Accessille tiedot, joita se tarvitsee taulukoiden liittämiseen yhteen tarpeen mukaan

  • tukee tietojen tarkkuutta ja yhdenmukaisuutta ja varmistaa ne

  • mukauttaa tiedot käsittely- ja raportointitarpeisiisi sopiviksi.

Sivun alkuun

Suunnitteluprosessi

Suunnitteluprosessi koostuu seuraavista vaiheista:

  • Tietokannan tehtävän määrittäminen    

    Tämä auttaa sinua valmistautumaan jäljellä oleviin vaiheisiin.

  • Vaadittavien tietojen etsiminen ja järjestäminen     

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

  • Tietojen jakaminen taulukoihin    

    Jaa tieto-osat pääkokonaisuuksiksi tai -aiheiksi, kuten Tuotteet tai Tilaukset. Jokaisesta aiheesta tulee tällöin taulukko.

  • Tieto-osien muuntaminen sarakkeiksi.    

    Päätä, mitkä tiedot haluat tallentaa kuhunkin taulukkoon. Jokaisesta osasta tulee kenttä, ja se näytetään sarakkeena taulukossa. Työntekijät- taulukko saattaa esimerkiksi sisältää kentät Sukunimi ja Aloittanut.

  • Perusavainten määrittäminen    

    Valitse jokaisen taulukon perusavain. Perusavain on sarake, jota käytetään tunnistamaan jokainen rivi yksilöllisesti. Esimerkkinä voidaan mainita Tuotetunnus tai Tilaustunnus.

  • Taulukoiden välisten yhteyksien määrittäminen    

    Tarkastele jokaista taulukkoa ja päätä, miten yhden taulukon tiedot liittyvät toisten taulukoiden tietoihin. Selvennä yhteyksiä tarpeen mukaan lisäämällä kenttiä taulukoihin tai luomalla uusia taulukoita.

  • Rakenteen hienosäätäminen    

    Tutki, onko rakenteessa virheitä. Luo taulukoita ja lisää niihin joitakin uusia mallitietotietueita. Katso, saatko taulukoista haluamiasi tuloksia. Säädä rakennetta tarpeen mukaan.

  • Normalisointisääntöjen käyttöönotto    

    Tarkasta, onko taulukot muodostettu oikein, ottamalla käyttöön normalisointisäännöt. Säädä taulukoita tarpeen mukaan.

Sivun alkuun

Tietokannan tehtävän määrittäminen

On hyvä idea kirjoittaa paperille ylös tietokannan tehtävä — sen tehtävä, kuinka sitä aiotaan käyttää ja kuka sitä käyttää. Jos kyseessä on pieni tietokanta, esimerkiksi kotoa tehtävää liiketoimintaa varten, saatat kirjoittaa jotakin yksinkertaista, kuten "Asiakastietokanta pitää yllä luetteloa asiakastiedoista, ja sen tehtävä on tuottaa postituksia ja raportteja." Jos tietokanta on monimutkaisempi tai sitä käyttää useampi henkilö, kuten yleensä on tapana yritysympäristössä, tehtävän kuvaus voi helposti olla vähintään kappaleen pituinen, ja se voi sisältää tietoja siitä, milloin ja kuinka kukin henkilö käyttää tietokantaa. Ideana on hyvin suunniteltu tehtävälausunto, jonka puoleen voidaan kääntyä suunnitteluprosessin aikana. Tämäntyyppinen lausunto auttaa keskittymään tavoitteisiin, kun teet päätöksiä.

Sivun alkuun

Vaadittavien tietojen etsiminen ja järjestäminen

Jotta voit etsiä ja järjestää vaadittavia tietoja, aloita vanhoista tiedoista. Saatat esimerkiksi kirjata ostotilauksia tilikirjaan tai säilyttää asiakastietoja paperilomakkeissa jossakin arkistokaapissa. Kerää kyseiset asiakirjat ja tee luettelo esitettyjen tietojen jokaisesta tyypistä (esimerkiksi jokainen lomakkeessa täytetty ruutu). Jos sinulla ei ole vanhoja lomakkeita, kuvittele sen sijaan, että sinun on suunniteltava lomake, johon merkitset asiakastietoja. Mitä tietoja kirjoittaisit lomakkeeseen? Mitä täytettäviä ruutuja loisit? Määritä ja tee luettelo näistä kohdista. Oletetaan esimerkiksi, että pidät asiakasluetteloa luettelokorteissa. Näiden korttien tarkasteleminen saattaa osoittaa, että jokaisessa kortissa on asiakkaan nimi, osoite, kaupunki, maa, postinumero ja puhelinnumero. Jokainen näistä kohdista edustaa mahdollista taulukon saraketta.

Kun valmistelet tätä luetteloa, älä ajattele, että luettelon on oltava heti täydellinen. Luetteloi sen sijaan kohdat, jotka tulevat mieleesi. Jos joku muu tulee käyttämään tietokantaa, kysy myös hänen mielipiteitään. Voit hienosäätää luetteloa myöhemmin.

Mieti seuraavaksi raporttien tai postituksien, jotka haluat tuottaa tietokannasta, tyyppejä. Voit esimerkiksi haluta myyntitietojen raportin, jossa näkyy myynnit alueen mukaan, tai inventaarion yhteenvetoraportin, jossa näkyy tuotteen inventaariotasot. Haluat ehkä myös luoda asiakaskirjeitä, joissa ilmoitat alennusmyynnistä tai tarjoat bonuksia. Suunnittele raportti mielessäsi ja kuvittele, miltä se näyttäisi. Mitä tietoja laittaisit raporttiin? Luetteloi niistä jokainen. Tee sama kirjeiden tai muiden raporttien kohdalla, joita aiot luoda.

Henkilö kuvittelemassa tuoteinventaarioraporttia

Raporttien ja postituksien, joita aiot luoda, miettiminen auttaa sinua tunnistamaan tietokannassa tarvitsemasi kohdat. Oletetaan esimerkiksi, että annat asiakkaalle mahdollisuuden valita (tai jättää valitsematta), että heille lähetetään ajoittaisia sähköpostipäivityksiä, ja haluat tulostaa luettelon päivitykset valinneista henkilöistä. Voit merkitä kyseiset tiedot lisäämällä "Lähetä sähköposti" -sarakkeen asiakastaulukkoon. Jokaisen asiakkaan kohdalla voit määrittää kentän arvoon Kyllä tai Ei.

Tarve lähettää sähköpostiviestejä asiakkaille edellyttää toista tietuetta. Kun tiedät, että asiakas haluaa vastaanottaa sähköpostiviestejä, sinun on myös tiedettävä sähköpostiosoite, johon lähetät ne. Siksi sinun on merkittävä sähköpostiosoite jokaista asiakasta varten.

On järkevää luoda prototyyppi jokaisesta raportista tai tulosluettelosta ja miettiä, mitä kohtia tarvitset raportin tuottamiseen. Kun esimerkiksi tarkastelet kirjettä, mieleesi saattaa tulla muutama asia. Jos haluat sisällyttää kirjeeseen oikean alkutervehdyksen — esimerkiksi tervehdyksen aloittavan "Herra"-, "Rouva"- tai "Neiti"-merkkijonon, sinun on luotava alkutervehdysosa. Saatat aloittaa kirjeen tavallisesti myös kohteliaisuudella “Hyvä herra Virtanen" “Hyvä Matti Virtanen” asemesta. Tämä viittaa siihen, että haluat yleensä tallentaa sukunimen erilleen etunimestä.

Avainasia, joka tulee muistaa, on, että sinun tulee katkaista jokainen tiedonjyvä sen pienimpään hyödylliseen osaan. Nimen ollessa kyseessä sinun tulee katkaista nimi kahteen osaan, jotta sukunimi on helposti saatavana — Etunimi ja Sukunimi. Jotta voit lajitella raportin esimerkiksi sukunimen mukaan, on helpompaa, jos asiakkaan sukunimi tallennetaan erikseen. Jos yleisesti ottaen haluat lajitella, etsiä, laskea tai raportoida tieto-osan perusteella, sinun tulee laittaa osa omaan kenttään.

Mieti kysymyksiä, joihin haluat tietokannan vastaavan. Esimerkiksi: Kuinka monta tuotetta myit viime kuussa? Missä parhaimmat asiakkaasi asuvat? Kuka on myydyimmän tuotteesi toimittaja? Tällaisten kysymysten avulla voit keksiä lisää merkittäviä osia.

Näiden tietojen keräämisen jälkeen, olet valmis seuraavaan vaiheeseen.

Sivun alkuun

Tietojen jakaminen taulukoihin

Voit jakaa tietoja taulukoihin valitsemalla pääkokonaisuuksia tai -aiheita. Kun olet esimerkiksi löytänyt ja järjestänyt tietoja myyntitiedot-tietokantaa varten, alustava luettelo voi näyttää tältä:

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

Tässä esitetyt pääkokonaisuudet ovat tuotteet, tavarantoimittajat, asiakkaat ja tilaukset. Siksi on järkevää aloittaa neljällä taulukolla: yksi taulukko tuotetietoja varten, yksi tavarantoimittajien tietoja varten, yksi asiakastietoja varten ja yksi tilaustietoja varten. Vaikka nämä eivät muodosta täydellistä luetteloa, niistä on hyvä aloittaa. Voit jatkaa tämän luettelon hienosäätämistä, kunnes sinulla on rakenne, joka toimii hyvin.

Kun tarkastelet alustavaa luetteloa osista, houkutus voi olla suuri sijoittaa osat yhteen ainoaan taulukkoon neljän asemesta. Kerromme sinulle nyt, miksi se on huono idea. Mieti hetki seuraavaa taulukkoa:

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

Tässä tapauksessa jokainen rivi sisältää tietoja sekä tuotteesta että sen toimittajasta. Koska sinulla voi olla monta tuotetta samalta toimittajalta, toimittajan nimi- ja osoitetiedot on toistettava monesti. Tämä vie ylimääräistä levytilaa. Toimittajan tietojen merkitseminen vain kerran erilliseen Toimittajat-taulukkoon ja linkittämällä sitten kyseinen taulukko Tuotteet-taulukkoon on paljon parempi ratkaisu.

Toinen rakenteellinen ongelma voi tulla esiin, kun sinun tarvitsee muuttaa toimittajan tietoja. Oletetaan esimerkiksi, että sinun on muutettava toimittajan osoitetta. Koska osoite on monessa kohdassa, saatat vaihtaa sen vain yhteen kohtaan ja vahingossa unohtaa sen vaihtamisen muissa kohdissa. Toimittajan osoitteen merkitseminen vain yhteen kohtaan ratkaisee ongelman.

Kun suunnittelet tietokantaa, yritä merkitä jokainen tieto vain kerran. Jos huomaat toistavasi samoja tietoja, kuten tietyn toimittajan osoitetta, useammassa kuin yhdessä kohdassa, aseta tiedot erilliseen taulukkoon.

Oletetaan lopuksi, että sinulla on vain yksi Coho Wineryn toimittama tuote ja haluat poistaa tämän tuotteen, mutta säilyttää toimittajan nimi- ja osoitetiedot. Kuinka poistat tuotetietueen hävittämättä samalla toimittajan tietoja? Et mitenkään. Koska jokainen tietue sisältää tietoja tuotteesta sekä toimittajasta, et voi poistaa toista poistamatta toista. Voit pitää nämä tiedot erillään jakamalla yhden taulukon kahdeksi: yksi taulukko tuotetietoja varten ja toinen toimittajan tietoja varten. Tuotetietueen poistaminen hävittäisi tällöin vain tuotteen tiedot, muttei toimittajan tietoja.

Kun olet valinnut taulukossa kuvatun aiheen, taulukon sarakkeiden tulee tallentaa vain tietoja aiheesta. Tuotteet-taulukon tulee tallentaa esimerkiksi vain tietoja tuotteesta. Koska toimittajan osoite on toimittajan eikä tuotteen tietoja, se kuuluu Toimittajat-taulukkoon.

Sivun alkuun

Tieto-osien muuntaminen sarakkeiksi

Jotta voit määrittää taulukon sarakkeet, päätä, mitä taulukkoon merkityn aiheen tietoja sinun tulee seurata. Hyviä esimerkkejä Asiakkaat-taulukon alustavista sarakkeista ovat Nimi, Osoite, Postinumero, Lähetä sähköposti, Alkutervehdys ja Sähköpostiosoite. Jokainen taulukon tietue sisältää saman sarakesarjan, joten voit tallentaa Nimi-, Osoite-, Postinumero-, Lähetä sähköposti-, Alkutervehdys- ja Sähköpostiosoite-tiedot jokaiseen kenttään. Osoitesarake sisältää esimerkiksi asiakkaiden osoitteet. Jokainen tietue sisältää tietoja yhdestä asiakkaasta, ja osoitekenttä sisältää kyseisen yhden asiakkaan osoitteen.

Kun olet määrittänyt alustavan sarakesarjan jokaiselle taulukolle, voit hienosäätää sarakkeita lisää. On esimerkiksi järkevää tallentaa asiakkaan nimi kahtena erillisenä sarakkeena: etunimi ja sukunimi. Tällöin voit lajitella, etsiä ja indeksoida vain kyseisissä sarakkeissa. Osoite koostuu samantapaisesti neljästä erillisestä osasta (osoite, kaupunki, alue, postinumero ja maa), ja ne on myös järkevä tallentaa eri sarakkeisiin. Jos haluat esimerkiksi suorittaa etsintä-, suodatus- tai lajittelutoiminnon, sinun on annettava erilliseen sarakkeeseen tallennettuja tietoja.

Sinun tulee myös miettiä, ovatko taulukkoon tallennettavat tiedot pelkästään kotimaisia vai myös kansainvälisiä. Jos esimerkiksi amerikkalainen tietokannan suunnittelija suunnittelee tallentavansa kansainvälisiä osoitteita, on parempi, että taulukossa on Alue-sarake Osavaltio-sarakkeen asemesta, koska kyseinen sarake huomioi sekä Yhdysvaltojen omat osavaltiot että muiden maiden ja alueiden alueet.

Seuraavassa luettelossa on joitakin vihjeitä sarakkeiden määrittämiseen.

  • Älä sisällytä sarakkeisiin laskettuja kenttiä    

    Sinun ei tule useimmissa tapauksissa tallentaa laskelmien tuloksia taulukkoon. Voit sen sijaan antaa Accessin suorittaa laskelmat, kun tarvitset tuloksia jostakin. Oletetaan esimerkiksi, että sinulla on Tilauksen tuotteet -raportti, jossa näkyy jokaisen tietokannan tuoteluokan tilausyksiköiden välisumma. Missään taulukossa ei ole kuitenkaan Tilausyksiköiden välisumma -saraketta. Tuotteet-taulukko sisältää sen sijaan Tilausyksiköt -sarakkeen, joka tallentaa jokaisen tuotteen tilausyksiköt. Kyseisiä tietoja käyttämällä Access laskee välisumman joka kerta, kun tulostat raportin. Itse välisummaa ei tule tallentaa taulukkoon.

  • Tallenna tietoja sen pienimmissä loogisissa osissa    

    Houkutus voi olla suuri asettaa yksittäinen kenttä täyteen henkilönimiä tai tuotenimiä tuotekuvausten kera. Jos yhdistät yhteen kenttään useantyyppisiä tietoja, yksittäisiä tietoja on vaikeampi hakea myöhemmin. Yritä katkaista tiedot loogisiin osiin. Luo esimerkiksi erilliset kentät etu- ja sukunimeä varten tai tuotenimeä, luokkaa ja kuvausta varten.

Kuva tieto-osista suunnitteluprosessin aikana

Kun olet hienosäätänyt jokaisen taulukon tietosarakkeet, olet valmis valitsemaan perusavaimen jokaiselle taulukolle.

Sivun alkuun

Perusavainten määrittäminen

Jokaisessa taulukossa on sarake tai sarakesarja, joka määrittää jokaista taulukkoon tallennettua riviä yksilöllisesti. Tämä on usein yksilöllinen tunnus, kuten työntekijän tunnusnumero tai sarjanumero. Tietokantaterminologiassa tätä tietoa kutsutaan taulukon perusavaimeksi. Access liittää tietoja nopeasti useista taulukoista ja yhdistää tietoja puolestasi käyttämällä perusavainkenttiä.

Jos sinulla on jo yksilöllinen tunnus taulukolle, kuten tuotenumero, joka määrittää jokaista tuoteluettelossa olevaa tuotetta yksilöllisesti, voit käyttää kyseistä tunnusta taulukon perusavaimena — mutta vain, jos kyseisen sarakkeen arvot ovat aina eri jokaisessa tietueessa. Perusavaimessa ei voi olla kaksoisarvoja. Älä esimerkiksi käytä ihmisten nimiä perusavaimena, koska nimet eivät ole yksilöllisiä. Yhdessä taulukossa voi hyvinkin olla kaksi samannimistä henkilöä.

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

Sinun tulee valita aina perusavain, jonka arvo ei muutu. Tietokannassa, jossa on useita taulukoita, taulukon perusavainta voidaan käyttää viittauksena toisissa taulukoissa. Jos perusavain muuttuu, muutos on otettava käyttöön kaikkialla, missä avainta käytetään viittauksena. Muuttumattoman perusavaimen käyttäminen vähentää sen mahdollisuutta, että perusavaimesta tulee yhteensopimaton taulukoiden kanssa, joissa on viittaus siihen.

Mielivaltaista yksilöllistä numeroa käytetään usein perusavaimena. Saatat esimerkiksi määrittää jokaiselle tilaukselle yksilöllisen tilausnumeron. Tilausnumeron ainut tarkoitus on määrittää tilausta. Kun se on kerran määritetty, se ei muutu koskaan.

Jos sinulla ei ole mielessä saraketta tai sarakesarjaa, joista tulisi hyvä perusavain, harkitse sellaisen sarakkeen käyttämistä, jolla on Laskuri-tietotyyppi. Kun käytät Laskuri-tietotyyppiä, Access määrittää arvon automaattisesti puolestasi. Sellainen tunnus on sisällötön: se ei sisällä mitään todellisia tietoja rivistä, jota se edustaa. Sisällöttömät tunnukset ovat ideaaleja perusavaimia, sillä ne eivät muutu. Perusavain, joka sisältää tietoja rivistä — esimerkiksi puhelinnumero tai asiakkaan nimi — tulee todennäköisesti muuttumaan, koska itse todellinen tieto saattaa muuttua.

Kuva, jossa on Tuotteet-taulukko ja perusavainkenttä.

1. Sarake, joka on tietotyypiltään Laskuri, on usein hyvä perusavain. Mitkään kaksi tuotetunnusta eivät ole samanlaisia.

Joissain tapauksissa voit haluta käyttää useampaa kenttää, jotka yhdessä muodostavat taulukon perusavaimen. Tilaustiedot-taulukko, joka tallentaa tilausten riviosia, käyttää esimerkiksi kahta saraketta perusavaimessa: Tilaustunnus ja Tuotetunnus. Kun yksi perusavain työllistää useampaa kuin yhtä saraketta, sitä kutsutaan myös viiteavaimeksi.

Myyntitiedot-tietokantaa varten voit luoda perusavaimena toimivan Laskuri-sarakkeen jokaista taulukkoa varten: Tuotetunnus Tuotteet-taulukkoa varten, Tilaustunnus Tilaukset-taulukkoa varten, Asiakastunnus Asiakkaat-taulukkoa varten ja Toimittajan tunnus Toimittajat-taulukkoa varten.

Kuva tieto-osista suunnitteluprosessin aikana


Sivun alkuun

Taulukoiden välisten yhteyksien luominen

Nyt kun olet jakanut tiedot taulukoihin, sinun on yhdistettävä tiedot uudelleen jollakin järkevällä tavalla. Seuraava lomake sisältää esimerkiksi 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 jaetaan erillisiin, aihekohtaisiin taulukoihin. Sen jälkeen tiedot yhdistetään tarpeen mukaan käyttämällä taulukoiden välisiä yhteyksiä.

Sivun alkuun

Yksi-moneen-yhteyden luominen

Mieti seuraavaa esimerkkiä: Toimittajat- ja Tuotteet-taulukot tuotetilaukset-tietokannassa. Toimittaja voi toimittaa minkä tahansa määrän tuotteita. Siitä seuraa, että yhtä Toimittajat-taulukon toimittajaa kohden Tuotteet-taulukkoon voi olla merkitty useita tuotteita. Toimittajat-taulukon ja Tuotteet-taulukon välinen yhteys on tällöin yksi-moneen-yhteys.

Yksi-moneen-käsite

Voit ilmentää yksi-moneen-yhteyttä tietokannan rakenteessa ottamalla perusavaimen yhteyden "yksi"-puolelta ja lisäämällä sen lisäsarakkeena tai -sarakkeina taulukkoon "moneen"-puolella olevaan yhteyteen. Tässä tapauksessa voit esimerkiksi lisätä Toimittajan tunnus -sarakkeen Toimittajat-taulukosta Tuotteet-taulukkoon. Access voi sitten paikantaa jokaisen tuotteen oikean toimittajan käyttämällä toimittajan tunnusnumeroa Tuotteet-taulukossa.

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

Kuva tieto-osista suunnitteluprosessin aikana

Luot perustan yhdistettyjen taulukoiden liittämiselle muodostamalla perusavain- ja viiteavainpareja. Jos et ole varma, minkä taulukoiden tulee jakaa yhteinen sarake, yksi-moneen-yhteyden määrittäminen varmistaa sen, että kaksi liittyvää taulukkoa edellyttävät todellakin jaettua saraketta.

Sivun alkuun

Monta-moneen-yhteyden luominen

Mieti Tuotteet-taulukon ja Tilaukset-taulukon välistä yhteyttä.

Yksi tilaus saattaa sisältää useita tuotteita. Toisaalta taas yksi tuote voi esiintyä monissa tilauksissa. Siten Tilaukset-taulukon jokaista tietuetta kohden voi Tuotteet-taulukossa olla useita tietueita. Ja Tuotteet-taulukon jokaista tietuetta kohden voi Tilaukset-taulukossa olla useita tietueita. Tämäntyyppistä yhteyttä kutsutaan monta-moneen-yhteydeksi, koska yhtä tuotetta varten voi olla useita tilauksia ja yhtä tilausta varten voi olla useita tuotteita. Huomaa, että monta-moneen-yhteyden havaitsemisessa taulukoiden välillä on tärkeää huomioida yhteyden molemmat puolet.

Kahden taulukon aiheilla — tilauksilla ja tuotteilla — on monta-moneen-yhteys. Tämä aiheuttaa ongelman. Jotta ymmärrät ongelman, kuvittele, mitä tapahtuisi, jos yrität luoda yhteyden kahden taulukon välille lisäämällä tuotetunnuskentän Tilaukset-taulukkoon. Jotta saat monta tuotetta tilausta kohti, tarvitset monta tietuetta tilausta kohti Tilaukset-taulukossa. Joutuisit toistamaan tilaustietoja jokaista riviä varten, joka liittyy yksittäiseen tilaukseen — tuloksena olisi tehoton rakenne, joka voi johtaa virheellisiin tietoihin. Törmäät samaan ongelmaan, jos laitat tilaustunnuskentän Tuotteet-taulukkoon — sinulla olisi monta tietuetta jokaista tuotetta kohti Tuotteet-taulukossa. Kuinka ratkaiset tämän ongelman?

Vastaus on, että luot kolmannen taulukon, jota kutsutaan usein liittämistaulukoksi. Liittämistaulukko jakaa monta-moneen-yhteyden kahdeksi yksi-moneen-yhteydeksi. Lisäät perusavaimen molemmista taulukoista kolmanteen taulukkoon. Tästä on tuloksena, että kolmas taulukko merkitsee yhteyden jokaisen esiintymän.

Monta-moneen-yhteys

Jokainen Tilaustiedot-taulukon tietue edustaa yhtä riviosaa tilauksessa. Tilaustiedot-taulukon perusavain koostuu kahdesta kentästä — Tilaukset- ja Tuotteet-taulukoiden viiteavaimista. Pelkkä tilaustunnuskenttä ei toimi perusavaimena tätä taulukkoa varten, koska yhdellä tilauksella voi olla useita riviosia. Tilaustunnus toistetaan jokaista riviosaa varten tilauksessa, joten kenttä ei sisällä yksilöllisiä arvoja. Pelkän tuotetunnuskentän käyttäminen perusavaimena ei myöskään toimi, koska yksi tuote voi esiintyä monissa eri tilauksissa. Nämä kentät yhdessä tuottavat kuitenkin aina yksilöllisen arvon jokaista tietuetta varten.

Myyntitiedot-tietokannassa Tilaukset-taulukko ja Tuotteet-taulukko eivät liity toisiinsa suoraan. Ne ovat sen sijaan yhteydessä toisiinsa epäsuorasti Tilaustiedot-taulukon kautta. Monta-moneen-yhteys tilausten ja tuotteiden välillä esitetään tietokannassa käyttämällä kahta yksi-moneen-yhteyttä:

  • Tilaukset-taulukolla ja Tilaustiedot-taulukolla on yksi-moneen-yhteys. Jokaisella tilauksella voi olla monta riviosaa, mutta jokainen riviosa on liitetty vain yhteen tilaukseen.

  • Tuotteet-taulukolla ja Tilaustiedot-taulukolla on yksi-moneen-yhteys. Jokaisella tuotteella voi olla monta siihen liittyvää riviosaa, mutta jokainen riviosa viittaa vain yhteen tuotteeseen.

Voit määrittää Tilaustiedot-taulukosta käsin kaikki tuotteet tietyssä tilauksessa. Voit myös määrittää kaikki tilaukset tiettyä tuotetta varten.

Tilaustiedot-taulukon yhdistämisen jälkeen taulukko- ja kenttäluettelo voi näyttää seuraavanlaiselta:

Kuva tieto-osista suunnitteluprosessin aikana


Sivun alkuun

Yksi-yhteen-yhteyden luominen

Eräs yhteystyyppi on yksi-yhteen-yhteys. Oletetaan esimerkiksi, että sinun on merkittävä joitakin erityisiä lisätuotetietoja, joita tarvitset harvoin tai jotka koskevat vain muutamia tuotteita. Koska et tarvitse tietoja usein ja koska tietojen tallentamisen tuloksena Tuotteet-taulukkoon jäisi tyhjiä kohtia niiden tuotteiden kohdalle, joita kyseiset tiedot eivät koske, sijoitat tiedot erilliseen taulukkoon. Kuten Tuotteet-taulukossa, käytä tuotetunnusta perusavaimena. Tämä lisätaulukon ja Tuotteet-taulukon välinen yhteys on yksi-yhteen-yhteys. Jokaista Tuotteet-taulukon tietuetta vastaa lisätaulukossa yksi tietue. Kun määrität tällaista yhteyttä, molempien taulukoiden on jaettava yksi yhteinen kenttä.

Kun havaitset, että tarvitset yksi-yhteen-suhteen tietokantaan, mieti, voitko yhdistää kahden taulukon tiedot yhteen taulukkoon. Jos et jostain syystä halua tehdä sitä (ehkä siksi, koska tuloksena olisi liian monta tyhjää kohtaa), seuraavassa luettelossa on kuvattu, kuinka voit esittää yhteyden rakenteessa:

  • Jos molemmissa taulukoissa on sama aihe, voit luultavasti määrittää yhteyden käyttämällä samaa perusavainta kummassakin taulukossa.

  • Jos molemmissa taulukoissa on eri aiheet ja perusavaimet, valitse jompikumpi taulukoista ja lisää sen perusavain toiseen taulukkoon viiteavaimena.

Taulukoiden yhteyden määrittäminen auttaa sinua varmistamaan, että sinulla on oikeat taulukot ja sarakkeet. Kun yksi-yhteen- tai yksi-moneen-yhteys on olemassa, yhdistyneiden taulukoiden on jaettava yhteinen sarake tai yhteisiä sarakkeita. Kun monta-moneen-yhteys on olemassa, yhteyden esittämiseen tarvitaan kolmatta taulukkoa.

Sivun alkuun

Rakenteen hienosäätäminen

Kun sinulla on tarvittavat taulukot, kentät ja yhteydet, sinun tulee luoda mallitietoja, täyttää taulukot niillä ja yrittää käsitellä kyseisiä mallitietoja: luoda kyselyjä, lisätä uusia tietueita jne. Näin saat mahdolliset ongelmat esiin — sinun on esimerkiksi lisättävä sarake, jonka unohdit lisätä suunnitteluvaiheessa, tai sinulla on ehkä taulukko, josta sinun on poistettava kaksoisarvot jakamalla taulukko kahdeksi taulukoksi.

Tarkasta, voitko käyttää tietokantaa niin, että se antaa sinulle haluamasi vastaukset. Tee hahmotelmia lomakkeista ja raporteista, jotta näet, näkyykö niissä tarvitsemasi tiedot. Etsi tarpeettomia kaksoistietoja ja poista ne muuttamalla rakennetta.

Kun testaat alustavaa tietokantaasi, löydät siinä varmasti parannettavaa. Seuraavassa on joitakin asioita, jotka kannattaa tarkistaa:

  • Unohditko joitakin sarakkeita? Jos unohdit, kuuluvatko tiedot jo olemassa oleviin taulukoihin? Jos tiedot ovat joitakin muita tietoja, sinun on ehkä luotava uusi taulukko. Luo sarake jokaista tieto-osaa varten, jota haluat seurata. Jos tietoja ei voi laskea muista sarakkeista, tarvitset todennäköisesti uuden sarakkeen.

  • Ovatko jotkut sarakkeet tarpeettomia, koska niiden tiedot voidaan laskea muista jo olemassa olevista kentistä? Jos jokin tieto-osa voidaan laskea jostakin vanhasta sarakkeesta — alennettu hinta voidaan esimerkiksi laskea jälleenmyyntihinnasta — on parempi tehdä niin, jolloin vältetään uuden sarakkeen luominen.

  • Kirjoitatko toistuvasti kaksoistietoja johonkin taulukkoon? Jos kirjoitat, sinun tarvitsee ehkä jakaa taulukko kahdeksi taulukoksi, joissa on yksi-moneen-yhteys.

  • Onko sinulla taulukoita, joissa on useita kenttiä, rajattu määrä tietueita ja useita tyhjiä kenttiä yksittäisinä tietueina? Jos on, harkitse taulukon suunnittelemista uudelleen niin, että siinä on vähemmän kenttiä ja enemmän tietueita.

  • Onko jokainen tieto-osa jaettu sen pienimpiin hyödyllisiin osiin? Jos sinun on raportoitava, lajiteltava, etsittävä tai laskettava tieto-osassa, laita se omaan sarakkeeseen.

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

  • Ovatko kaikki taulukoiden väliset yhteydet esitettynä, joko yhteisten kenttien tai kolmannen taulukon avulla? Yksi-yhteen- ja yksi-moneen-yhteys edellyttävät yhteisiä sarakkeita. Monta-moneen-yhteys edellyttää kolmatta taulukkoa.

Tuotteet-taulukon hienosäätäminen

Oletetaan, että jokainen tuote myyntitiedot-tietokannassa kuuluu yleiseen luokkaan, kuten juomat, mausteet ja meren antimet. Tuotteet-taulukon tulee sisältää kenttä, joka näyttää jokaisen tuotteen luokan.

Oletetaan, että päätät tietokannan rakenteen tarkastelemisen ja hienosäätämisen jälkeen tallentaa luokan kuvauksen yhdessä sen nimen kanssa. Jos lisäät Luokan kuvaus -kentän Tuotteet-taulukkoon, sinun on toistettava jokainen luokan kuvaus jokaista luokkaan kuuluvan tuotetta varten — tämä ei ole hyvä ratkaisu.

Luokista on parempi tehdä tietokantaan uusi seurattava aihe, jolla on oma taulukko ja oma perusavain. Sen jälkeen voit lisätä perusavaimen Luokat-taulukosta Tuotteet-taulukkoon viiteavaimena.

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

Kun tarkastelet taulukon rakennetta, etsi toistuvia ryhmiä. Mieti esimerkiksi taulukkoa, johon kuuluu seuraavat sarakkeet:

  • Tuotetunnus

  • Nimi

  • Tuotetunnus1

  • Nimi1

  • Tuotetunnus2

  • Nimi2

  • Tuotetunnus3

  • Nimi3

Jokainen tuote on tässä sarakkeiden toistuva ryhmä, joka eroaa muista vain sarakkeen nimen lopussa olevan numeron ansiosta. Kun havaitset näin numeroituja sarakkeita, sinun tulee korjata rakennetta.

Tällaisessa rakenteessa on useita vikoja. Se ensinnäkin pakottaa sinut määrittämään tuotteiden määrälle enimmäisrajan. Heti kun ylität rajan, sinun on lisättävä uusi ryhmä sarakkeita taulukon rakenteeseen, mikä on suuri hallinnointitehtävä.

Toinen ongelma on se, että toimittajat, joilla on enimmäismäärää vähemmän tuotteita, tuhlaavat tilaa, koska lisäsarakkeet jäävät tyhjiksi. Merkittävin vika tällaisessa rakenteessa on se, että se vaikeuttaa useiden tehtävien suorittamista, kuten tuotetunnuksen tai nimen perusteella tapahtuvaa taulukon lajittelemista tai indeksointia.

Aina kun havaitset toistuvia ryhmiä, tarkastele rakennetta huolellisesti ja mieti, voiko kyseisen taulukon jakaa kahdeksi taulukoksi. Yllä olevassa esimerkissä on parempi käyttää kahta taulukkoa, yhtä toimittajia varten ja toista tuotteita varten, ja yhdistää ne toimittajan tunnuksella.

Sivun alkuun

Normalisointisääntöjen käyttöönotto

Seuraavassa suunnittelun vaiheessa voit ottaa käyttöön tietojen normalisointisäännöt (kutsutaan myös normalisointisäännöiksi). Näiden sääntöjen avulla voit tarkastaa, onko taulukot muodostettu oikein. Sääntöjen käyttöönottoa tietokannan rakenteessa kutsutaan tietokannan normalisoimiseksi tai pelkäksi normalisoimiseksi.

Normalisointi on kaikkein hyödyllisintä sen jälkeen, kun olet esittänyt kaikki tieto-osat ja siirtynyt alustavaan rakenteeseen. Ideana on auttaa sinua varmistamaan, että olet jakanut kaikki tieto-osat sopiviin taulukoihin. Normalisoinnin avulla ei voi kuitenkaan varmistaa, onko sinulla alun alkaen oikeat tieto-osat saatavilla.

Säännöt otetaan käyttöön peräkkäin, ja jokaisessa vaiheessa varmistetaan, että rakenne vastaa yhtä "normalisointilomaketta". Laajasti tunnustettuja normalisointilomakkeita on viisi – ensimmäinen, toinen, kolmas, neljäs ja viides normalisointilomake. Tässä artikkelissa tarkennetaan kolmea ensimmäistä normalisointilomaketta, koska ne ovat ne normalisointilomakkeet, jotka ovat edellytyksenä valtaosissa tietokannan rakenteita.

Ensimmäinen normalisointilomake

Ensimmäinen normalisointilomake toteaa, että jokaisessa taulukon rivin ja sarakkeen leikkauskohdassa on yksittäinen arvo eikä koskaan luetteloa arvoista. Sinulla ei voi esimerkiksi olla Hinta-nimistä kenttää, johon laitat useamman kuin yhden hinnan. Jos pidät jokaista rivien ja sarakkeiden leikkauspistettä soluna, jokainen solu voi pitää sisällään vain yhden arvon.

Toinen normalisointilomake

Toinen normalisointilomake edellyttää, että jokainen ei-avainsarake on täysin riippuvainen koko perusavaimesta eikä vain osasta avainta. Tämä sääntö pätee, kun sinulla on perusavain, joka koostuu useasta sarakkeesta. Oletetaan esimerkiksi, että sinulla on seuraavat sarakkeet sisältävä taulukko, joiden perusavaimena toimivat tilaustunnus ja tuotetunnus:

  • Tilaustunnus (perusavain)

  • Tuotetunnus (perusavain)

  • Tuotenimi:

Tämä rakenne ei vastaa toista normalisointilomaketta, koska Tuotenimi riippuu Tuotetunnuksesta, muttei Tilaustunnuksesta. Se ei siis ole riippuvainen koko perusavaimesta. Sinun on poistettava Tuotenimi taulukosta. Se kuuluu toiseen taulukkoon (Tuotteet).

Kolmas normalisointilomake

Kolmas normalisointilomake edellyttää, että ei-avainsarakkeen ei ole pelkästään oltava riippuvainen perusavaimesta, vaan että ei-avainsarakkeiden on myös oltava riippuvaisia toisistaan.

Jokaisen ei-avainsarakkeen on siis toisin sanoen oltava riippuvainen perusavaimesta ja vain perusavaimesta. Oletetaan esimerkiksi, että sinulla on taulukko, joka sisältää seuraavat sarakkeet:

  • Tuotetunnus (perusavain)

  • Nimi

  • Annettu jälleenmyyntihinta

  • Alennus

Oletetaan, että alennus riippuu annetusta jälleenmyyntihinnasta. Tämä taulukko ei vastaa kolmatta normalisointilomaketta, koska ei-avainsarake, Alennus, riippuu toisesta ei-avainsarakkeesta, Annettu jälleenmyyntihinta. Sarakkeen riippumattomuus tarkoittaa, että sinun tulee voida muuttaa mitä tahansa ei-avainsaraketta ilman, että se vaikuttaa mihinkään muuhun sarakkeeseen. Jos muutat arvoa Annettu jälleenmyyntihinta -kentässä, alennus muuttuu sen mukaan, ja kyseistä sääntöä siis rikotaan. Tässä tapauksessa Alennus on siirrettävä toiseen taulukkoon, jonka avaimena on Annettu jälleenmyyntihinta.

Sivun alkuun

Kehitä Office-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ä.

×