Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Nybörjare: Kräver kunskap om användargränssnittet på enanvändardatorer. Den här artikeln gäller endast för en Microsoft Access-databas (.mdb eller .accdb).
Sammanfattning
I den här artikeln beskrivs hur du definierar relationer i en Microsoft Access-databas. Artikeln innehåller:
- Vad är tabellrelationer?
- Typer av tabellrelationer
- En-till-många-relationer
- Många-till-många-relationer
- En-till-en-relationer
- Definiera relationer mellan tabeller
- Definiera en en-till-många-relation eller en-till-en-relation
- Definiera en många-till-många-relation
- Referensintegritet
- Sammanhängande uppdateringar och borttagningar
- Kopplingstyper
Vad är tabellrelationer?
I en relationsdatabas kan du med relationer förhindra redundanta data. Om du till exempel utformar en databas som spårar information om böcker kan du ha en tabell med namnet "Rubriker" som lagrar information om varje bok, till exempel bokens titel, publiceringsdatum och utgivare. Det finns också information som du kanske vill lagra om utgivaren, till exempel utgivarens telefonnummer, adress och postnummer. Om du lagrar all denna information i tabellen "Rubriker" dupliceras utgivarens telefonnummer för varje rubrik som utgivaren skriver ut.
En bättre lösning är att lagra utgivarens information bara en gång, i en separat tabell som kallas "Utgivare". Du skulle sedan placera en pekare i tabellen "Rubriker" som refererar till en post i tabellen "Publishers".
För att se till att dina data förblir synkroniserade kan du framtvinga referensintegritet mellan tabeller. Referensintegritetsrelationer hjälper dig att se till att informationen i en tabell matchar information i en annan. Till exempel måste varje rubrik i tabellen Rubriker associeras med en specifik utgivare i tabellen "Publishers". Det går inte att lägga till en rubrik i databasen för en utgivare som inte finns i databasen.
Med logiska relationer i en databas kan du effektivt fråga efter data och skapa rapporter.
Typer av tabellrelationer
En relation fungerar genom att matcha data i nyckelkolumner, vanligtvis kolumner (eller fält) som har samma namn i båda tabellerna. I de flesta fall ansluter relationen primärnyckeln, eller den unika identifierarkolumnen för varje rad, från en tabell till ett fält i en annan tabell. Kolumnen i den andra tabellen kallas för "sekundärnyckel". Om du till exempel vill spåra försäljningen av varje bokrubrik skapar du en relation mellan primärnyckelkolumnen (låt oss kalla den title_ID) i tabellen "Rubriker" och en kolumn i tabellen "Försäljning" som heter title_ID. Kolumnen title_ID i tabellen "Försäljning" är den främmande nyckeln.
Det finns tre typer av relationer mellan tabeller. Vilken typ av relation som skapas beror på hur de relaterade kolumnerna definieras.
En-till-många-relationer
En en-till-många-relation är den vanligaste typen av relation. I den här typen av relation kan en rad i tabell A ha många matchande rader i tabell B. Men en rad i tabell B kan bara ha en matchande rad i tabell A. Tabellerna "Publishers" och "Titles" har till exempel en en-till-många-relation. Det innebär att varje utgivare producerar många titlar. Men varje titel kommer bara från en utgivare.
En en-till-många-relation skapas om endast en av de relaterade kolumnerna är en primärnyckel eller har en unik begränsning.
I relationsfönstret i Access anges den primära nyckelsidan för en en-till-många-relation med talet 1. Den främmande nyckelsidan i en relation betecknas med en oändlighetssymbol.
Många-till-många-relationer
I en många-till-många-relation kan en rad i tabell A ha många matchande rader i tabell B och vice versa. Du skapar en sådan relation genom att definiera en tredje tabell som kallas för en kopplingstabell. Den primära nyckeln i kopplingstabellen består av de externa nycklarna från både tabell A och tabell B. Tabellen "Författare" och tabellen "Titlar" har till exempel en många-till-många-relation som definieras av en en-till-många-relation från var och en av dessa tabeller till tabellen "TitleAuthors". Den primära nyckeln i tabellen "TitleAuthors" är kombinationen av kolumnen au_ID (tabellen Författares primärnyckel) och kolumnen title_ID (tabellen Rubriker).
En-till-en-relationer
I en en-till-en-relation kan en rad i tabell A inte ha mer än en matchande rad i tabell B och vice versa. En en-till-en-relation skapas om båda de relaterade kolumnerna är primära nycklar eller har unika begränsningar.
Den här typen av relation är inte vanlig eftersom den mesta informationen som är relaterad på det här sättet finns i en tabell. Du kan använda en en-till-en-relation för att utföra följande åtgärder:
- Dela upp en tabell med många kolumner.
- Isolera en del av en tabell av säkerhetsskäl.
- Lagra data som är kortvariga och enkelt kan tas bort genom att ta bort tabellen.
- Lagra information som endast gäller för en delmängd av huvudtabellen.
I Access betecknas den primära nyckelsidan i en en-till-en-relation med en nyckelsymbol. Den främmande nyckelsidan betecknas också med en nyckelsymbol.
Definiera relationer mellan tabeller
När du skapar en relation mellan tabeller behöver inte de relaterade fälten ha samma namn. Relaterade fält måste dock ha samma datatyp om inte det primära nyckelfältet är ett Autonummerfält. Du kan bara matcha ett Räknare-fält med ett Tal-fält om fältstorleken för båda matchande fälten är samma. Du kan till exempel matcha ett AutoNumber-fält och ett Tal-fält om FieldSize-egenskapen för båda fälten är Long Integer. Även om båda matchande fälten är talfält måste de ha samma Inställning förFieldSizeproperty.
Definiera en en-till-många-relation eller en-till-en-relation
Följ dessa steg för att skapa en en-till-många-relation eller en en-till-en-relation:
Stäng alla tabeller. Du kan inte skapa eller ändra relationer mellan öppna tabeller.
Följ dessa steg i Access 2002 eller Access 2003:
- Tryck på F11 för att växla till databasfönstret.
- På menyn Verktyg klickar du på Relationer.
I Access 2007, Access 2010 eller Access 2013 klickar du på Relationer i gruppen Visa/dölj på fliken Databasverktyg .
Om du ännu inte har definierat några relationer i databasen visas dialogrutan Visa tabell automatiskt. Om du vill lägga till de tabeller som du vill relatera men dialogrutan Visa tabell inte visas klickar du på Visa tabell på menyn Relationer .
Dubbelklicka på namnen på de tabeller som du vill relatera till och stäng sedan dialogrutan Visa tabell . Om du vill skapa en relation mellan en tabell och sig själv lägger du till tabellen två gånger.
Dra det fält som du vill relatera från en tabell till det relaterade fältet i den andra tabellen. Dra flera fält genom att trycka på Ctrl, klicka på varje fält och sedan dra dem.
I de flesta fall drar du primärnyckelfältet (det här fältet visas i fetstil) från en tabell till ett liknande fält (det här fältet har ofta samma namn) som kallas sekundärnyckeln i den andra tabellen.
Dialogrutan Redigera relationer visas. Kontrollera att fältnamnen som visas i de två kolumnerna är korrekta. Du kan ändra namnen om det behövs.
Ange relationsalternativen om det behövs. Om du måste ha information om ett specifikt objekt i dialogrutan Redigera relationer klickar du på frågetecknet och klickar sedan på objektet. (Dessa alternativ förklaras i detalj senare i den här artikeln.)
Klicka på Skapa för att skapa relationen.
Upprepa steg 4 till och med 7 för varje tabellpar som du vill relatera till.
När du stänger dialogrutan Redigera relationer frågar Access om du vill spara layouten. Oavsett om du sparar layouten eller inte sparar layouten sparas de relationer som du skapar i databasen.
Anmärkning
Du kan skapa relationer inte bara i tabeller utan även i frågor. Referensintegritet tillämpas dock inte vid frågeoperationer.
Definiera en många-till-många-relation
Följ dessa steg för att skapa en många-till-många-relation:
Skapa de två tabeller som ska ha en många-till-många-relation.
Skapa en tredje tabell. Det här är sambandstabellen. I kopplingstabellen lägger du till nya fält som har samma definitioner som primärnyckelfälten från varje tabell som du skapade i steg 1. I kopplingstabellen fungerar de primära nyckelfälten som främmande nycklar. Du kan lägga till andra fält i kopplingstabellen, precis som du kan i andra tabeller.
I kopplingstabellen anger du den primära nyckeln så att den innehåller de primära nyckelfälten från de andra två tabellerna. I en "TitleAuthors"-kopplingstabell består till exempel den primära nyckeln av fälten OrderID och ProductID .
Anmärkning
Följ dessa steg för att skapa en primärnyckel:
Öppna en tabell i designvyn.
Välj det fält eller fält som du vill definiera som primärnyckel. Om du vill välja ett fält klickar du på radväljaren för önskat fält. Om du vill markera flera fält håller du ned Ctrl-tangenten och klickar sedan på radväljaren för varje fält.
I Access 2002 eller Access 2003 klickar du på Primärnyckel i verktygsfältet.
I Access 2007 klickar du på Primärnyckel i gruppen Verktyg på fliken Design .
Anmärkning
Om du vill att ordningen på fälten i en primärnyckel med flera fält ska skilja sig från ordningen för fälten i tabellen klickar du på Index i verktygsfältet för att visa dialogrutan Index och ändrar sedan ordning på fältnamnen för indexet med namnet PrimaryKey.
Definiera en en-till-många-relation mellan varje primär tabell och kopplingstabellen.
Referensintegritet
Referensintegritet är ett regelsystem som Access använder för att se till att relationerna mellan poster i relaterade tabeller är giltiga och att du inte oavsiktligt tar bort eller ändrar relaterade data. Du kan ange referensintegritet när alla följande villkor är uppfyllda:
- Matchningsfältet från den primära tabellen är en primärnyckel eller har ett unikt index.
- De relaterade fälten har samma datatyp. Det finns två undantag. Ett Räknare-fält kan vara relaterat till ett talfält som har en
FieldSize
egenskapsinställning för Långt heltal och ett Räknare-fält som har enFieldSize
egenskapsinställning för Replikerings-ID kan vara relaterat till ett talfält som har enFieldSize
egenskapsinställning för Replikerings-ID. - Båda tabellerna tillhör samma Access-databas. Om tabellerna är länkade tabeller måste de vara tabeller i Access-format och du måste öppna databasen där de lagras för att ange referensintegritet. Referensintegritet kan inte tillämpas för länkade tabeller från databaser i andra format.
Följande regler gäller när du använder referensintegritet:
- Du kan inte ange ett värde i fältet sekundärnyckel i den relaterade tabellen som inte finns i primärnyckeln i den primära tabellen. Du kan dock ange ett Null-värde i främmande nyckeln. Detta anger att posterna inte är relaterade. Du kan till exempel inte ha en order som är tilldelad till en kund som inte finns. Du kan dock ha en order som inte har tilldelats någon genom att ange ett Null-värde i fältet CustomerID .
- Du kan inte ta bort en post från en primär tabell om det finns matchande poster i en relaterad tabell. Du kan till exempel inte ta bort en anställds post från tabellen "Anställda" om det finns order tilldelade till medarbetaren i tabellen "Beställningar".
- Du kan inte ändra ett primärnyckelvärde i den primära tabellen om den posten har relaterade poster. Du kan till exempel inte ändra en medarbetares ID i tabellen Anställda om det finns order tilldelade till den medarbetaren i tabellen "Beställningar".
Sammanhängande uppdateringar och borttagningar
För relationer där referensintegritet tillämpas kan du ange om du vill att Access automatiskt ska kaskaduppdatera eller kaskadborttagna relaterade poster. Om du anger de här alternativen aktiveras borttagnings- och uppdateringsåtgärder som vanligtvis förhindras av referensintegritetsregler. När du tar bort poster eller ändrar primärnyckelvärden i en primär tabell gör Access nödvändiga ändringar i relaterade tabeller för att bevara referensintegriteten.
Om du klickar för att markera kryssrutan Relaterade fält för kaskaduppdatering när du definierar en relation, varje gång du ändrar primärnyckeln för en post i den primära tabellen, uppdaterar Microsoft Access automatiskt den primära nyckeln till det nya värdet i alla relaterade poster. Om du till exempel ändrar kundens ID i tabellen "Kunder" uppdateras fältet CustomerID i tabellen "Beställningar" automatiskt för var och en av kundens beställningar så att relationen inte bryts. Få åtkomst till uppdateringar med kaskad utan att visa något meddelande.
Anmärkning
Om den primära nyckeln i den primära tabellen är ett Räknare-fält, har kryssrutan Relaterade fält för kaskaduppdatering ingen effekt eftersom du inte kan ändra värdet i ett Räknare-fält.
Om du markerar kryssrutan Ta bort relaterade poster med kaskadering när du definierar en relation, tar Access automatiskt bort relaterade poster i den relaterade tabellen när du tar bort poster i den primära tabellen. Om du till exempel tar bort en kundpost från tabellen "Kunder" tas alla kundens beställningar bort automatiskt från tabellen "Beställningar". (Detta inkluderar poster i tabellen "Orderdetaljer" som är relaterade till posterna "Beställningar"). När du tar bort poster från ett formulär eller datablad när kryssrutan Ta bort relaterade poster har markerats varnar Access dig om att relaterade poster också kan tas bort. Men när du tar bort poster med hjälp av en borttagningsfråga tar Access automatiskt bort posterna i relaterade tabeller utan att visa en varning.
Kopplingstyper
Det finns tre kopplingstyper. Du kan se dem i följande skärmbild:
Alternativ 1 definierar en inre koppling. En inre koppling är en koppling där poster från två tabeller kombineras i en frågas resultat endast om värdena i de kopplade fälten uppfyller ett angivet villkor. I en fråga är standardkopplingen en inre koppling som endast väljer poster om värdena i de kopplade fälten matchar.
Alternativ 2 definierar en vänster yttre sammanfogning. En vänster yttre koppling är en koppling där alla poster från vänster sida av åtgärden LEFT JOIN i frågans SQL-instruktion läggs till i frågans resultat, även om det inte finns några matchande värden i det kopplade fältet från tabellen till höger.
Alternativ 3 definierar en höger yttre koppling. En höger yttre koppling är en koppling där alla poster från höger sida av åtgärden RIGHT JOIN i frågans SQL-instruktion läggs till i frågans resultat, även om det inte finns några matchande värden i det kopplade fältet från tabellen till vänster.