Met een relatie in Access kunt u gegevens in twee verschillende tabellen combineren. Elke relatie bestaat uit velden in twee tabellen met overeenkomende gegevens. U kunt bijvoorbeeld een veld Product-id hebben in een tabel Producten en in een tabel Ordergegevens. Elke record in de tabel Ordergegevens heeft een product-id die correspondeert met een record met dezelfde product-id in de tabel Producten.
Wanneer u gerelateerde tabellen in een query gebruikt, kan aan de hand van de relatie worden bepaald welke records uit elke tabel moeten worden gecombineerd in de resultatenset. Met een relatie kunt u ook voorkomen dat er gegevens ontbreken, omdat verwijderde gegevens gesynchroniseerd blijven. Dit wordt referentiële integriteit genoemd.
Voordat u met relaties gaat werken, zorgt u ervoor dat u de achtergrondconcepten begrijpt. Zie Handleiding voor tabelrelaties en Aan de slag met tabelrelaties.
In dit artikel
Overzicht
In een Access-database kunt u een tabelrelatie op een van de volgende manieren maken:
-
Voeg de tabellen die u wilt relateren toe in het venster Relaties en sleep het veld dat u wilt relateren van de ene tabel naar de andere.
-
Sleep een veld naar een tabelgegevensblad vanuit het deelvenster Lijst met velden.
Wanneer u een relatie tussen tabellen maakt, hoeven de gemeenschappelijke velden niet per se dezelfde namen te hebben, hoewel dit in de praktijk meestal wel het geval is. De gemeenschappelijke velden moeten hetzelfde gegevenstype hebben. Als het primaire-sleutelveld een veld van het type AutoNummering is, mag het externe-sleutelveld echter ook een veld van het type Numeriek zijn op voorwaarde dat de eigenschap Veldlengte van beide velden identiek is. U kunt een AutoNummering-veld bijvoorbeeld aan een veld van het type Numeriek koppelen als de eigenschap Veldlengte van beide velden is ingesteld op Lange integer. Wanneer beide gemeenschappelijke velden van het type Numeriek zijn, moet de eigenschap Veldlengte voor beide velden ook dezelfde instelling hebben.
Een tabelrelatie maken met het venster Relaties
-
Ga naar het tabblad Hulpmiddelen voor databases en klik in de groep Relaties op Relaties.
-
Klik op het tabblad Relaties ontwerpen in de groep Relaties op Tabellen toevoegen.
-
Selecteer een of meer tabellen of query's en klik vervolgens op Toevoegen. Als u klaar bent met het toevoegen van tabellen en query's aan het documenttabblad Relaties, klikt u op Sluiten.
-
Sleep een veld (meestal de primaire sleutel) van een tabel naar het gemeenschappelijke veld (de refererende sleutel) in de andere tabel. Als u meerdere velden wilt slepen, houdt u Ctrl ingedrukt, klikt u op de gewenste velden en versleept u deze.
Het dialoogvenster Relaties bewerken wordt geopend. -
Controleer of de weergegeven veldnamen de gemeenschappelijke velden voor de relatie zijn. Als een veldnaam onjuist is, klikt u op de veldnaam en selecteert u het juiste veld in de lijst.Referentiële integriteit afdwingen voor meer informatie over referentiële integriteit.
Als u referentiële integriteit wilt afdwingen voor deze relatie, schakelt u het selectievakje Referentiële integriteit afdwingen in. Zie het gedeelte -
Klik op Maken.
Er wordt een relatielijn tussen de twee tabellen getekend. Als u het selectievakje Referentiële integriteit afdwingen hebt ingeschakeld, wordt de lijn aan beide einden dikker weergegeven. Daarnaast wordt (ook alleen als u het selectievakje Referentiële integriteit afdwingen hebt ingeschakeld) het nummer 1 weergegeven boven het dikke gedeelte aan de ene kant van de relatielijn en het oneindigheidsteken (8) boven het dikke gedeelte aan de andere kant van de lijn, zoals te zien is in de volgende afbeelding.
Notities:
-
Een een-op-een-relatie maken Beide gemeenschappelijke velden (meestal het primaire- en refererende-sleutelveld) moeten een unieke index bevatten. Dit betekent dat de eigenschap Geïndexeerd voor deze velden moet zijn ingesteld op Ja (geen duplicaten). Als beide velden een unieke index hebben, wordt in Access een een-op-een-relatie gemaakt.
-
Een een-op-veel-relatie maken Het veld aan de een-kant (meestal de primaire sleutel) van de relatie moet een unieke index bevatten. Dit betekent dat de eigenschap Geïndexeerd van dit veld moet zijn ingesteld op Ja (geen duplicaten). Het veld aan de veel-kant mag geen unieke index bevatten. Dit veld kan een index bevatten, maar duplicaten moeten worden toegestaan. Dit betekent dat de eigenschap Geïndexeerd van dit veld moet zijn ingesteld op Nee of op Ja (duplicaten OK). Als één veld een unieke index bevat en het andere veld niet, wordt in Access een een-op-veel-relatie gemaakt.
-
Een tabelrelatie maken door een veld toe te voegen uit het deelvenster Lijst met velden
Aan een bestaande tabel die in de gegevensbladweergave is geopend kunt u een veld toevoegen door het veld te slepen vanuit het deelvenster Lijst met velden. Het deelvenster Lijst met velden bevat velden die beschikbaar zijn in gerelateerde tabellen en ook velden die beschikbaar zijn in andere tabellen in de database.
Wanneer u een veld uit een 'andere' (niet-gerelateerde) tabel sleept en vervolgens de wizard Opzoeken uitvoert, wordt er automatisch een nieuwe een-op-veel-relatie gemaakt tussen de tabel in het deelvenster Lijst met velden en de tabel waar u het veld naartoe hebt gesleept. Bij deze relatie wordt referentiële integriteit niet standaard afgedwongen. Als u referentiële integriteit wilt afdwingen, moet u de relatie bewerken. Zie het gedeelte Een relatie bewerken voor meer informatie.
Een tabel in de gegevensbladweergave openen
-
Dubbelklik in het navigatiedeelvenster op de tabel.
Het deelvenster Lijst met velden openen
-
Druk op Alt+F8. Het deelvenster Lijst met velden wordt weergegeven.
In het deelvenster Lijst met velden worden alle andere tabellen in de database weergegeven, ingedeeld in categorieën. Als u met een tabel werkt in de gegevensbladweergave, worden de velden in het deelvenster Lijst met velden weergegeven in een van beide volgende categorieën: In gerelateerde tabellen beschikbare velden en In andere tabellen beschikbare velden. In de eerste categorie staan alle tabellen die een relatie hebben met de tabel die u momenteel hebt geopend. In de tweede categorie staan alle tabellen waarmee de tabel waaraan u werkt geen relatie heeft.
Als u in het deelvenster Lijst met velden op het plusteken (+) naast een tabelnaam klikt, wordt een lijst weergegeven met alle velden die beschikbaar zijn in deze tabel. Als u een veld aan de tabel wilt toevoegen, sleept u het gewenste veld vanuit het deelvenster Lijst met velden naar de tabel in de gegevensbladweergave.
Een veld toevoegen en een relatie maken vanuit het deelvenster Lijst met velden
-
Druk op Alt+F8 terwijl de tabel is geopend in de gegevensbladweergave. Het deelvenster Lijst met velden wordt weergegeven.
-
Klik onder In andere tabellen beschikbare velden op het plusteken (+) naast een tabelnaam om de lijst met velden in die tabel weer te geven.
-
Sleep het gewenste veld vanuit het deelvenster Lijst met velden naar de tabel die is geopend in de gegevensbladweergave.
-
Wanneer de invoeglijn verschijnt, zet u het veld op die positie neer.
De wizard Opzoeken wordt gestart.
-
Volg de aanwijzingen om de wizard Opzoeken te voltooien.
Het veld wordt weergegeven in de gegevensbladweergave.
Wanneer u een veld uit een 'andere' (niet-gerelateerde) tabel sleept en vervolgens de wizard Opzoeken uitvoert, wordt er automatisch een nieuwe een-op-veel-relatie gemaakt tussen de tabel in het deelvenster Lijst met velden en de tabel waar u het veld naartoe hebt gesleept. Bij deze relatie wordt referentiële integriteit niet standaard afgedwongen. Als u referentiële integriteit wilt afdwingen, moet u de relatie bewerken. Zie het gedeelte Een relatie bewerken voor meer informatie.
Een relatie bewerken
U kunt een relatie wijzigen door deze te selecteren in het venster Relaties en de relatie vervolgens te bewerken.
-
Plaats de cursor zodanig dat deze naar de relatielijn wijst en klik vervolgens op de lijn om deze te selecteren.
De relatielijn wordt dikker weergegeven wanneer deze wordt geselecteerd.
-
Dubbelklik op de geselecteerde relatielijn.
–of–
Klik op het tabblad Relaties ontwerpen in de groep Extra op Relaties bewerken.
Het dialoogvenster Relaties bewerken wordt geopend.
Het dialoogvenster Relaties bewerken openen
-
Ga naar het tabblad Hulpmiddelen voor databases en klik in de groep Relaties op Relaties.
-
Klik op het tabblad Relaties ontwerpen in de groep Relaties op Alle relaties.
Alle tabellen met relaties worden weergegeven en de relatielijnen zijn zichtbaar. Verborgen tabellen (tabellen waarvoor het selectievakje Verborgen is ingeschakeld in het dialoogvenster Eigenschappen van de tabel) en de bijbehorende relaties worden niet weergegeven, tenzij Verborgen objecten weergeven is ingeschakeld in het dialoogvenster Navigatieopties.
-
Klik op de relatielijn van de relatie die u wilt wijzigen. De relatielijn wordt dikker weergegeven zodra u deze selecteert.
-
Dubbelklik op de relatielijn.
-of-
Klik op het tabblad Relaties ontwerpen in de groep Extra op Relaties bewerken.
Het dialoogvenster Relaties bewerken wordt geopend.
-
Breng de wijzigingen aan en klik op OK.
In het dialoogvenster Relaties bewerken kunt u een tabelrelatie wijzigen. U kunt met name de tabellen, query's of velden aan beide kanten van de relatie wijzigen. Daarnaast kunt u het jointype instellen of referentiële integriteit afdwingen en een stapsgewijze bewerking kiezen. Zie het gedeelte Het jointype instellen voor meer informatie over het jointype en hoe u het moet instellen. Zie het gedeelte Referentiële integriteit afdwingen voor meer informatie over de wijze waarop u referentiële integriteit kunt afdwingen en een stapsgewijze bewerking kunt kiezen.
Het jointype instellen
Wanneer u een tabelrelatie definieert, vormen de feiten over de relatie de basis van uw queryontwerpen. Als u bijvoorbeeld een relatie tussen twee tabellen definieert en vervolgens een query maakt waarin de twee tabellen worden gebruikt, worden in Access automatisch de overeenkomende standaardvelden geselecteerd op basis van de velden die in de relatie zijn opgegeven. U kunt deze eerste standaardwaarden wijzigen in de query, maar de waarden die door de relatie zijn opgegeven, zijn vaak de juiste waarden. Aangezien het vergelijken en samenbrengen van gegevens uit meerdere tabellen iets is wat u vaker doet in de meeste databases, is het instellen van standaardwaarden via het maken van relaties tijdbesparend en praktisch.
In een query voor meerdere tabellen wordt informatie uit meerdere tabellen gecombineerd door in gemeenschappelijke velden naar overeenkomstige waarden te zoeken. De bewerking waarmee het zoeken en combineren wordt uitgevoerd, wordt een join genoemd. Stel dat u orders van klanten wilt weergeven. U maakt een query die de tabel Klanten aan de tabel Orders koppelt op basis van het veld Klantnummer. Het queryresultaat bevat alleen de klantgegevens en ordergegevens van de rijen waarvoor een overeenkomende waarde is gevonden.
Het jointype is een van de waarden die u voor elke relatie kunt opgeven. Aan de hand van het jointype kan worden bepaald welke records moeten worden opgenomen in het queryresultaat. Denk bijvoorbeeld aan een query waarmee de tabel Klanten aan de tabel Orders wordt gekoppeld op basis van de gemeenschappelijke velden die het Klantnummer vertegenwoordigen. Met behulp van het standaardjointype (een inner join genoemd) retourneert de query alleen de rijen Klanten en de rijen Order waarvoor de gemeenschappelijke velden (ook wel de gekoppelde velden genoemd) identiek zijn.
Stel nu dat het queryresultaat alle klanten moet retourneren, ook de klanten die nog geen orders hebben geplaatst. Hiervoor moet u het jointype veranderen van een inner join in wat een left outer join wordt genoemd. Een left outer join retourneert alle rijen uit de tabel aan de linkerkant van de relatie en alleen die rijen uit de rechtertabel die een overeenkomende waarde bevatten. Een right outer join retourneert alle rijen uit de rechtertabel en alleen die rijen uit de linkertabel die een overeenkomende waarde bevatten.
Opmerking: In dit geval verwijzen 'left' en 'right' naar de positie van de tabellen in het dialoogvenster Relaties bewerken, niet in het venster Relaties.
Bedenk eerst welk het resultaat u meestal verwacht van een query waarmee de tabellen in deze relatie aan elkaar worden gekoppeld. Stel vervolgens dienovereenkomstig het jointype in.
Het jointype instellen
-
Klik in het dialoogvenster Relaties bewerken op Jointype.
Het dialoogvenster Joineigenschappen wordt geopend.
-
Selecteer uw keuze en klik vervolgens op OK.
In de volgende tabel (waarin de tabellen Klanten en Orders worden gebruikt) ziet u de drie keuzemogelijkheden in het dialoogvenster Joineigenschappen, het type join dat wordt gebruikt en of voor beide tabellen alle rijen of alleen de overeenkomende rijen worden geretourneerd.
Keuze |
Type join |
Linkertabel |
Rechtertabel |
---|---|---|---|
1. Alleen rijen waarvoor de gekoppelde velden uit beide tabellen identiek zijn opnemen. |
Inner join |
Overeenkomende rijen |
Overeenkomende rijen |
2. Alle records uit Klanten en alleen records uit Orders waarvoor de gekoppelde velden identiek zijn opnemen. |
Left outer join |
Alle rijen |
Overeenkomende rijen |
3. Alle records uit Orders en alleen records uit Klanten waarvoor de gekoppelde velden identiek zijn opnemen. |
Right outer join |
Overeenkomende rijen |
Alle rijen |
Als u optie 2 of 3 kiest, verschijnt er een pijl op de relatielijn. Deze pijl wijst naar de kant van de relatie die alleen overeenkomende rijen weergeeft.
Wijzigingen aanbrengen in het dialoogvenster Joineigenschappen
-
Klik op het tabblad Hulpmiddelen voor databases in de groep Relaties op Relaties.
-
Klik op het tabblad Relaties ontwerpen in de groep Relaties op Alle relaties.
Alle tabellen met relaties worden weergegeven en de relatielijnen zijn zichtbaar. Verborgen tabellen (tabellen waarvoor het selectievakje Verborgen is ingeschakeld in het dialoogvenster Eigenschappen van de tabel) en de bijbehorende relaties worden niet weergegeven, tenzij Verborgen objecten weergeven is ingeschakeld in het dialoogvenster Navigatieopties. -
Klik op de relatielijn van de relatie die u wilt wijzigen. De relatielijn wordt dikker weergegeven zodra u deze selecteert.
-
Dubbelklik op de relatielijn. Het dialoogvenster Relaties bewerken wordt geopend.
-
Klik op Jointype.
-
Selecteer in het dialoogvenster Join-eigenschappen een optie en klik vervolgens op OK.
-
Breng eventuele aanvullende wijzigingen aan in de relatie en klik op OK.
Referentiële integriteit afdwingen
Referentiële integriteit is bedoeld om te voorkomen dat records verwijzen naar records die niet meer bestaan. U dwingt referentiële integriteit af door deze optie in te schakelen voor een tabelrelatie. Wanneer deze optie is ingeschakeld, worden alle bewerkingen geweigerd die in strijd zijn met de referentiële integriteit van die tabelrelatie. Dit betekent dat zowel wijzigingen waarmee het doel van een verwijzing wordt gewijzigd als verwijderingen waarmee het doel van een verwijzing wordt verwijderd, niet worden geaccepteerd. Zie het gedeelte De opties voor trapsgewijze bewerkingen instellen als u referentiële wijzigingen en verwijderingen wilt doorvoeren, zodat alle rijen overeenkomstig worden gewijzigd.
Referentiële integriteit in- of uitschakelen
-
Klik op het tabblad Hulpmiddelen voor databases in de groep Relaties op Relaties.
-
Klik op het tabblad Relaties ontwerpen in de groep Relaties op Alle relaties.
Alle tabellen met relaties worden weergegeven en de relatielijnen zijn zichtbaar. Verborgen tabellen (tabellen waarvoor het selectievakje Verborgen is ingeschakeld in het dialoogvenster Eigenschappen van de tabel) en de bijbehorende relaties worden niet weergegeven, tenzij Verborgen objecten weergeven is ingeschakeld in het dialoogvenster Navigatieopties. -
Klik op de relatielijn van de relatie die u wilt wijzigen. De relatielijn wordt dikker weergegeven zodra u deze selecteert.
-
Dubbelklik op de relatielijn. Het dialoogvenster Relaties bewerken wordt geopend.
-
Schakel Referentiële integriteit afdwingen in of uit.
-
Breng eventuele aanvullende wijzigingen aan in de relatie en klik op OK.
Als u referentiële integriteit afdwingt, gelden de volgende regels:
-
Een waarde kan alleen in het externe-sleutelveld van een gerelateerde tabel worden geplaatst als deze waarde al aanwezig is in het primaire-sleutelveld van de primaire tabel. Anders worden er niet-gekoppelde records gemaakt.
-
Een record kan niet uit een primaire tabel worden verwijderd als er overeenkomstige records bestaan in een gerelateerde tabel. U kunt bijvoorbeeld geen record van een werknemer uit de tabel Werknemers verwijderen als er orders aan deze werknemer zijn toegewezen in de tabel Orders. U kunt echter wel een primaire record en alle gerelateerde records in één bewerking verwijderen door het selectievakje Gerelateerde records trapsgewijs verwijderen in te schakelen.
-
Een primaire-sleutelwaarde in de primaire tabel kan niet worden gewijzigd als hierdoor niet-gekoppelde records zouden ontstaan. U kunt bijvoorbeeld geen ordernummer in de tabel Orders wijzigen als er regelitems aan die order zijn toegewezen in de tabel Orderinformatie. U kunt echter wel een primaire record en alle gerelateerde records in één bewerking bijwerken door het selectievakje Gerelateerde velden trapsgewijs bijwerken in te schakelen.
Notities: Als u problemen ondervindt bij het inschakelen van referentiële integriteit, moet u ermee rekening houden dat referentiële integriteit pas kan worden afgedwongen nadat u aan de volgende voorwaarden hebt voldaan:
-
Het gemeenschappelijke veld van de primaire tabel moet een primaire sleutel zijn of een unieke index bevatten.
-
De gemeenschappelijke velden moeten hetzelfde gegevenstype bevatten. De enige uitzondering hierop is dat een AutoNummering-veld kan zijn gerelateerd aan een Nummer-veld waarvan de eigenschap Veldgrootte is ingesteld op Lange integer.
-
Beide tabellen moeten tot dezelfde Access-database behoren. Referentiële integriteit kan niet worden afgedwongen op gekoppelde tabellen. Als de brontabellen echter de bestandsindeling van Access hebben, kunt u de database openen waarin de tabellen zijn opgeslagen en referentiële integriteit in die database inschakelen.
-
De opties voor trapsgewijze bewerkingen instellen
In bepaalde situaties moet u mogelijk de waarde aan de een-kant van een relatie wijzigen. In dit geval wilt u dat in Access alle beïnvloede rijen automatisch worden bijgewerkt met één bewerking. Op deze manier wordt de update volledig uitgevoerd, zodat de database geen inconsistenties bevat, waarbij sommige rijen wel en andere rijen niet zijn bijgewerkt. In Access kunt u dit probleem vermijden met de optie Gerelateerde velden trapsgewijs bijwerken. Als u een primaire sleutel bijwerkt terwijl referentiële integriteit wordt afgedwongen en u de optie Gerelateerde velden trapsgewijs bijwerken hebt ingeschakeld, worden in Access automatisch alle velden bijgewerkt die naar de primaire sleutel verwijzen.
In sommige gevallen kan het nodig zijn een rij en alle gerelateerde records te verwijderen, bijvoorbeeld een record Transporteur en alle gerelateerde orders voor die transporteur. Daarom biedt Access ondersteuning voor de optie Gerelateerde records trapsgewijs verwijderen. Stel dat u referentiële integriteit hebt afgedwongen en het selectievakje Gerelateerde records trapsgewijs verwijderen hebt ingeschakeld. Als u vervolgens de record verwijdert die de primaire sleutel bevat, worden alle records die naar de primaire sleutel verwijzen ook automatisch verwijderd.
Trapsgewijs bijwerken en/of trapsgewijs verwijderen in- of uitschakelen
-
Klik op het tabblad Hulpmiddelen voor databases in de groep Relaties op Relaties.
-
Klik op het tabblad Relaties ontwerpen in de groep Relaties op Alle relaties.
Alle tabellen met relaties worden weergegeven en de relatielijnen zijn zichtbaar. Verborgen tabellen (tabellen waarvoor het selectievakje Verborgen is ingeschakeld in het dialoogvenster Eigenschappen van de tabel) en de bijbehorende relaties worden niet weergegeven, tenzij Verborgen objecten weergeven is ingeschakeld in het dialoogvenster Navigatieopties. -
Klik op de relatielijn van de relatie die u wilt wijzigen. De relatielijn wordt dikker weergegeven zodra u deze selecteert.
-
Dubbelklik op de relatielijn.
Het dialoogvenster Relaties bewerken wordt geopend. -
Schakel het selectievakje Referentiële integriteit afdwingen in.
-
Schakel een van de selectievakjes Gerelateerde velden trapsgewijs bijwerken of Gerelateerde records trapsgewijs verwijderen in of schakel beide selectievakjes in.
-
Breng eventuele aanvullende wijzigingen aan in de relatie en klik vervolgens op OK.
Opmerking: Als de primaire sleutel een AutoNummering-veld is, gebeurt er niets als u het selectievakje Gerelateerde velden trapsgewijs bijwerken inschakelt omdat de waarde in een AutoNummering-veld niet kan worden gewijzigd.
Een tabelrelatie verwijderen
Belangrijk: Als u een relatie verwijdert, wordt ook de ondersteuning voor referentiële integriteit voor die relatie verwijderd (indien deze is ingeschakeld). Dit heeft tot gevolg dat het maken van niet-gekoppelde records aan de 'veel'-kant van de relatie niet langer meer automatisch wordt voorkomen.
Als u een tabelrelatie wilt verwijderen, moet u de relatielijn verwijderen in het venster Relaties. Plaats de cursor zodanig dat deze naar de relatielijn wijst en klik vervolgens op de lijn. De relatielijn wordt dikker weergegeven wanneer deze is geselecteerd. Druk op DELETE terwijl de relatielijn is geselecteerd.
-
Klik op het tabblad Hulpmiddelen voor databases in de groep Relaties op Relaties.
-
Klik op het tabblad Relaties ontwerpen in de groep Relaties op Alle relaties.
Alle tabellen met relaties worden weergegeven en de relatielijnen zijn zichtbaar. Verborgen tabellen (tabellen waarvoor het selectievakje Verborgen is ingeschakeld in het dialoogvenster Eigenschappen van de tabel) en de bijbehorende relaties worden niet weergegeven, tenzij Verborgen objecten weergeven is ingeschakeld in het dialoogvenster Navigatieopties. -
Klik op de relatielijn van de relatie die u wilt verwijderen. De relatielijn wordt dikker weergegeven wanneer deze wordt geselecteerd.
-
Druk op Del.
-
Het kan zijn dat het bericht Weet u zeker dat u de geselecteerde relatie permanent uit de database wilt verwijderen? wordt weergegeven. Klik op Ja als dit bevestigingsbericht verschijnt.
Opmerking: Indien een van de tabellen in de tabelrelatie in gebruik is (bijvoorbeeld door een ander persoon of een ander proces) of zich in een geopend databaseobject bevindt (bijvoorbeeld een formulier) kunt u de relatie niet verwijderen. U moet de eventueel geopende objecten die van deze tabellen gebruikmaken eerst sluiten voordat u de relatie probeert te verwijderen.
Zie ook
Een opzoekveld aan een tabel toevoegen
Twee tabellen vergelijken in Access en alleen overeenkomende gegevens zoeken