Vejledning i tabelrelationer

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

Et af målene med godt databasedesign er at fjerne dataredundans (duplikerede data). Du kan opnå dette mål ved at opdele dataene i mange emnebaserede tabeller, så hver oplysning kun er repræsenteret én gang. Derefter skal du give Access en metode til sætte de opdelte oplysninger sammen igen. Det gør du ved at indsætte fælles felter i de relaterede tabeller. Du kan dog kun gøre dette korrekt, når du har forstået relationerne mellem dine tabeller og derefter angive disse relationer i databasen.

I denne artikel

Introduktion

Typer af tabelrelationer

Hvorfor skal der oprettes tabelrelationer?

Forstå referentiel integritet

Få vist tabelrelationer

Oprette en tabelrelation

Slette en tabelrelation

Ændre en tabelrelation

Gennemtvinge referentiel integritet

Introduktion

Når du har oprettet en tabel til hvert emne i databasen, skal du give Access en metode til at sætte oplysningerne sammen igen, når du har brug for det. Det gør du ved at indsætte fælles felter i de relaterede tabeller og ved at definere relationer mellem tabellerne. Du kan derefter oprette forespørgsler, formularer og rapporter, der viser oplysninger fra flere tabeller samtidig. Den formular, der vises her, indeholder f.eks. oplysninger, der er hentet fra flere tabeller:

Formularen Ordrer viser relaterede oplysninger fra fem tabeller på én gang

1. Oplysningerne i denne formular stammer fra tabellen Kunder...

2. ...tabellen Ordrer...

3. ...tabellen Produkter...

4. ...og tabellen Ordredetaljer.

Kundenavnet i feltet Faktura til hentes fra tabellen Kunder, værdierne Ordre-id og Ordredata kommer fra tabellen Ordrer, produktnavnet kommer fra tabellen Produkter, og værdierne Pris pr enhed og Antal kommer fra tabellen Ordrespecifikationer. Disse tabeller er kædet sammen på forskellige måder for at hente oplysninger fra dem til formularen.

I eksemplet ovenfor skal felterne i tabellerne koordineres, så de viser oplysninger om den samme ordre. De koordineres ved hjælp af tabelrelationer. En tabelrelation sammenholder data i nøglefelter, der ofte er et felt, som har samme navn i begge felter. I de fleste tilfælde fungerer disse tilsvarende felter som den primære nøgle i den ene, hvilket giver hver post et entydigt id, og som en fremmed nøgle i den anden tabel. Medarbejdere kan f.eks. forbindes med ordrer, de er ansvarlige for, ved at oprette en tabelrelation mellem felterne Medarbejdernr. i tabellerne Medarbejdere og Ordrer.

Medarbejder-id bruges som primær nøgle i tabellen Medarbejdere og fremmed nøgle i tabellen Ordrer.

1. Medarbejder-id vises i begge tabeller - som primær nøgle ...

2. ... og som fremmed nøgle.

Toppen af siden

Typer af tabelrelationer

Der findes tre typer af tabelrelationer i Access.

  • En en-til-mange-relation

    Lad os bruge en ordreregistreringsdatabase, der indeholder tabellen Kunder og tabellen Ordrer, som eksempel. En kunde kan afgive ethvert antal ordrer. Det betyder, at der for hver kunde i tabellen Kunder kan være mange ordrer i tabellen Ordrer. Relationen mellem tabellen Kunder og tabellen Ordrer er derfor en en til mange-relation.

    Når du skal repræsentere en en til mange-relation i databasedesignet, skal du tage den primære nøgle på en-siden af relationen og tilføje den som et eller flere ekstra felter i tabellen på mange-siden af relationen. I dette tilfælde skal du f.eks. tilføje et nyt felt – id-feltet fra tabellen Kunder – i tabellen Ordrer og give det navnet Kunde-id. Access kan derefter bruge kunde-id-nummeret i tabellen Ordrer til at finde den korrekte kunde til hver ordre.

  • En mange-til-mange-relation

    Lad os se på relationen mellem tabellen Produkter og tabellen Ordrer. En enkelt ordre kan omfatte mere end ét produkt, og et enkelt produkt kan forekomme i mange ordrer. Derfor kan der for hver post i tabellen Ordrer være mange poster i tabellen Produkter, og for hver post i tabellen Produkter kan der være mange poster i tabellen Ordrer. Denne relation kaldes en mange til mange-relation. Når du skal identificere en mange til mange-relation, skal du derfor se på begge sider af relationen.

    For at repræsentere en mange-til-mange-relation skal du oprette en tredje tabel, ofte kaldet en samlingstabel, der opdeler mange-til-mange-relationen i to en-til-mange-relationer. Du skal indsætte den primære nøgle fra hver af de to tabeller i den tredje tabel. Det medfører, at hver forekomst af relationen registreres i den tredje tabel. Tabellen Ordrer og tabellen Produkter har f.eks. en mange-til-mange-relation, der defineres ved at oprette to en-til-mange-relationer til tabellen Ordrespecifikationer. En ordre kan bestå af mange produkter, og hvert produkt kan forekomme i mange ordrer.

  • En en-til-en-relation

    I en en til en-relation kan hver post i den første tabel kun have én tilsvarende post i den anden tabel, og hver post i den anden tabel kan kun have én tilsvarende post i den første tabel. Denne relation er ikke almindelig, fordi de fleste oplysninger, der er relateret på denne måde, findes i samme tabel. Du kan anvende en en til en-relation til at opdele en tabel med mange felter, til at isolere en del af en tabel af sikkerhedsgrunde eller til at lagre oplysninger, der kun gælder for en del af hovedtabellen. Når du har en sådan relation, skal de to tabeller dele et fælles felt.

Toppen af siden

Hvorfor skal der oprettes tabelrelationer?

Du kan oprette tabelrelationer udtrykkeligt ved at bruge vinduet Relationer eller ved at trække et felt fra ruden Feltliste. Access bruger tabelrelationer til at afgøre, hvordan tabeller skal joinforbindes, når de bruges i et databaseobjekt. Der er flere grunde til, at du skal oprette tabelrelationer, inden du opretter andre databaseobjekter som f.eks. formularer, forespørgsler og rapporter.

  • Tabelrelationer giver oplysninger til forespørgselsdesign

    Hvis du vil arbejde med poster fra mere end én tabel, skal du ofte oprette en forespørgsel, der joinforbinder tabellerne. Forespørgslen fungerer ved at sammenligne værdierne i primær nøgle-feltet i den første tabel med et fremmed nøgle-felt i den anden tabel. Hvis du f.eks. vil returnere rækker, der viser alle ordrer for hver kunde, skal du oprette en forespørgsel, der joinforbinder tabellen Kunder med tabellen Ordrer ud fra feltet Kunde-id. I vinduet Relationer kan du manuelt angive de felter, der skal joinforbindes. Hvis du allerede har defineret en relation mellem tabellerne, indsætter Access standardjoinforbindelsen ud fra den eksisterende tabelrelation. Hvis du bruger en af forespørgselsguiderne, anvender Access desuden de oplysninger, der indsamles fra de allerede definerede tabelrelationer, til at give dig informerede valgmuligheder og til på forhånd at udfylde egenskabsindstillinger med relevante standardværdier.

  • Tabelrelationer giver oplysninger til formular- og rapportdesign

    Når du designer en formular eller rapport, bruger Access de oplysninger, der indsamles fra de allerede definerede tabelrelationer, til at give dig informerede valgmuligheder og til på forhånd at udfylde egenskabsindstillinger med relevante standardværdier.

  • Tabelrelationer er det grundlag, hvorpå du kan gennemtvinge referentiel integritet for at undgå horeungeposter i databasen. En horeungepost er en post, der henviser til en post, der ikke findes, f.eks. en ordrepost, der henviser til en kundepost, der ikke findes.

    Når du designer en database, opdeler du oplysningerne i tabeller, som hver har en primær nøgle. Du føjer derefter fremmede nøgler til relaterede tabeller, der henviser til disse primære nøgler. Disse par af primære nøgler og fremmede nøgler udgør grundlaget for tabelrelationer og forespørgsler med flere tabeller. Det er vigtigt, at disse referencer mellem fremmede nøgler og primære nøgler altid er synkroniserede. Referentiel integritet, som afhænger af tabelrelationer, hjælper med at sikre, at henvisninger er synkroniserede.

Toppen af siden

Forstå referentiel integritet

Når du designer en database, opdeler du databaseoplysningerne i mange emnebaserede tabeller for at minimere dataredundans. Du giver derefter Access en metode til at sætte de opdelte oplysninger sammen igen ved at indsætte fælles felter i relaterede tabeller. Du kan repræsentere en en til mange-relation ved f.eks. at tage den primære nøgle fra en-tabellen og tilføje den som et ekstra felt i mange-tabellen. Når dataene skal sættes sammen igen, tager Access værdien i mange-tabellen og slår den tilsvarende værdi op i en-tabellen. På den måde henviser mange-tabellen til de tilsvarende værdier i en-tabellen.

Du har f.eks. en en-til-mange-relation mellem Speditionsfirmaer og Ordrer, og du vil slette et speditionsfirma. Hvis det speditionsfirma, du vil slette, har ordrer i tabellen Ordrer, bliver disse ordrer "horeunger", når du sletter posten for speditionsfirmaet. Ordrerne indeholder stadig et speditionsfirma-id, men id'et er ikke længere gyldigt, fordi den post, det henviser til, ikke længere findes.

Formålet med referentiel integritet er at forhindre elementer uden overordnede og holde henvisningerne synkroniserede, så denne hypotetiske situation aldrig opstår.

Du gennemtvinger referentiel integritet ved at aktivere den for en tabelrelation (se Gennemtvinge referentiel integritet for at få en trinvis vejledning). Når referentiel integritet gennemtvinges, afviser Access enhver handling, der kan bryde den referentielle integritet for den pågældende tabelrelation. Det betyder, at Access afviser opdateringer, der ændrer destinationen for en henvisning, og sletninger, der fjerner destinationen for en henvisning. Du kan dog have et begrundet behov for at ændre den primære nøgle for et speditionsfirma, der har ordrer i tabellen Ordrer. I sådanne tilfælde har du brug for, at Access automatisk opdaterer alle påvirkede rækker som en del af en enkelt handling. På den måde sikrer Access, at opdateringen udføres fuldt ud, så databasen ikke efterlades i en ikke-overensstemmende tilstand, hvor nogle rækker er opdateret og andre ikke. Derfor understøtter Access indstillingen Kaskadevis opdatering af relaterede felter. Når du gennemtvinger referentiel integritet og vælger indstillingen Kaskadevis opdatering af relaterede felter, og du derefter opdaterer en primær nøgle, opdaterer Access automatisk alle felter, der henviser til den primære nøgle.

Du har muligvis også en gyldig grund til at slette en række og alle relaterede poster, f.eks. en post for et speditionsfirma og alle de poster, der er relateret til det pågældende speditionsfirma. Derfor understøtter Access indstillingen Kaskadevis sletning af relaterede poster. Når du gennemtvinger referentiel integritet og vælger indstillingen Kaskadevis sletning af relaterede poster, og du derefter sletter en post på primær nøglen-side i relationen, sletter Access automatisk alle de poster, der henviser til den primære nøgle.

Toppen af siden

Få vist tabelrelationer

Klik på Relationer under fanen Databaseværktøjer for at få vist tabelrelationerne. Vinduet Relationer åbnes og viser alle eksisterende relationer. Hvis du endnu ikke har defineret relationer, og du åbner vinduet Relationer for første gang, bliver du bedt om at føje en tabel eller forespørgsel til vinduet i Access.

Åbne vinduet Relationer

  1. Klik på Filer, og klik derefter på Åbn.

  2. Vælg og åbn databasen.

  3. Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.

    Hvis databasen indeholder relationer, vises vinduet Relationer. Hvis databasen ikke indeholder relationer, og det er, første gang du åbner vinduet Relationer, vises dialogboksen Vis tabel. Klik på Luk for at lukke dialogboksen.

  4. Klik på Alle relationer i gruppen Relationer under fanen Design.

    Dermed vises alle de definerede relationer i din database. Bemærk, at skjulte tabeller (tabeller, hvis afkrydsningsfelt Skjult er markeret i dialogboksen for tabellens Egenskaber), og deres relationer vises ikke, medmindre afkrydsningsfeltet Vis skjulte objekter er markeret i dialogboksen Navigationsindstillinger.

En tabelrelation vises med en relationslinje mellem tabellerne i vinduet Tabeller. En relation, der ikke gennemtvinger referentiel integritet, vises som en tynd linje mellem de fælles felter, der understøtter relationen. Når du vælger relationen ved at klikke på dens linje, bliver linjen tykkere for at angive, at den er valgt. Hvis du gennemtvinger referentiel integritet for denne relation, bliver linjen tykkere i hver ende. Tallet 1 vises desuden over den tykke del af linjen på den ene side af relationen og symbolet for uendelighed (8) vises over den tykke del af linjen på den anden side.

Når vinduet Relationer er aktivt, kan du vælge fra følgende kommandoer på båndet:

I gruppen Funktioner under fanen Design:

  • Rediger relationer    Åbner dialogboksen Rediger relationer. Når du markerer en relationslinje, kan du klikke på Rediger relationer for at ændre tabelrelationen. Du kan også dobbeltklikke på relationslinjen.

  • Ryd layout    Fjerner alle tabeller og relationer, der vises i vinduet Relationer. Bemærk, at kommandoen kun skjuler tabellerne og relationerne - den sletter dem ikke.

  • Relationsrapport    Opretter en rapport, der viser tabellerne og relationerne i databasen. Rapporten viser kun de tabeller og relationer, der ikke er skjult i vinduet Relationer.

I gruppen Relationer under fanen Design:

  • Vis tabel    Åbner dialogboksen Vis tabel, så du kan vælge de tabeller og forespørgsler, der skal vises i vinduet Relationer.

  • Skjul tabel    Skjuler den markerede tabel i vinduet Relationer.

  • Vis direkte relationer    Viser alle relationer og relaterede tabeller for den markerede tabel i vinduet Relationer, hvis de ikke allerede vises.

  • Vis alle relationer    Viser alle relationer og relaterede tabeller i databasen i vinduet Relationer. Bemærk, at skjulte tabeller (tabeller, hvor afkrydsningsfeltet Skjult er markeret i dialogboksen Egenskaber for tabellen) og deres relationer ikke vises, medmindre du har markeret Vis skjulte objekter i dialogboksen Navigationsindstillinger.

  • Luk    Lukker vinduet Relationer. Hvis du har ændret layoutet i vinduet Relationer, bliver du spurgt, om du vil gemme ændringerne.

Toppen af siden

Oprette en tabelrelation

Du kan oprette en tabelrelation ved at bruge vinduet Relationer eller ved at trække et felt til et dataark fra ruden Feltliste. Når du opretter en relation mellem tabeller, skal de fælles felter ikke nødvendigvis have samme navne, selvom det ofte er tilfældet. Felterne skal have samme datatype. Hvis feltet med den primære nøgle er et autonummereringsfelt, kan feltet med den fremmede nøgle dog være et talfelt, hvis egenskaben Feltstørrelse er den samme for begge felter. Du kan f.eks. relatere et autonummereringsfelt og et talfelt, hvis egenskaben Feltstørrelse for begge felter er Langt heltal. Selv når begge de tilsvarende felter er talfelter, skal de have den samme egenskabsindstilling for Feltstørrelse.

Oprette en tabelrelation ved hjælp af vinduet Relationer

  1. Klik på Filer, og klik derefter på Åbn.

  2. Vælg og åbn databasen.

  3. Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.

  4. Hvis du endnu ikke har defineret relationer, vises dialogboksen Vis tabel automatisk. Hvis den ikke vises, skal du klikke på Vis tabel i gruppen Relationer under fanen Design.

    I dialogboksen Vis tabel vises alle tabeller og forespørgsler i databasen. Klik på Tabeller, hvis du kun vil se tabeller. Klik på Forespørgsler, hvis du kun vil se forespørgsler. Klik på Begge, hvis du vil se både tabeller og forespørgsler.

  5. Markér en eller flere tabeller eller forespørgsler, og klik derefter på Tilføj. Når du er færdig med at føje tabeller og forespørgsler til vinduet Relationer, skal du klikke på Luk.

  6. Træk et felt (som regel den primære nøgle) fra den ene tabel til det fælles felt (den fremmede nøgle) i den anden tabel. Hvis du vil flytte flere felter, skal du trykke på Ctrl, klikke på de enkelte felter og trække dem.

    Dialogboksen Rediger relationer åbnes.

  7. Kontroller, at de viste feltnavne er de fælles felter for relationen. Hvis et felt er forkert, skal du klikke på feltnavnet og vælge et nyt felt på listen.

    Hvis du vil gennemtvinge referentiel integritet for denne relation, skal du markere afkrydsningsfeltet Gennemtving referentiel integritet. Du kan finde flere oplysninger om referentiel integritet i afsnittene Forstå referentiel integritet og Gennemtvinge referentiel integritet.

  8. Klik på Opret.

    Relationslinjen tegnes mellem de to tabeller, Hvis du har markeret afkrydsningsfeltet Gennemtving referentiel integritet, er linjen tykkere i begge ender. Hvis du har markeret afkrydsningsfeltet Gennemtving referentiel integritet vises tallet 1 over den tykke del af linjen på den ene side af relationen, og symbolet for uendelighed (8) vises over den tykke del af linjen på den anden side.

    Bemærkninger: 

    • Sådan oprettes en en-til-en-relation    Begge de fælles felter (normalt felterne med den primære nøgle og den fremmede nøgle) skal have et entydigt indeks. Det betyder, at egenskaben Indekseret skal være indstillet til Ja - ingen dubletter for disse felter. Hvis begge felter har et entydigt indeks, oprettes der en en til en-relation i Access.

    • Sådan oprettes en en-til-mange-relation    Feltet på en-siden (typisk den primære nøgle) skal have et entydigt indeks. Det betyder, at egenskaben Indekseret skal være indstillet til Ja - ingen dubletter for dette felt. Feltet på mange-siden skal ikke have et entydig indeks. Feltet på mange-siden kan have et indeks, men det skal tillade dubletter. Det betyder, at egenskaben Indekseret skal være indstillet til Nej eller Ja - dubletter tillades for dette felt. Hvis det ene felt har et entydigt indeks, og det andet ikke har, oprettes der en en til mange-relation i Access.

Oprette en tabelrelation vha. ruden Feltliste

Du kan føje et felt til en eksisterende tabel, der er åben i dataarkvisning, ved at trække det fra ruden Feltliste. I ruden Feltliste vises de felter, der er tilgængelige i relaterede tabeller og også de felter, der er tilgængelige i andre tabeller. Når du trækker et felt fra en "anden" (ikke-relateret) tabel og derefter fuldfører guiden Opslag, oprettes der automatisk en ny en til mange-relation mellem tabellen i ruden Feltliste og den tabel, du trak feltet til. Denne relation, som Access har oprettet, gennemtvinger som standard ikke referentiel integritet. Hvis du vil gennemtvinge referentiel integritet, skal du redigere relationen. Du finder flere oplysninger i afsnittet Ændre en tabelrelation.

Åbne en tabel i dataarkvisning

  1. Klik på Åbn under fanen Filer.

  2. Vælg og åbn databasen i dialogboksen Åbn.

  3. Højreklik på den tabel, hvor du vil tilføje feltet og oprette relationen, i navigationsruden, og klik derefter på Åbn.

Åbne ruden Feltliste

  • Tryk på Alt+F8.

    Ruden Feltliste vises.

I ruden Feltliste vises alle de andre tabeller i databasen, og de er inddelt i kategorier. Når du arbejder med en tabel i dataarkvisning, vises felter i den ene af de to kategorier i ruden Feltliste i Access: Tilgængelige felter i relaterede tabeller og Tilgængelige felter i andre tabeller. I den første kategori vises alle de tabeller, der har en relation til den tabel, du aktuelt arbejder med. I den anden kategori vises alle de tabeller, som tabellen ikke har en relation til.

Når du klikker på plustegnet (+) ud for et tabelnavn i ruden Feltliste, vises en liste over alle de felter, der er tilgængelige i denne tabel. Hvis du vil tilføje et felt i tabellen, skal du trække det ønskede felt fra ruden Feltliste til tabellen i dataarkvisning.

Tilføje et felt og oprette en relation i ruden Feltliste

  1. Klik på plustegnet (+) ud for et tabelnavn under Tilgængelige felter i andre tabeller i ruden Feltliste for at få vist listen over felterne i denne tabel.

  2. Træk det ønskede felt fra ruden Feltliste til den tabel, der er åben i dataarkvisning.

  3. Når indsætningslinjen vises, skal du slippe feltet på den ønskede plads.

    Guiden Opslag starter.

  4. Følg vejledningen på skærmen for at fuldføre Guiden Opslag.

    Feltet vises i tabellen i dataarkvisning.

Når du trækker et felt fra en "anden" (ikke-relateret) tabel og derefter fuldfører guiden Opslag, oprettes der automatisk en ny en til mange-relation mellem tabellen i Feltliste og den tabel, du har trukket feltet til. Denne relation, som oprettes automatisk i Access, gennemtvinger som standard ikke referentiel integritet. Hvis du vil gennemtvinge referentiel integritet, skal du redigere relationen. Du kan finde flere oplysninger i afsnittet Ændre en tabelrelation.

Toppen af siden

Slette en tabelrelation

Hvis du vil fjerne en tabelrelation, skal du slette relationslinjen i vinduet Relationer. Placer markøren præcist, så den peger på relationslinjen, og klik derefter på linjen. Relationslinjen bliver tykkere, når den er markeret. Tryk på Delete, når relationslinjen er markeret. Når du fjerner en relation, skal du være opmærksom på, at du også fjerner understøttelsen af referentiel integritet for denne relation. Det betyder, at Access ikke længere automatisk forhindrer oprettelse af horeungeposter på mange-siden af en relation.

  1. Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.

    Vinduet Relationer vises. Hvis du endnu ikke har defineret relationer, og dette er den første gang, du åbner vinduet Relationer, vises dialogboksen Vis tabel. Hvis dialogboksen vises, skal du klikke på Luk.

  2. Klik på Alle relationer i gruppen Relationer under fanen Design.

    Alle de tabeller, der har relationer, vises med angivelse af relationslinjer.

  3. Klik på relationslinjen til den relation, du vil slette. Relationslinjen er tykkere, når den er markeret.

  4. Tryk på Delete.

    -eller-

Højreklik, og klik derefter på Slet.

  • Følgende meddelelse vises muligvis i Access: Er du sikker på, at du vil slette den markerede relation permanent fra databasen? Hvis det er tilfældet, skal du klikke på Ja.

Bemærk: Hvis en af tabellerne i tabelrelationen er i brug, evt. af en anden person eller proces, eller i et åbent databaseobjekt (f.eks. en formular), kan du ikke slette relationen. Du skal først lukke alle åbne objekter, der anvender disse tabeller, inden du kan fjerne relationen.

Toppen af siden

Ændre en tabelrelation

Du kan ændre en tabelrelation ved at markere den i vinduet Relationer og derefter redigere den. Placer markøren præcist, så den peger på relationslinjen, og klik derefter på linjen for at markere den. Relationslinjen bliver tykkere, når den er markeret. Når relationslinjen er markeret, skal du dobbeltklikke på den eller klikke på Rediger relationer i gruppen Funktioner under fanen Design. Dialogboksen Rediger relationer åbnes.

Foretage ændringer i dialogboksen Rediger relationer.

  1. Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.

    Vinduet Relationer vises. Hvis du endnu ikke har defineret relationer, og dette er den første gang, du åbner vinduet Relationer, vises dialogboksen Vis tabel. Hvis dialogboksen vises, skal du klikke på Luk.

  2. Klik på Alle relationer i gruppen Relationer under fanen Design.

    Alle de tabeller, der har relationer, vises med angivelse af relationslinjer.

  3. Klik på relationslinjen til den relation, du vil ændre. Relationslinjen er tykkere, når den er markeret.

  4. Dobbeltklik på relationslinjen.

  5. Foretag de ønskede ændringer, og klik derefter på OK.

    I dialogboksen Rediger relationer kan du ændre tabelrelationer. Du kan ændre tabellerne eller forespørgslerne på en af siderne af relationerne eller felterne på begge sider. Desuden kan du angive jointyperne, gennemtvinge referentiel integritet eller vælge en overlappende indstilling. Du kan finde flere oplysninger om jointypen, og hvordan den angives, i afsnittet Angive jointypen. Du kan finde flere oplysninger om, hvordan du gennemtvinger referentiel integritet og vælger en overlappende indstilling, i afsnittet Gennemtvinge referentiel integritet.

Angive jointypen

Når du definerer en tabelrelation, bruges oplysningerne om relationen i forespørgselsdesignet. Hvis du f.eks. definerer en relation mellem to tabeller, og du derefter opretter en forespørgsel, der anvender disse tabeller, vælger Access som standard automatisk de relaterede felter ud fra de felter, der er angivet i relationen. Du kan tilsidesætte disse standardværdier i forespørgslen, men de værdier, der gives af relationen, er ofte de korrekte. Hvis du arbejder med databaser, som ikke er meget simple, vil du ofte komme ud for at relatere og sammensætte data fra mere end én tabel. Det kan derfor være tidsbesparende og fordelagtigt, hvis du definerer standarder ved at oprette relationer.

I en forespørgsel med flere tabeller kombineres oplysninger fra flere tabeller ved at matche værdierne i fælles felter. Denne handling kaldes en joinhandling. Hvis det f.eks. antages, at du vil have vist dine kunders ordrer, kan du oprette en forespørgsel, der joinforbinder tabellen Kunder og tabellen Ordrer på feltet Kunde-id. Forespørgselsresultatet indeholder kun kunde- og ordreoplysninger fra de rækker, hvor værdierne i feltet er ens.

En af de værdier, du kan angive for hver relation, er jointypen. Jointypen fortæller Access, hvilke poster der skal medtages i et forespørgselsresultat. Du har f.eks. igen en forespørgsel, der joinforbinder tabellen Kunder og tabellen Ordrer på de fælles felter, der repræsenterer Kunde-id'et. Hvis du bruger standardjointypen (kaldet en indre joinforbindelse), returnerer forespørgslen kun de Kunde-rækker og Ordrer-rækker, hvor de fælles felter (også kaldet de joinforbundne felter) er ens.

Men du vil f.eks. medtage alle Kunder - også kunder, der endnu ikke har afgivet nogen ordrer. For at gøre det skal du ændre jointypen fra en indre joinforbindelse til det, der kaldes en venstre ydre joinforbindelse. En venstre ydre joinforbindelse returnerer alle rækker fra tabellen på venstre side af relationen og kun de, der er relaterede, fra tabellen på højre side. En højre ydre joinforbindelse returnerer alle rækkerne på højre side og kun de, der er relaterede, på venstre side.

Bemærk: I dette tilfælde henviser "venstre" og "højre" til placeringen af tabellerne i dialogboksen Rediger relationer, ikke i vinduet Relationer.

Du skal overveje, hvilket resultat du oftest ønsker fra tabellerne i denne relation, og derefter angive jointypen i overensstemmelse hermed.

Angive jointypen

  1. Klik på Jointype i dialogboksen Rediger relationer.

    Dialogboksen Joinegenskaber vises.

  2. Vælg den ønskede type, og klik derefter på OK.

I følgende tabel (der anvender tabellerne Kunder og Ordrer) vises de tre valgmuligheder i dialogboksen Joinegenskaber, den jointype, de anvender, og om alle rækker eller relaterede rækker medtages for hver tabel.

Valg

Joinforbindelse

Venstre tabel

Højre tabel

1. Medtag kun rækker, hvor de joinforbundne felter fra begge tabeller er ens.

Indre joinforbindelse

Matchende rækker

Matchende rækker

2. Medtag ALLE poster fra "Kunder" og kun de poster fra "Ordrer", hvor de joinforbundne felter er ens.

Venstre ydre joinforbindelse

Alle rækker

Matchende rækker

3. Medtag ALLE poster fra "Ordrer" og kun de poster fra "Kunder", hvor de joinforbundne felter er ens.

Højre ydre joinforbindelse

Matchende rækker

Alle rækker

Hvis du vælger indstilling 2 eller 3, vises der en pil på relationslinjen. Denne pil peger på den side af relationen, hvor der kun vises matchende rækker.

Foretage ændringer i dialogboksen Joinegenskaber

  1. Klik på Relationer i gruppen Relationer under fanen Databaseværktøjer.

    Vinduet Relationer vises. Hvis du endnu ikke har defineret relationer, og dette er den første gang, du åbner vinduet Relationer, vises dialogboksen Vis tabel. Hvis dialogboksen vises, skal du klikke på Luk.

  2. Klik på Vis alle relationer i gruppen Relationer under fanen Design.

    Alle tabeller med relationer vises, og relationslinjerne er synlige

  3. Klik på relationslinjen til den relation, du vil ændre. Relationslinjen er tykkere, når den er markeret.

  4. Dobbeltklik på relationslinjen.

    Dialogboksen Rediger relationer åbnes.

  5. Klik på Jointype.

  6. Klik på en indstilling i dialogboksen Joinegenskaber, og klik derefter på OK.

  7. Foretag eventuelle yderligere ændringer af relationen, og klik derefter på OK.

Toppen af siden

Gennemtvinge referentiel integritet

Referentiel integritet bruges til at forhindre poster uden relationer og sikre synkronisering af henvisningerne, så databasen ikke indeholder poster, der henviser til andre poster, der ikke længere findes. Du gennemtvinger referentiel integritet ved at aktivere det for en tabelrelation. Når referentiel integritet gennemtvinges i Access, afvises enhver handling, der kan bryde den referentielle integritet for den pågældende tabelrelation. Access afviser opdateringer, der ændrer destinationen for en henvisning, og sletninger, der fjerner destinationen for en henvisning. Hvis du ønsker, at Access skal udbrede opdateringer og sletninger, så alle relaterede rækker ændres tilsvarende, kan du finde flere oplysninger i afsnittet Angive kaskadeindstillingerne.

Aktivere og deaktivere referentiel integritet

  1. Klik på relationslinjen til den relation, som du vil ændre, i vinduet Relationer. Relationslinjen er tykkere, når den er valgt.

  2. Dobbeltklik på relationslinjen.

Dialogboksen Rediger relationer åbnes.

  1. Markér afkrydsningsfeltet Gennemtving referentiel integritet.

  2. Foretag eventuelle yderligere ændringer af relationen, og klik derefter på OK.

Når du har valgt at gennemtvinge referentiel integritet, træder følgende regler i kraft:

  • Du kan ikke angive en værdi i fremmed nøgle-feltet i en relateret tabel, hvis denne værdi ikke findes i primær nøgle-feltet i den primære tabel. Hvis du gør det, oprettes der uafhængigt poster. 

  • Du kan ikke slette en post fra en primær tabel, hvis der findes matchende poster i en relateret tabel. Du kan f.eks. ikke slette en medarbejderpost fra tabellen Medarbejdere, hvis der findes ordrer, der er tildelt til medarbejderen, i tabellen Ordrer. Du kan vælge at slette en primær post og alle relaterede poster i en handling ved at markere afkrydsningsfeltet Kaskadevis sletning af relaterede poster.

  • Du kan ikke ændre værdien for en primær nøgle i den primære tabel, hvis det medfører, at der oprettes horeungeposter. Du kan f.eks. ikke ændre et ordrenummer i tabellen Ordrer, hvis linjeelementer er knyttet til den pågældende ordre i tabellen Ordreoplysninger. Du kan dog vælge at opdatere en primær post og alle relaterede poster i en handling ved at markere afkrydsningsfeltet Kaskadevis opdatering af relaterede felter.

    Bemærkninger: Hvis du har problemer med at aktivere referentiel integritet, skal du være opmærksom på, at følgende forudsætninger skal være opfyldt for at gennemtvinge referentiel integritet:

    • Det fælles felt fra den primære tabel skal være en primær nøgle eller have et entydigt indeks.

    • De fælles felter skal have samme datatype. Den eneste undtagelse er autonummereringsfelter, der kan relateres til et talfelt, hvis egenskaben Feltstørrelse er angivet til Langt heltal.

    • Begge tabeller skal findes i den samme Access-database. Referentiel integritet kan ikke gennemtvinges i sammenkædede tabeller. Hvis kildetabellerne er i Access-format, kan du dog åbne den database, de er gemt i, og aktivere referentiel integritet i denne database.

Angive kaskadeindstillingerne

Der kan opstå en situation, hvor du har brug for at ændre værdien på en-siden af en relation. Hvis det er tilfældet, har du brug for, at Access automatisk opdaterer alle de påvirkede rækker som en del af en enkelt handling. På den måde udføres opdateringen fuldt ud, så databasen ikke efterlades i en ikke-overensstemmende tilstand, hvor nogle rækker er opdateret og andre ikke. Access hjælper dig med at undgå dette problem ved at understøtte funktionen Kaskadevis opdatering af relaterede felter. Når du gennemtvinger referentiel integritet og vælger indstillingen Kaskadevis opdatering af relaterede felter, og du derefter opdaterer en primær nøgle, opdaterer Access automatisk alle de felter, der henviser til den primære nøgle.

Du kan også have brug for at slette en række og alle relaterede poster, f.eks. posten for et speditionsfirma og alle relaterede ordrer for dette speditionsfirma. Derfor understøtter Access indstillingen Kaskadevis sletning af relaterede poster. Når du gennemtvinger referentiel integritet og vælger indstillingen Kaskadevis sletning af relaterede poster, sletter Access automatisk alle de poster, der henviser til den primære nøgle, når du sletter den post, der indeholder den primære nøgle.

Aktivere eller deaktivere kaskadevis opdatering eller sletning

  1. Klik på relationslinjen til den relation, som du vil ændre, i vinduet Relationer. Relationslinjen er tykkere, når den er valgt.

  2. Dobbeltklik på relationslinjen.

Dialogboksen Rediger relationer åbnes.

  1. Markér afkrydsningsfeltet Gennemtving referentiel integritet.

  2. Markér afkrydsningsfeltet Kaskadevis opdatering af relaterede felter eller Kaskadevis sletning af relaterede poster, eller markér dem begge.

  3. Foretag eventuelle yderligere ændringer af relationen, og klik derefter på OK.

Bemærk: Hvis den primære nøgle er et felt af typen Autonummerering, vil markering af afkrydsningsfeltet Kaskadevis opdatering af relaterede felter ikke have nogen betydning, fordi du ikke kan ændre værdien i et felt af typen Autonummerering.

Toppen af siden

Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Del Facebook Facebook Twitter Twitter Mail Mail

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×