Share via


Slik definerer du relasjoner mellom tabeller i en Access-database

Opprinnelig KB-nummer: 304466

Obs!

Nybegynner: Krever kunnskap om brukergrensesnittet på enkeltbrukerdatamaskiner. Denne artikkelen gjelder bare for en Microsoft Access-database (.mdb eller *.accdb).

Sammendrag

Denne artikkelen beskriver hvordan du definerer relasjoner i en Microsoft Access-database. Artikkelen inneholder følgende emner:

  • Hva er tabellrelasjoner?
  • Typer tabellrelasjoner
    • Én-til-mange-relasjoner
    • Mange-til-mange-relasjoner
    • Én-til-én-relasjoner
  • Slik definerer du relasjoner mellom tabeller
    • Slik definerer du en én-til-mange- eller én-til-én-relasjon
    • Slik definerer du en mange-til-mange-relasjon
  • Referanseintegritet
  • Gjennomgripende oppdateringer og slettinger
  • Sammenføyningstyper

Hva er tabellrelasjoner?

I en relasjonsdatabase kan du bruke relasjoner til å forhindre overflødige data. Hvis du for eksempel utformer en database som sporer informasjon om bøker, kan det hende du har en tabell med navnet «Titler» som lagrer informasjon om hver bok, for eksempel bokens tittel, publiseringsdato og utgiver. Det finnes også informasjon du kanskje vil lagre om utgiveren, for eksempel utgiverens telefonnummer, adresse og postnummer. Hvis du skulle lagre all denne informasjonen i «Titler»-tabellen, ble utgiverens telefonnummer duplisert for hver tittel som utgiveren skriver ut.

En bedre løsning er å lagre utgiverens informasjon bare én gang, i en egen tabell som vi skal kalle «Utgivere». Deretter plasserer du en peker i «Titler»-tabellen som refererer til en oppføring i Publishers-tabellen.

Hvis du vil sikre at dataene forblir synkroniserte, kan du fremtvinge referanseintegritet mellom tabeller. Referanseintegritetsrelasjoner bidrar til å sikre at informasjonen i én tabell samsvarer med informasjon i en annen. Hver tittel i «Titler»-tabellen må for eksempel være knyttet til en bestemt utgiver i Publishers-tabellen. Kan ikke legge til en tittel i databasen for en utgiver som ikke finnes i databasen.

Logiske relasjoner i en database lar deg effektivt spørre etter data og opprette rapporter.

Typer tabellrelasjoner

En relasjon fungerer ved å sammenligne data i nøkkelkolonner, vanligvis kolonner (eller felt) som har samme navn i begge tabellene. I de fleste tilfeller kobler relasjonen primærnøkkelen, eller den unike identifikatorkolonnen for hver rad, fra én tabell til et felt i en annen tabell. Kolonnen i den andre tabellen kalles sekundærnøkkelen. Hvis du for eksempel vil spore salg av hver boktittel, oppretter du en relasjon mellom primærnøkkelkolonnen (la oss kalle den title_ID) i «Titler»-tabellen og en kolonne i «Salg»-tabellen som heter title_ID. Kolonnen title_ID i «Salg»-tabellen er sekundærnøkkelen.

Det finnes tre typer relasjoner mellom tabeller. Hvilken type relasjon som opprettes, avhenger av hvordan de relaterte kolonnene er definert.

Én-til-mange-relasjoner

En én-til-mange-relasjon er den vanligste typen relasjon. I denne typen relasjon kan en rad i tabell A ha mange samsvarende rader i tabell B. En rad i tabell B kan imidlertid bare ha én samsvarende rad i tabell A. Tabellene Publishers og Titles har for eksempel en én-til-mange-relasjon. Det vil se ut til at hver utgiver produserer mange titler. Men hver tittel kommer fra bare én utgiver.

En én-til-mange-relasjon opprettes hvis bare én av de relaterte kolonnene er en primærnøkkel eller har en unik begrensning.

I relasjonsvinduet i Access er primærnøkkelsiden for en én-til-mange-relasjon merket med et tall 1. Sekundærnøkkelsiden av en relasjon er merket med et uendeligsymbol.

Skjermbilde av et eksempel for én-til-mange-relasjoner i relasjonsvinduet i Access.

Mange-til-mange-relasjoner

I en mange-til-mange-relasjon kan en rad i tabell A ha mange samsvarende rader i tabell B, og omvendt. Du oppretter en slik relasjon ved å definere en tredje tabell som kalles en forbindelsestabell. Primærnøkkelen for forbindelsestabellen består av sekundærnøklene fra både tabell A og tabell B. For eksempel har «Forfattere»-tabellen og «Titler»-tabellen en mange-til-mange-relasjon som defineres av en én-til-mange-relasjon fra hver av disse tabellene til «TitleAuthors»-tabellen. Primærnøkkelen for «TitleAuthors»-tabellen er kombinasjonen av au_ID-kolonnen (primærnøkkelen for «Forfattere»-tabellen) og title_ID-kolonnen (primærnøkkelen for «Titler»-tabellen).

Skjermbilde av et eksempel for mange-til-mange-relasjoner i relasjonsvinduet i Access.

Én-til-én-relasjoner

I en én-til-én-relasjon kan en rad i tabell A ikke ha mer enn én samsvarende rad i tabell B, og omvendt. En én-til-én-relasjon opprettes hvis begge de relaterte kolonnene er primærnøkler eller har unike begrensninger.

Denne typen relasjon er ikke vanlig, fordi mesteparten av informasjonen som er relatert på denne måten, vil være i én tabell. Du kan bruke en én-til-én-relasjon til å utføre følgende handlinger:

  • Dele en tabell med mange kolonner.
  • Isolere en del av en tabell av sikkerhetsårsaker.
  • Lagre data som er kortvarige, og som enkelt kan slettes ved å slette tabellen.
  • Lagre informasjon som bare gjelder for et delsett av hovedtabellen.

Primærnøkkelsiden i en én-til-én-relasjon er angitt av et nøkkelsymbol i Access. Sekundærnøkkelsiden er også merket med et nøkkelsymbol.

Slik definerer du relasjoner mellom tabeller

Når du oppretter en relasjon mellom tabeller, trenger ikke de relaterte feltene å ha samme navn. Relaterte felt må imidlertid ha samme datatype med mindre primærnøkkelfeltet er et Autonummer-felt. Du kan bare sammenligne et Autonummer-felt med et tallfelt hvis FeltetSizeproperty for begge de samsvarende feltene er det samme. Du kan for eksempel samsvare med et Autonummer-felt og et Tall-felt hvisFieldSizeproperty for begge feltene er Langt heltall. Selv når begge samsvarende felt er Tall-felt, må de ha innstillingen sameFieldSizeproperty.

Slik definerer du en én-til-mange- eller én-til-én-relasjon

Følg disse trinnene for å opprette en én-til-mange- eller én-til-én-relasjon:

  1. Lukk alle tabeller. Du kan ikke opprette eller endre relasjoner mellom åpne tabeller.

  2. Følg disse trinnene i Access 2002 eller Access 2003:

    1. Trykk F11 for å bytte til databasevinduet.
    2. Klikk RelasjonerVerktøy-menyen.

    I Access 2007, Access 2010 eller Access 2013 klikker du Relasjoner i Vis/skjul-gruppenfanen Databaseverktøy.

  3. Hvis du ennå ikke har definert noen relasjoner i databasen, vises dialogboksen Vis tabell automatisk. Hvis du vil legge til tabellene du vil relatere, men dialogboksen Vis tabell ikke vises, klikker du Vis tabellRelasjoner-menyen .

  4. Dobbeltklikk navnene på tabellene du vil relatere, og lukk deretter dialogboksen Vis tabell . Hvis du vil opprette en relasjon mellom en tabell og seg selv, legger du til tabellen to ganger.

  5. Dra feltet du vil relatere fra én tabell til det relaterte feltet i den andre tabellen. Hvis du vil dra flere felt, trykker du CTRL, klikker hvert felt og drar dem.

    I de fleste tilfeller drar du primærnøkkelfeltet (dette feltet vises i fet skrift) fra én tabell til et lignende felt (dette feltet har ofte samme navn) som kalles sekundærnøkkelen i den andre tabellen.

  6. Dialogboksen Rediger relasjoner vises. Kontroller at feltnavnene som vises i de to kolonnene, er riktige. Du kan endre navnene hvis det er nødvendig.

    Angi relasjonsalternativene hvis det er nødvendig. Hvis du må ha informasjon om et bestemt element i dialogboksen Rediger relasjoner , klikker du spørsmålstegnknappen og klikker deretter elementet. (Disse alternativene vil bli forklart i detalj senere i denne artikkelen.)

  7. Klikk Opprett for å opprette relasjonen.

  8. Gjenta trinn 4 til 7 for hvert tabellpar du vil relatere.

    Når du lukker dialogboksen Rediger relasjoner , blir du spurt om du vil lagre oppsettet. Uansett om du lagrer oppsettet eller ikke lagrer oppsettet, lagres relasjonene du oppretter i databasen.

    Obs!

    Du kan opprette relasjoner ikke bare i tabeller, men også i spørringer. Referanseintegritet håndheves imidlertid ikke med spørringer.

Slik definerer du en mange-til-mange-relasjon

Følg disse trinnene for å opprette en mange-til-mange-relasjon:

  1. Opprett de to tabellene som vil ha en mange-til-mange-relasjon.

  2. Opprett en tredje tabell. Dette er forbindelsestabellen. Legg til nye felt i forbindelsestabellen som har de samme definisjonene som primærnøkkelfeltene fra hver tabell som du opprettet i trinn 1. Primærnøkkelfeltene fungerer som sekundærnøkler i forbindelsestabellen. Du kan legge til andre felt i forbindelsestabellen, akkurat som du kan i en hvilken som helst annen tabell.

  3. Angi primærnøkkelen i forbindelsestabellen for å inkludere primærnøkkelfeltene fra de to andre tabellene. I en «TitleAuthors»-forbindelsestabell vil for eksempel primærnøkkelen bestå av feltene OrdreID og ProduktID .

    Obs!

    Følg disse trinnene for å opprette en primærnøkkel:

    1. Åpne en tabell i utformingsvisning.

    2. Velg feltet eller feltene du vil definere som primærnøkkelen. Hvis du vil merke ett felt, klikker du radvelgeren for det ønskede feltet. Hvis du vil merke flere felt, holder du nede CTRL-tasten og klikker radvelgeren for hvert felt.

    3. Klikk Primærnøkkel på verktøylinjen i Access 2002 eller Access 2003.

      Klikk Primærnøkkel i Verktøy-gruppen i Access 2007 på fanen Utforming .

      Obs!

      Hvis du vil at rekkefølgen på feltene i en flerfelts primærnøkkel skal være forskjellig fra rekkefølgen til disse feltene i tabellen, klikker du Indekser på verktøylinjen for å vise dialogboksen Indekser, og deretter endrer du rekkefølgen på feltnavnene for indeksen kalt Primærnøkkel.

  4. Definer en én-til-mange-relasjon mellom hver primærtabell og forbindelsestabellen.

Referanseintegritet

Referanseintegritet er et system med regler som Access bruker til å sikre at relasjonene mellom poster i relaterte tabeller er gyldige, og at du ikke utilsiktet sletter eller endrer relaterte data. Du kan angi referanseintegritet når alle følgende betingelser er oppfylt:

  • Det samsvarende feltet fra primærtabellen er en primærnøkkel eller har en unik indeks.
  • De relaterte feltene har samme datatype. Det finnes to unntak. Et Autonummerering-felt kan være relatert til et Tall-felt som har en FieldSize egenskapsinnstilling for Langt heltall, og et Autonummer-felt som har en FieldSize egenskapsinnstilling for Replikerings-ID, kan være relatert til et tallfelt som har egenskapsinnstillingen FieldSize Replikerings-ID.
  • Begge tabellene tilhører samme Access-database. Hvis tabellene er koblede tabeller, må de være tabeller i Access-format, og du må åpne databasen der de er lagret for å angi referanseintegritet. Referanseintegritet kan ikke gjennomføres for koblede tabeller fra databaser i andre formater.

Følgende regler gjelder når du bruker referanseintegritet:

  • Du kan ikke angi en verdi i sekundærnøkkelfeltet i den relaterte tabellen som ikke finnes i primærnøkkelen for primærtabellen. Du kan imidlertid angi en nullverdi i sekundærnøkkelen. Dette angir at postene ikke er relatert. Du kan for eksempel ikke ha en ordre som er tilordnet til en kunde som ikke finnes. Du kan imidlertid ha en ordre som ikke er tilordnet til noen, ved å skrive inn en nullverdi i CustomerID-feltet .
  • Du kan ikke slette en post fra en primærtabell hvis det finnes samsvarende poster i en relatert tabell. Du kan for eksempel ikke slette en ansattpost fra Ansatte-tabellen hvis det er ordrer tilordnet til den ansatte i Ordrer-tabellen.
  • Du kan ikke endre en primærnøkkelverdi i primærtabellen hvis den posten har relaterte poster. Du kan for eksempel ikke endre en ansatts ID i «Ansatte»-tabellen hvis det er tilordnet ordrer til den ansatte i Ordrer-tabellen.

Gjennomgripende oppdateringer og slettinger

Når det gjelder relasjoner der referanseintegritet håndheves, kan du angi om du vil at Access skal oppdatere eller slette relaterte poster gjennomgripende automatisk. Hvis du angir disse alternativene, aktiveres slettings- og oppdateringsoperasjoner som vanligvis blir forhindret av referanseintegritetsregler. Når du sletter poster eller endrer primærnøkkelverdier i en primærtabell, gjør Access de nødvendige endringene i relaterte tabeller for å bevare referanseintegritet.

Hvis du klikker for å merke av for Oppdater relaterte felt gjennomgripende når du definerer en relasjon, oppdaterer Microsoft Access automatisk primærnøkkelen til den nye verdien i alle relaterte poster hver gang du endrer primærnøkkelen for en post i primærtabellen. Hvis du for eksempel endrer kundens ID i Kunde-tabellen, oppdateres KundeID-feltet i Ordrer-tabellen automatisk for hver av kundens ordrer, slik at relasjonen ikke brytes. Access overlapper oppdateringer uten å vise noen melding.

Obs!

Hvis primærnøkkelen i primærtabellen er et Autonummerering-felt, har det ingen innvirkning å merke av for Oppdater relaterte felt gjennomgripende fordi du ikke kan endre verdien i et Autonummer-felt.

Hvis du merker av for Slett relaterte poster gjennomgripende når du definerer en relasjon, slettes relaterte poster automatisk i den relaterte tabellen hver gang du sletter poster i primærtabellen. Hvis du for eksempel sletter en kundepost fra «Kunder»-tabellen, slettes alle kundens ordrer automatisk fra Ordrer-tabellen. (Dette inkluderer poster i ordredetaljer-tabellen som er relatert til ordrepostene. Når du sletter poster fra et skjema eller dataark når det er merket av for Slett relaterte poster gjennomgripende, advarer Access deg om at relaterte poster også kan bli slettet. Når du imidlertid sletter poster ved hjelp av en slettespørring, sletter Access automatisk postene i relaterte tabeller uten å vise en advarsel.

Sammenføyningstyper

Det finnes tre sammenføyningstyper. Du kan se dem i følgende skjermbilde:

Skjermbilde av Sammenføyningsegenskaper, som viser tre sammenføyningstyper.

Alternativ 1 definerer en indre sammenføyning. En indre sammenføyning er en sammenføyning der poster fra to tabeller kombineres i resultatene av en spørring bare hvis verdiene i de sammenføyde feltene oppfyller en angitt betingelse. I en spørring er standard sammenføyning en indre sammenføyning som bare velger poster hvis verdiene i de sammenføyde feltene samsvarer.

Alternativ 2 definerer en venstre ytre sammenføyning. En venstre ytre sammenføyning er en sammenføyning der alle postene fra venstre side av LEFT JOIN-operasjonen i spørringens SQL-setning legges til i spørringens resultater, selv om det ikke er noen samsvarende verdier i det sammenføyde feltet fra tabellen på høyre side.

Alternativ 3 definerer en høyre ytre sammenføyning. En høyre ytre sammenføyning er en sammenføyning der alle postene fra høyre side av RIGHT JOIN-operasjonen i spørringens SQL-setning legges til i spørringens resultater, selv om det ikke er noen samsvarende verdier i det sammenføyde feltet fra tabellen på venstre side.