Probeer het zelf
Het voordeel van een relationele database is dat u gegevens uit verschillende tabellen kunt combineren. Hiervoor moet u eerst relaties tussen de tabellen maken. Vervolgens kunt u in Access automatisch gegevens in query's, formulieren en rapporten combineren.
Als u alle bestaande relaties wilt bekijken die zijn gedefinieerd voor een database, opent u een Access-sjabloon, gaat u naar het tabblad Hulpmiddelen voor databases en selecteert u Relaties.
Opmerking: Als u een lege database opent of nog geen tabelrelaties hebt gedefinieerd, wordt u gevraagd een tabel of query toe te voegen. U hebt minimaal twee tabellen nodig voordat u een relatie kunt toevoegen. In het ideale geval maakt u eerst al uw tabellen. Zie Relaties maken met de Wizard Opzoeken en Relaties maken met het deelvenster Relaties voor meer informatie.
De weergave Relaties
Met de regels in de weergave Relaties wordt het verband tussen de tabellen aangegeven. In de volgende afbeelding is de linkertabel de bovenliggende tabel. De rechtertabel is de onderliggende tabel. De lijn tussen de tabellen verbindt de velden (in dit geval Order-id en Product-id) die worden gebruikt om gegevens te vergelijken.
Lijnen en symbolen geven aan hoe de tabellen zijn gerelateerd:
-
Een dikke verbindingslijn betekent dat u referentiële gegevensintegriteit wilt afdwingen. Dat is goed. Hierdoor blijven uw gegevens gesynchroniseerd.
-
Het cijfer 1 in de afbeelding geeft aan dat er slechts één overeenkomende record in de tabel kan zijn. In de tabel Orders die hier wordt weergegeven, komt er slechts één record overeen met elke order.
-
Het symbool ∞ geeft aan dat veel records dezelfde id kunnen hebben. In de tabel Ordergegevens die hier wordt weergegeven, kan een order (aangegeven met de order-id) meerdere keren worden weergegeven omdat dezelfde order meerdere producten kan bevatten.
Typen relaties tussen tabellen
Er zijn drie typen relaties tussen tabellen:
-
Een-op-een. Wanneer elk item in elke tabel slechts één keer voorkomt. Elke werknemer kan bijvoorbeeld maar één bedrijfsauto gebruiken. Zie Een-op-een-relaties maken voor meer informatie.
-
Een-op-veel. Wanneer een item in een tabel een relatie kan hebben met meerdere items in een andere tabel. Elke inkooporder kan bijvoorbeeld meerdere producten bevatten.
-
Veel-op-veel. Wanneer een of meer items in een tabel een relatie kunnen hebben met een of meer items in een andere tabel. Elke order kan bijvoorbeeld meerdere producten bevatten en elk product kan voorkomen in een groot aantal orders. Zie Veel-op-veelrelaties maken voor meer informatie.
Een-op-veel-relaties
Een van de meest voorkomende relaties tussen tabellen in een goed ontworpen database is de een-op-veel-relatie.
Normaal gesproken zijn relaties tussen tabellen afhankelijk van de primaire sleutel in een van de tabellen. De primaire sleutel is een unieke id (vaak numeriek) voor elke record. Als u wilt aangeven dat de gegevens in twee verschillende tabellen zijn gerelateerd, maakt u gewoonlijk een relatie met de primaire sleutel van een van de tabellen.
In de relatie die hier wordt weergegeven, heeft bijvoorbeeld elke persoon in de tabel Contactpersonen een id die de primaire sleutel is (die wordt aangegeven met het sleutelsymbool ernaast). Deze id wordt ook weergegeven in het veld Eigenaar in de tabel Activa. Als u een e-mail wilt sturen aan de persoon die aan een activum is gekoppeld, haalt u de waarde op uit het veld E-mailadres. Hiervoor zoekt u naar de waarde in het veld Eigenaar van de tabel Activa en zoekt u vervolgens naar de desbetreffende id in de tabel Contactpersonen. Het cijfer 1 aan het uiteinde van de verbindingslijn en het symbool ∞ aan het andere uiteinde geven aan dat dit een een-op-veel-relatie is, dus één contactpersoon kan zijn gekoppeld aan een groot aantal activa.
Een relatie bewerken
Als u een bestaande database wijzigt of de database hebt gemaakt met behulp van een sjabloon, kunt u de bestaande relaties aan uw wensen aanpassen.
Opmerking: Als de tabellen waarmee u wilt werken in gebruik zijn, moet u deze eerst sluiten, samen met de geopende objecten waarin deze worden gebruikt.
-
Selecteer Hulpmiddelen voor databases > Relaties.
-
Selecteer de lijn die twee gerelateerde tabellen verbindt.
Tip: Als de gewenste relatie niet wordt weergegeven, selecteert u op het tabblad Ontwerp in de groep Relaties de optie Alle relaties.
-
Selecteer op het tabblad Ontwerp de optie Relaties bewerken.
Tabel/query is de bovenliggende tabel aan de linkerkant (in dit voorbeeld Klanten).
Gerelateerde tabel/query is de onderliggende tabel (in dit voorbeeld Orders).
Ook als de tabellen niet in deze volgorde worden weergegeven in de weergave Relaties, geeft de positie in het dialoogvenster de richting aan van de lijn waarmee deze worden verbonden en de relatie. Dit is belangrijk bij een-op-veel-relaties omdat de tabel aan de linkerkant staat voor 'een' (de bovenliggende tabel) en de tabel aan de rechterkant voor 'veel' (de onderliggende tabel).
-
Als u de velden wilt wijzigen waarmee de tabellen worden verbonden, selecteert u een ander veld onder elke tabel die wordt weergegeven. In dit voorbeeld wordt het veld Id in de tabel Klanten verbonden met het veld Klant-id in de tabel Orders.
-
Wijzig de manier waarop uw gegevens tussen tabellen worden gesynchroniseerd.
Referentiële integriteit afdwingen
Selecteer deze optie om ongeldige gegevens te voorkomen en ervoor te zorgen dat verwijzingen in tabelrelaties gesynchroniseerd blijven.
U hebt bijvoorbeeld een een-op-een-relatie tussen de tabellen Werknemers en Werknemervergoedingen. Als een werknemer het bedrijf verlaat en u deze uit de tabel Werknemers verwijdert, wordt de gerelateerde werknemersrecord in de tabel Werknemervergoedingen ook verwijderd.
Soms heeft het afdwingen van referentiële integriteit geen zin. Stel dat u een een-op-veel-relatie hebt tussen verzenders en orders. U verwijdert een verzender en die verzender wordt toegewezen aan orders in de tabel Orders. Deze orders worden zwevende orders, wat betekent dat ze nog steeds een verzender-id bevatten, maar de id is niet meer geldig omdat de record waarnaar wordt verwezen niet meer bestaat.
Gerelateerde velden trapsgewijs bijwerken
Selecteer deze optie om ervoor te zorgen dat gegevens in de gerelateerde velden worden bijgewerkt in alle gerelateerde tabellen.
U wilt bijvoorbeeld de id van een verzender wijzigen. Als u deze optie instelt, zorgt u ervoor dat de verzender-id wordt bijgewerkt, niet alleen in de tabel Verzender, maar ook in andere tabellen die hieraan zijn gekoppeld en deze verzender-id bevatten, zoals de tabel Orders.
Gerelateerde records trapsgewijs verwijderen
De selectie van deze optie hangt af van de vraag of u records in bepaalde tabellen wilt behouden, ook al worden deze mogelijk verwijderd uit andere tabellen.
U verwijdert bijvoorbeeld een verzender. Als u deze optie selecteert, worden alle records verwijderd in alle tabellen die verwijzen naar deze verzender-id, inclusief alle orders (in de tabel Orders) die door deze verzender zijn verzonden. Selecteer deze optie alleen als u zeker weet dat u de ordergeschiedenis wilt verwijderen.
-
Als u de relatie tussen de tabellen wilt wijzigen van een inner join in een outer join, selecteert u de knop Jointype. Zie Query's maken met outer joins voor meer informatie.
Een tabelrelatie verwijderen
Opmerking: Als de tabellen waarmee u wilt werken in gebruik zijn, moet u deze eerst sluiten, samen met de geopende objecten waarin deze worden gebruikt.
Een tabelrelatie verwijderen:
-
Selecteer Hulpmiddelen voor databases > Relaties.
-
Selecteer de lijn die de twee gerelateerde tabellen verbindt.
Tip: Als de gewenste relatie niet wordt weergegeven, selecteert u op het tabblad Ontwerp in de groep Relaties de optie Alle relaties.
-
Selecteer de Delete-toets. Als u wordt gevraagd om te bevestigen dat u de relatie wilt verwijderen, selecteert u Ja.
Opmerking: Als u een relatie verwijdert, wordt ook de ondersteuning voor referentiële integriteit voor deze relatie verwijderd. Hierdoor wordt niet langer automatisch voorkomen dat er wijzigingen worden doorgevoerd die resulteren in zwevende records aan de 'veel'-kant van een een-op-veel-relatie.