Vejledning i tabelrelationer

Vejledning i tabelrelationer

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 repræsenteres én gang. Derefter skal du give Access en måde at samle de opdelte oplysninger på igen. Det gør du ved at indsætte fælles felter i tabeller, der er relaterede. Du kan dog kun udføre dette trin korrekt, når du har forstået relationerne mellem dine tabeller og angivet disse relationer i databasen.

I denne artikel

Introduktion

Typer af tabelrelationer

Hvorfor oprette tabelrelationer?

Forståelse af referentiel integritet

Få vist tabelrelationer

Introduktion

Når du har oprettet en tabel til hvert emne i databasen, skal du give Access en måde at samle oplysningerne på 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 på én gang. 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 sammenligner 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 tabel, 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 Medarbejder-id 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 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å én-siden af relationen og føje den til tabellen som et eller flere ekstra felter på mange-siden af relationen. I dette tilfælde skal du f.eks. føje et nyt felt – id-feltet fra tabellen Kunder – til tabellen Ordrer og give det navnet Kunde-id. Access kan derefter bruge Kunde-id'et i tabellen Ordrer til at finde den korrekte kunde til hver ordre.

  • En mange-til-mange-relation

    Lad os nu 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. Bemærk, at du skal se på begge sider af relationen, når du skal identificere en mange til mange-relation.

    For at repræsentere en mange til mange-relation skal du oprette en tredje tabel, der ofte kaldes 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 Ordreoplysninger. Én 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 forbindes, når de skal 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 forbinder tabellerne. Forespørgslen fungerer ved at sammenligne værdierne i det primære nøglefelt i den første tabel med et fremmed nøglefelt 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 forbinder tabellen Kunder med tabellen Ordrer baseret på feltet Kunde-id. I vinduet Relationer kan du manuelt angive de felter, der skal forbindes. Hvis du allerede har defineret en relation mellem tabellerne, indsætter Access standardforbindelsen baseret på 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å uafhængige poster i databasen. En uafhængig post er en post, der refererer til en anden post, der ikke findes, som f.eks. en ordrepost, der refererer 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.

Til 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 måde at samle de opdelte oplysninger på 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 én-tabellen og føje den til mange-tabellen som et ekstra felt. Når dataene skal samles igen, tager Access værdien i mange-tabellen og slår den tilsvarende værdi op i én-tabellen. På den måde refererer mange-tabellen til de tilsvarende værdier i én-tabellen.

Lad os f.eks. antage, at du har 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 "uafhængige", når du sletter posten i Speditionsfirma. Ordrerne indeholder stadig et speditionsfirma-id, men id'et er ikke længere gyldigt, fordi den post, det refererer 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, som 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å siden med den primære nøgle i relationen, sletter Access automatisk alle de poster, der refererer til den primære nøgle.

Til 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.

  • 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

Udvid dine Office-færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×