Jaa


Access-tietokannan taulukoiden välisten suhteiden määrittäminen

Alkuperäinen KT-numero: 304466

Huomautus

Novice: Edellyttää yhden käyttäjän tietokoneiden käyttöliittymän tuntemusta. Tämä artikkeli koskee vain Microsoft Access -tietokantaa (.mdb tai .accdb).

Yhteenveto

Tässä artikkelissa kuvataan suhteiden määrittäminen Microsoft Access -tietokannassa. Artikkeli sisältää seuraavat aiheet:

  • Mitä ovat taulukkosuhteet?
  • Taulukkosuhteiden tyyppejä
    • Yksi moneen -yhteydet
    • Monta moneen -yhteydet
    • Yksi yhteen -suhteet
  • Taulukoiden välisten suhteiden määrittäminen
    • Yksi moneen- tai yksi yhteen -suhteen määrittäminen
    • Monta moneen -suhteen määrittäminen
  • Viite-eheys
  • Johdannaispäivitykset ja -poistot
  • Liitostyypit

Mitä ovat taulukkosuhteet?

Relaatiotietokannassa yhteyksien avulla voit estää tarpeettomia tietoja. Jos esimerkiksi suunnittelet tietokantaa, joka seuraa kirjojen tietoja, sinulla saattaa olla taulukko nimeltä "Otsikot", johon tallennetaan tietoja kustakin kirjasta, kuten kirjan nimi, julkaisupäivämäärä ja julkaisija. Voit tallentaa julkaisijasta myös tietoja, kuten julkaisijan puhelinnumeron, osoitteen ja postinumeron. Jos tallennat kaikki nämä tiedot "Otsikot"-taulukkoon, julkaisijan puhelinnumero monistuvat kustakin julkaisijan tulostamista otsikoista.

Parempi ratkaisu on tallentaa julkaisijan tiedot vain kerran erilliseen taulukkoon, jota kutsutaan julkaisijaksi. Sijoita sitten osoitin "Otsikot"-taulukkoon, joka viittaa Publishers-taulukon merkintään.

Jos haluat varmistaa, että tiedot pysyvät synkronoituina, voit pakottaa viite-eheyden taulukoiden välille. Viite-eheyssuhteet auttavat varmistamaan, että yhden taulukon tiedot vastaavat toisen taulukon tietoja. Esimerkiksi "Otsikot"-taulukon kunkin otsikon on liityttävä tiettyyn julkaisijaan Julkaisijat-taulukossa. Tietokantaan ei voi lisätä otsikkoa julkaisijalle, jota ei ole tietokannassa.

Tietokannan loogisten suhteiden avulla voit tehokkaasti kysellä tietoja ja luoda raportteja.

Taulukkosuhteiden tyyppejä

Suhde toimii täsmäämällä avainsarakkeiden tiedot, yleensä sarakkeissa (tai kentissä), joilla on sama nimi molemmissa taulukoissa. Useimmissa tapauksissa suhde yhdistää kunkin rivin perusavaimen tai yksilöivän tunnistesarakkeen taulukosta toisen taulukon kenttään. Toisen taulukon saraketta kutsutaan "viiteavaimeksi". Jos esimerkiksi haluat seurata kunkin kirjan otsikon myyntiä, luot suhteen perusavainsarakkeen (kutsutaan sitä title_ID) välille Otsikot-taulukossa ja Sarakkeen myyntitaulukossa, jonka nimi on title_ID. Myynti-taulukon title_ID-sarake on viiteavain.

Taulukoiden välillä on kolmenlaisia suhteita. Luotavan suhteen tyyppi määräytyy sen mukaan, miten liittyvät sarakkeet on määritetty.

Yksi moneen -yhteydet

Yksi moneen -suhde on yleisin suhdetyyppi. Tällaisessa suhteessa taulukon A rivillä voi olla useita vastaavia rivejä taulukossa B. Taulukon B rivillä voi kuitenkin olla vain yksi vastaava rivi taulukossa A. Esimerkiksi Julkaisijat- ja Otsikot-taulukoilla on yksi moneen -suhde. Eli jokainen julkaisija tuottaa useita otsikoita. Jokainen otsikko on kuitenkin peräisin vain yhdeltä julkaisijalta.

Yksi moneen -suhde luodaan, jos vain yksi liittyvistä sarakkeista on perusavain tai sillä on yksilöllinen rajoitus.

Accessin suhdeikkunassa yksi moneen -yhteyden perusavainpuolella on merkintä numero 1. Suhteen viiteavainpuolelle on merkitty ääretön symboli.

Näyttökuva yksi moneen -yhteyksien esimerkistä Accessin Suhteet-ikkunassa.

Monta moneen -yhteydet

Monta moneen -suhteessa taulukon A rivillä voi olla useita vastaavia rivejä taulukossa B ja päinvastoin. Voit luoda tällaisen suhteen määrittämällä kolmannen taulukon, jota kutsutaan liitoskohtataulukoksi. Liitoskohtataulukon perusavain koostuu viiteavaimista sekä taulukosta A että taulukosta B. Esimerkiksi Tekijät-taulukolla ja Otsikot-taulukolla on monta moneen -suhde, joka on määritetty yksi moneen -yhteydellä kustakin näistä taulukoista TitleAuthors-taulukkoon. TitleAuthors-taulukon perusavain on au_ID sarakkeen (Tekijät-taulukon perusavain) ja title_ID sarakkeen ("Otsikot"-taulukon perusavain) yhdistelmä.

Näyttökuva monta moneen -yhteyksien esimerkistä Accessin Suhteet-ikkunassa.

Yksi yhteen -suhteet

Yksi yhteen -suhteessa taulukon A rivillä voi olla enintään yksi vastaava rivi taulukossa B ja päinvastoin. Yksi yhteen -suhde luodaan, jos molemmat liittyvät sarakkeet ovat perusavaimia tai niillä on yksilöllisiä rajoituksia.

Tällainen suhde ei ole yleinen, koska suurin osa tällä tavalla toisiinsa liittyvistä tiedoista olisi yhdessä taulukossa. Voit käyttää yksi yhteen -suhdetta seuraavien toimintojen käyttämiseen:

  • Jaa taulukko, jossa on useita sarakkeita.
  • Eristää osan taulukosta turvallisuussyistä.
  • Tallenna tiedot, jotka ovat lyhytikäisiä ja jotka voidaan helposti poistaa poistamalla taulukko.
  • Tallenna tiedot, jotka koskevat vain päätaulukon alijoukkoa.

Accessissa yksi yhteen -suhteen perusavainpuolelle on merkitty avainsymboli. Viiteavaimen puolella on myös avainsymboli.

Taulukoiden välisten suhteiden määrittäminen

Kun luot suhteen taulukoiden välille, toisiinsa liittyvillä kentillä ei tarvitse olla samoja nimiä. Liittyvissä kentissä on kuitenkin oltava sama tietotyyppi, ellei perusavainkenttä ole laskurikenttä. Voit yhdistää laskurikentän Luku-kenttään vain, jos molempien vastaavien kenttienFieldSize-ominaisuus on sama. Voit esimerkiksi vastata laskurikenttää ja Luku-kenttää, jos molempien kenttienFieldSize-ominaisuus on Pitkä kokonaisluku. Vaikka molemmat vastaavat kentät ovat Luku-kenttiä, niillä on oltava samaFieldSizeproperty-asetus.

Yksi moneen- tai yksi yhteen -suhteen määrittäminen

Jos haluat luoda yksi moneen- tai yksi yhteen -suhteen, toimi seuraavasti:

  1. Sulje kaikki taulukot. Et voi luoda tai muuttaa avoimia taulukoita.

  2. Toimi Access 2002:ssa tai Access 2003:ssa seuraavasti:

    1. Siirry Tietokanta-ikkunaan painamalla F11-näppäintä.
    2. Valitse Työkalut-valikostaSuhteet.

    Valitse Access 2007:ssä, Access 2010:ssä tai Access 2013:ssa SuhteetTietokantatyökalut-välilehdenNäytä/piilota-ryhmästä.

  3. Jos et ole vielä määrittänyt yhteyksiä tietokantaan, Näytä taulukko -valintaikkuna tulee näkyviin automaattisesti. Jos haluat lisätä taulukot, jotka haluat yhdistää, mutta Näytä taulukko -valintaikkuna ei tule näkyviin, valitse Suhteet-valikosta Näytä taulukko.

  4. Kaksoisnapsauta niiden taulukoiden nimiä, jotka haluat yhdistää, ja sulje näytä taulukko -valintaikkuna. Jos haluat luoda suhteen taulukon ja itsensä välille, lisää taulukko kaksi kertaa.

  5. Vedä kenttä, jonka haluat yhdistää yhdestä taulukosta toisen taulukon liittyvään kenttään. Voit vetää useita kenttiä painamalla Ctrl-näppäintä, napsauttamalla kutakin kenttää ja vetämällä niitä.

    Useimmissa tapauksissa vedät perusavainkentän (tämä kenttä näkyy lihavoituna) yhdestä taulukosta vastaavaan kenttään (tällä kentällä on usein sama nimi), jota kutsutaan toisen taulukon viiteavaimeksi.

  6. Muokkaa suhteita -valintaikkuna avautuu. Varmista, että kenttien nimet, jotka näkyvät kahdessa sarakkeessa, ovat oikein. Voit muuttaa nimiä tarvittaessa.

    Määritä tarvittaessa suhdeasetukset. Jos sinulla on oltava tietoja tietystä kohteesta Muokkaa suhteita -valintaikkunassa, napsauta kysymysmerkkipainiketta ja napsauta kohdetta. (Nämä asetukset selitetään tarkemmin jäljempänä tässä artikkelissa.)

  7. Luo suhde valitsemalla Luo .

  8. Toista vaiheet 4–7 jokaisen liitettävän taulukkoparin kohdalla.

    Kun suljet Muokkaa suhteita -valintaikkunan, Access kysyy, haluatko tallentaa asettelun. Riippumatta siitä, tallennatko asettelun vai et, luomasi suhteet tallennetaan tietokantaan.

    Huomautus

    Voit luoda suhteita taulukoiden lisäksi myös kyselyissä. Kyselyissä ei kuitenkaan pakoteta viite-eheyttä.

Monta moneen -suhteen määrittäminen

Voit luoda monta moneen -suhteen seuraavasti:

  1. Luo kaksi taulukkoa, joilla on monta-moneen-suhde.

  2. Luo kolmas taulukko. Tämä on liitoskohtataulukko. Lisää liitoskohtataulukkoon uusia kenttiä, joilla on samat määritelmät kuin perusavainkentillä kustakin vaiheessa 1 luodusta taulukosta. Liitoskohtataulukossa perusavainkentät toimivat viiteavaimina. Voit lisätä muita kenttiä liitoskohtataulukkoon samalla tavalla kuin mihin tahansa muuhunkin taulukkoon.

  3. Määritä liitoskohtataulukossa perusavain sisältämään perusavainkentät kahdesta muusta taulukosta. Esimerkiksi TitleAuthors-liitostaulukossa perusavain koostuisi OrderID - ja ProductID-kentistä .

    Huomautus

    Voit luoda perusavaimen seuraavasti:

    1. Avaa taulukko rakennenäkymässä.

    2. Valitse kenttä tai kentät, jotka haluat määrittää perusavaimeksi. Valitse yksi kenttä napsauttamalla haluamasi kentän rivivalitsinta. Jos haluat valita useita kenttiä, pidä Ctrl-näppäintä painettuna ja napsauta sitten kunkin kentän rivivalitsinta.

    3. Napsauta Access 2002:ssa tai Access 2003:ssa perusavainta työkalurivillä.

      Valitse Access 2007:ssä PerusavainTyökalut-ryhmästäRakenne-välilehdeltä .

      Huomautus

      Jos haluat, että monikenttäisen perusavaimen kenttien järjestys poikkeaa taulukon kenttien järjestyksestä, valitse työkaluriviltä Indeksit, niin Indeksit-valintaikkuna tulee näkyviin ja järjestä sitten indeksin PrimaryKey kenttien nimet uudelleen.

  4. Määritä yksi moneen -suhde kunkin ensisijaisen taulukon ja liitoskohtataulukon välille.

Viite-eheys

Viite-eheys on järjestelmä, jonka avulla Access varmistaa, että liittyvien taulukoiden tietueiden väliset suhteet ovat kelvollisia ja että et poista tai muuta liittyviä tietoja vahingossa. Voit määrittää viite-eheyden, kun kaikki seuraavat ehdot täyttyvät:

  • Ensisijaisen taulukon vastaava kenttä on perusavain tai sillä on yksilöllinen indeksi.
  • Liittyvien kenttien tietotyyppi on sama. Poikkeuksia on kaksi. Laskurikenttä voi liittyä Numero-kenttään, jonka FieldSize ominaisuusasetus on Pitkä kokonaisluku, ja laskurikenttään, jonka ominaisuusasetuksena FieldSize on Replikointitunnus, voi liittyä numerokenttään, jonka ominaisuusasetuksena FieldSize on replikointitunnus.
  • Molemmat taulukot kuuluvat samaan Access-tietokantaan. Jos taulukot ovat linkitettyjä taulukoita, niiden on oltava Access-muodossa olevia taulukoita, ja sinun on avattava tietokanta, johon ne on tallennettu viite-eheyden määrittämiseksi. Viite-eheyttä ei voi pakottaa muissa muodoissa olevien tietokantojen linkitetyille taulukoille.

Viite-eheyttä käytettäessä sovelletaan seuraavia sääntöjä:

  • Et voi kirjoittaa liittyvän taulukon viiteavainkenttään arvoa, jota ei ole ensisijaisen taulukon perusavaimessa. Voit kuitenkin antaa tyhjäarvon viiteavaimeen. Tämä määrittää, että tietueet eivät liity toisiinsa. Sinulla ei voi olla esimerkiksi tilausta, joka on määritetty asiakkaalle, jota ei ole olemassa. Voit kuitenkin saada tilauksen, joka ei ole määritetty kellekään, kirjoittamalla CustomerID-kenttään Null-arvon.
  • Et voi poistaa tietuetta ensisijaisesta taulukosta, jos vastaava tietue on olemassa liittyvässä taulukossa. Et voi esimerkiksi poistaa työntekijätietuetta Työntekijät-taulukosta, jos "Tilaukset"-taulukon työntekijälle on määritetty tilauksia.
  • Et voi muuttaa perusavainarvoa ensisijaisessa taulukossa, jos kyseisessä tietueessa on toisiinsa liittyviä tietueita. Et voi esimerkiksi muuttaa työntekijän tunnusta Työntekijät-taulukossa, jos kyseiselle työntekijälle on määritetty tilauksia Tilaukset-taulukossa.

Johdannaispäivitykset ja -poistot

Suhteissa, joissa viite-eheys on käytössä, voit määrittää, haluatko Accessin johdannaispäivityksen vai johdannaisen poistavan liittyvät tietueet automaattisesti. Jos määrität nämä asetukset, poisto- ja päivitystoiminnot, jotka yleensä estetään viite-eheyssääntöjen vuoksi, ovat käytössä. Kun poistat tietueita tai muutat ensisijaisen taulukon perusavainarvoja, Access tekee tarvittavat muutokset liittyviin taulukoihin viite-eheyden säilyttämiseksi.

Jos valitset suhteen määrittämisen yhteydessä Johdannaispäivitykseen liittyvät kentät -valintaruudun, Microsoft Access päivittää perusavaimen automaattisesti kaikkien liittyvien tietueiden uuteen arvoon aina, kun muutat tietueen perusavainta ensisijaisessa taulukossa. Jos esimerkiksi muutat Asiakkaat-taulukon asiakastunnusta, "Tilaukset"-taulukon CustomerID-kenttä päivitetään automaattisesti jokaista asiakkaan tilausta kohti niin, että suhdetta ei rikota. Käytä johdannaispäivityksiä sanomaa näyttämättä.

Huomautus

Jos ensisijaisen taulukon perusavain on laskurikenttä, Johdannaispäivitykseen liittyvät kentät -valintaruudun valitseminen ei vaikuta, koska et voi muuttaa laskurikentän arvoa.

Jos valitset suhteen määrittämisen yhteydessä Johdannaispoistoon liittyvät tietueet -valintaruudun, Access poistaa liittyvät tietueet automaattisesti liittyvästä taulukosta aina, kun poistat tietueita ensisijaisesta taulukosta. Jos esimerkiksi poistat asiakastietueen Asiakkaat-taulukosta, kaikki asiakkaan tilaukset poistetaan automaattisesti Tilaukset-taulukosta. (Tämä sisältää Tilaustiedot-taulukon tietueet, jotka liittyvät Orders-tietueisiin). Kun poistat tietueita lomakkeesta tai taulukkonäkymästä, kun Johdannaispoistoon liittyvät tietueet -valintaruutu on valittuna, Access varoittaa, että myös liittyvät tietueet voidaan poistaa. Kun poistat tietueita poistokyselyllä, Access poistaa kuitenkin automaattisesti liittyvien taulukoiden tietueet näyttämättä varoitusta.

Liitostyypit

Liitostyyppejä on kolme. Näet ne seuraavassa näyttökuvassa:

Näyttökuva liitoksen ominaisuuksista, jossa näkyy kolme liitostyyppiä.

Vaihtoehto 1 määrittää sisäliitoksen. Sisäliitos on liitos, jossa kahden taulukon tietueet yhdistetään kyselyn tuloksiin vain, jos liitettyjen kenttien arvot täyttävät määritetyn ehdon. Kyselyssä oletusliitos on sisäliitos, joka valitsee tietueet vain, jos liitettyjen kenttien arvot vastaavat toisiaan.

Vaihtoehto 2 määrittää vasemman ulkoliitoksen. Vasen ulkoliitos on liitos, jossa kaikki KYSELYN SQL-lauseen LEFT JOIN -toiminnon vasemmasta reunasta tulevat tietueet lisätään kyselyn tuloksiin, vaikka liitetyssä kentässä ei olisi vastaavia arvoja oikealla puolella olevasta taulukosta.

Vaihtoehto 3 määrittää oikean ulkoliitoksen. Oikea ulkoliitos on liitos, jossa kaikki KYSELYN SQL-lauseen RIGHT JOIN -toiminnon oikealla puolella olevat tietueet lisätään kyselyn tuloksiin, vaikka vasemmassa reunassa olevassa taulukossa ei olisi vastaavia arvoja.