Merkonomin
Virtuaalikoulu
(Jouko Hautamäki)
 

Microsoft Access -tietokantaohjelman perusteet

1 Johdanto
2 Tietokanta
3 Relaatio-
tietokanta
4 Tietokanta Microsoft Access XP:llä
5 Taulukko
6 Usean taulun tietokanta
7 Lomake
8 Kysely
9 Raportti
10 Yhteenveto
11 Kertaustehtävä

6    USEAN TAULUN RELAATIOTIETOKANTA


Relaatiotietokantojen yksi keskeisiä periaatteita on se, että yhteen tauluun tallennetaan vain saman tyyppisiin kohteisiin liittyviä tietoja. Samaan tauluun ei siis tallenneta esim. asiakkaiden tietoja ja tilausten tietoja vaan asiakkaiden tiedot tallennetaan yhteen tauluun ja tilaustiedot toiseen tauluun.

Toinen periaate on se, että tietty tieto tallennetaan vain yhteen tauluun. Näin tietokannan koko saadaan pidetyksi pienempänä ja ennen kaikkea vähennetään työtä ja varmistutaan siitä, että tietokannassa ei ole ristiriitaisia tietoja. Esim. asiakkaan osoite tallennetaan vain asiakastauluun, ei tilaustietojen yhteyteen tilaustauluun.

Monissa tilanteissa tarvitaan tietoa useammasta taulusta. Esim. laskun tuottamista varten tarvitaan asiakkaan nimi- ja osoitetiedot asiakastaulusta, tiedot tilauksista ovat omassa taulussaan sekä tuotteiden hinta- ja muut tiedot omassa taulussaan.

Jotta laskuun saadaan oikean asiakkaan nimi-, osoite- ja muut tiedot, tilaus- ja asiakastaulun välillä pitää olla jonkinlainen yhteys. Tämä yhteys luodaan viiteavaimen avulla.

Ennen kuin tarkastelemme yhteyksiä ja avaimia lisää täydennämme tietokantaamme uusilla taulukoilla.

Luo tietokantaan alla olevat taulukot. Määritä kunkin taulukon ensimmäinen kenttä perusavaimeksi.

Toimittajat

Kenttä Tietotyyppi Lisätietoja
ToimittajaNro Luku Kentän koko = Kokonaisluku
ToimittajaNimi Teksti Otsikko = Nimi
Lähiosoite Teksti  
Postinumero Teksti Kentän koko = 5
Postitoimipaikka Teksti  
Puhelinnumero Teksti  
Kotisivu Hyperlinkki  

Asiakkaat

Kenttä Tietotyyppi Lisätietoja
AsiakasNro Luku Kentän koko = Kokonaisluku
AsiakasNimi Teksti Otsikko = Nimi
Lähiosoite Teksti  
Postinumero Teksti Kentän koko = 5
Postitoimipaikka Teksti  
Puhelinnumero Teksti  

Tuoteryhmät

Kenttä Tietotyyppi Lisätietoja
TuoteryhmäNro Luku Kentän koko = Kokonaisluku
TuoteryhmäNimi Teksti Otsikko = Nimi

Ostot

Kenttä Tietotyyppi Lisätietoja
OstoNro Laskuri  
Pvm Pvm./klo Muoto = Lyhyt pvm.
Toimittaja Luku Kentän koko = Kokonaisluku
Tuote Luku Kentän koko = Kokonaisluku
Määrä Luku Kentän koko = Kokonaisluku

Myynnit

Kenttä Tietotyyppi Lisätietoja
MyyntiNro Laskuri  
Pvm Pvm./klo Muoto = Lyhyt pvm.
Asiakas Luku Kentän koko = Kokonaisluku
Tuote Luku Kentän koko = Kokonaisluku
Määrä Luku Kentän koko = Kokonaisluku

Kirjoita Tuoteryhmät-taulukkoon alla olevat tiedot

TuoteryhmäNro TuoteryhmäNimi
1 Käsityökalut
2 Sähkötyökalut
3 Puutarhatyökalut
4 Metsätyökalut

Kirjoita myös toimittajien tiedot. Alla ovat numerot ja nimet. Keksi itse muut tiedot.

ToimittajaNro ToimittajaNimi
1 Työkalutuonti
2 Suomen Työkalu
3 Scandinavian Tools
4 Haapajärven Työkalutukku

6.1    Taulujen väliset yhteydet

Relaatiotietokannan periaatteisiin kuuluu, että tietty tieto tallennetaan vain yhteen tauluun. Monessa tilanteessa tietoja on kuitenkin haettava useammasta taulusta. Jotta tämä onnistuisi, tauluissa tarvitaan yhteisiä kenttiä, joiden avulla taulujen välille luodaan yhteys.

Periaatetta, että tietty tieto tallennetaan vain yhteen tauluun, ei siis voida täysin toteuttaa. Avainkenttien tiedot ovat usein kahdessa tai useammassa taulussa. Esim. tietokantamme Tuotteet-taulukossa on kenttä TuoteNro ja Myynnit-taulukossa kenttä Tuote. Molemmat kentät sisältävät tuotteiden numeroita.

Jos kahdella taululla on edellisen esimerkin tapaan yhteinen kenttä, taulujen välille voidaan luoda yhteys. Tämän yhteyden avulla voidaan esim. laskulle hakea Myynnit-taulukossa olevien tietojen lisäksi myydyn tuotteen nimi ja hinta Tuotteet-taulukosta.

6.1.1 Viiteavain

Edellisessä esimerkissämme Myynnit-taulukkoa voidaan kutsua viittaavaksi tauluksi eli lapsitauluksi. Tuotteet-taulukko on viitattava taulu eli äititaulu.

Sitä lapsitaulun kenttää, jolla viitataan toisen taulun tietueeseen (riviin), kutsutaan viiteavaimeksi. Myynnit-taulukon Tuote-kenttä toimii siis viiteavaimena.

Viittauksen kohteena äititaulussa on melkein aina perusavainkenttä. Tuotteet-taulukossa se on TuoteNro-kenttä.

Jotta yhteyden muodostaminen onnistuu, täytyy yhteisten kenttien tietotyypin olla sama. Edellisessä sekä Tuotteet-taulukon TuoteNro-kentän että Myynnit-taulukon Tuote-kentän tietotyyppi on kokonaisluku. Kenttien nimet voivat olla samat, mutta niiden ei tarvitse välttämättä olla.

Relaatiotietokannan viite-eheyssäännön mukaan viiteavaimen tulee viitata johonkin äititaulun olemassaolevaan riviin tai viiteavaimen arvon tulee olla tyhjä. Tietokannassamme tämä tarkoittaa esim. sitä, että Myynnit-taulukkoon voidaan syöttää vain sellainen tuotenumero, joka on Tuotteet-taulukossa.

Microsoft Access voidaan "määrätä" valvomaan viite-eheyden säilymistä.

6.1.2 Yhteystyypit

Kahden kohteen ja vastaavasti kahden taulun välinen yhteys voi olla yksi-yhteen-yhteys, yksi-moneen-yhteys tai monta-moneen-yhteys.

Tässä opintojaksossa luomme vain yksi-moneen-yhteyksiä. Yksi-moneen-yhtyes tarkoittaa sitä, että yhtä viitattavan taulun tietuetta vastaa monta viittaavan taulun tietuetta, mutta yhtä viittaavan taulun tietuetta vastaa vain yksi viitattavan taulun tietue. Esim. jos otamme Tuotteet-taulukosta tietyn tuotteen, sen tuotenumero voi esiintyä Myynnit-taulukossa monessa tietueessa ts. samaa tuotetta on voitu myydä monta kertaa. Jos sen sijaan otamme Myynnit-taulukon yhden tietueen ja katsomme siinä olevan tuotenumeron, voimme todeta, että sama tuotenumero esiintyy vain yhdessä tietueessa Tuotteet-taulukossa. Sanomme, että Tuotteet-taulukon ja Myynnit-taulukon välillä on yksi-moneen-yhteys (yhden suhde moneen yhteys).

6.1.3 Yhteyksien luominen

Luomme seuraavaksi Jukola-tietokannan taulujen väliset yhteydet.

  • Sulje ensiksi kaikki muut ikkunat paitsi tietokantaikkuna. Yhteyden luominen ei onnistu, jos yhteydessä mukana oleva taulukko on avattuna joko taulukko- tai rakennenäkymässä.
  • Avaa Yhteydet-ikkuna. Yhteydet-ikkunan saat avatuksi työkalurivin painikkeella tai valitsemalla Työkalut Yhteydet...

    Jos Yhteydet-ikkunaan ei ole aiemmin lisätty taulukoita, Access avaa Yhteydet-ikkunan päälle Näytä taulukko -ikkunan.



    Jos Näytä taulukko-ikkuna ei avaudu automaattisesti, voit avata sen Näytä taulukko -painikkeella tai valitsemalla Näytä Näytä taulukko...
  • Lisää Näytä taulukko -ikkunassa näkyvät taulukot Yhteydet-ikkunaan valitsemalla ne ja napsauttamalla Lisää-painiketta. Voit valita kaikki kerralla tai lisätä yksitellen. Kun olet lisännyt kaikki, sulje Näytä taulukko -ikkuna. Lisätyt talulukot näkyvät Yhteydet-ikkunassa.
  • Kahden taulun välinen yhteys luodaan vetämällä hiirellä vastinkenttien välillä.

    Ota hiirellä kiinni Tuoteyhmät-taulukon TuoteryhmäNro-kentästä ja vedä se Tuotteet-taulukon Tuoteryhmä-kentän päälle ja päästä irti hiiren painikkeesta. Muokkaa yhteyksiä -ikkuna avautuu.



    Ikkunasta näkyy taulukot ja kentät, joiden välille yhteyttä ollaan muodostamassa. Ikkunan alareunassa näkyy yhteyslaji, joka tässä tapauksessa on yksi-moneen, mikä puolestaan tässä tapauksessa tarkoittaa, että tuoteryhmä voi sisältää monta tuotetta, mutta tuote voi kuulua vain yhteen tuoteryhmään.
  • Pane valintamerkki kohtaan Säilytä viite-eheys ja paina Luo-painiketta. "Määräys" säilyttää viite-eheys takaa sen, että yhdellekään tuotteelle ei voida antaa tuotetyhmän numeroksi numeroa, jota ei ole Tuoteryhmät-taulukossa.

    Taulukoiden välille tulee yhteyttä kuvaava viiva, josta näkyy myös yhteyden tyyppi.



    Jos yhteyden luominen epäonnistuu, se johtuu melkein aina joko siitä, että vastinkenttien tietotyypit eivät ole samat tai taulukoihin on jo kirjoitettu tietoja, jotka rikkovat viite-eheyden. Esim. jos jollakin tuotteella olisi tuotenumero, jota ei ole Tuoteryhmät-taulukossa, Access kieltäytyisi luomasta yhteyttä.
  • Luo samalla tavalla alla olevan kuvan mukaiset yhteydet muiden taulujen välille.



    Jos haluat poistaa luodun yhteyden tai muokata yhteyttä, napsauta yhteysviivaa hiiren oikealla painikkeella ja valitse sopiva komento.