FileMaker Pro

Veel-op-veelrelaties in FileMaker Pro maken en begrijpen

Wat moet ik weten om in FileMaker Pro met veel-op-veelrelaties te werken?

Een relationele database bestaat uit gegevens en informatie die georganiseerd is in verschillende tabellen. Een tabel wordt gebruikt om één specifieke groep van informatie te definiëren, zoals een klantentabel voor een bedrijf of een tabel met producten die de organisatie verkoopt. Elke record in die tabel moet een "sleutelveld" bevatten. Dat is een veld dat, of combinatie van velden die, een record (rij) in een tabel op unieke wijze identificeert. Een sleutelveld wordt ook wel "primaire sleutel" en "vreemde sleutel" genoemd. Een "primaire sleutel" is een sleutelveld dat zich bevindt in dezelfde tabel als de record die het identificeert. Een "vreemde sleutel" is een sleutelveld dat een record in een andere tabel identificeert. Een goed begrip van het verschil tussen een primaire sleutel en een vreemde sleutel komt goed van pas bij het gebruik van veel-op-veelrelaties in FileMaker Pro.

Het ontwerp van relationele databases biedt ondersteuning voor vele soorten relaties tussen tabellen. Deze relaties beletten de invoer van inconsistente gegevens en dwingen referentiële integriteit af. FileMaker Pro ondersteunt de volgende typen relaties:

Eén-op-veel-relaties

De meest gebruikte relatie bij het creëren van relationele databases. Een rij in een tabel in een database kan worden gekoppeld aan één of (waarschijnlijk) meer rijen in een andere tabel. Eén bestelling van meerdere artikelen is een goed voorbeeld van een één-op-veel-relatie. En aangezien relaties in twee richtingen werken, wordt er ook wel eens verwezen naar veel-op-één-relaties.

Eén-op-één-relaties

Een rij in een tabel is gekoppeld aan één rij, en alleen die ene rij, in een andere tabel. Zo kan bijvoorbeeld een persoon slechts één burgerservicenummer hebben en een burgerservicenummer kan slechts aan één persoon zijn toegewezen. Dat is een uitstekend voorbeeld van een één-op-één-relatie.
In de meeste gevallen is er geen behoefte aan een één-op-één-relatie omdat de inhoud van beide tabellen in één tabel kan worden gecombineerd.

Veel-op-veel-relaties

Eén of meer rijen in een tabel zijn gekoppeld aan één of meer rijen in een andere tabel. Een schoolvoorbeeld van een veel-op-veel-relatie is een tabel met klanten die vele producten kunnen kopen en vele producten die door veel klanten kunnen worden gekocht.

 

Bij het ontwerp van een relationele database is een veel-op-veel-relatie niet toegestaan. Vergelijk dit met uw facturatie. Als er “vele” facturen zouden zijn met hetzelfde factuurnummer en één van uw klanten zou navraag doen over dat factuurnummer; hoe kunt u dan weten over welke specifieke factuur hij het heeft? Dat kunt u gewoon niet kunnen weten. Daarom moet elke factuur een unieke “ID” hebben.

Als u het probleem van een veel-op-veel-relatie wilt vermijden, dient u de veel-op-veel-relatie te splitsen in twee één-op-veel-relaties. Dat is mogelijk met een derde tabel, een zogeheten “samenvoegtabel”. Elke record in de “samenvoegtabel” beschikt over de vreemde sleutelvelden van de beide tabellen die worden samengevoegd. De vreemde sleutelvelden in de samenvoegtabel hebben geen speciale verwerking nodig. Deze worden ingevuld met gegevens uit de andere twee tabellen wanneer records worden gemaakt. Het is niet ongebruikelijk dat een samenvoegtabel een groot aantal records bevat – records worden immers in de samenvoegtabel gemaakt wanneer records worden gemaakt in de twee tabellen die deze derde tabel samenvoegt.

Een samenvoegtabel instellen in FileMaker Pro:

Voor ons voorbeeld bespreken we hier een gebruikelijk veel-op-veel-scenario: Studenten en Leervakken. We hebben een tabel Studenten die voor elke student een record bevat, en een tabel Leervakken die voor elk aangeboden leervak een record bevat. Het primaire-sleutelveld StudentID identificeert een student in de studententabel op unieke wijze. Evenzo identificeert het primaire-sleutelveld LeervakID op unieke wijze een leervak in de tabel Leervakken. Een student kan vele leervakken volgen en voor een leervak kunnen vele studenten zich inschrijven. Deze twee tabellen aan elkaar relateren zou moeilijk zijn zonder het gebruik van een samenvoegtabel. De samenvoegtabel zal de primaire sleutels uit de tabellen Studenten en Leervakken bevatten. Daarbij kunt u de samenvoegtabel elke gewenste naam geven. In ons voorbeeld noemen we de samenvoegtabel “Inschrijvingen”.

  1. Maak in FileMaker Pro een nieuwe tabel en noem deze "Inschrijvingen".
  2. Maak in de tabel “Inschrijvingen” een primaire-sleutelveld met de naam “InschrijvingenID.” Deze stap is niet nodig voor de correcte werking van de samenvoegtabel, maar voor relationele databases verdient het aanbeveling om elke tabel een primaire sleutel te geven.
  3. Maak in de tabel "Inschrijvingen” ten minste de velden “StudentID” en “LeervakID”. Aangezien deze velden worden ingevuld wanneer in de tabel “Studenten” of “Leervakken” records worden gemaakt, hebt u geen opties voor automatische veldinvoer nodig.
  4. Zo nodig kunt u nog extra velden toevoegen aan de tabel “Inschrijvingen”. Enkele voorbeelden van andere velden die in aanmerking zouden kunnen komen voor de tabel “Inschrijvingen” zijn: een veld “datum” om bij te houden wanneer iemand aan een leervak is begonnen of een veld “kosten” om bij te houden hoeveel iemand voor een leervak heeft betaald. Samenvoegtabellen bevatten doorgaans velden die logischerwijs niet thuishoren in een van de andere tabellen.
  5. Relateer de tabellen aan elkaar met behulp van de primaire en vreemde sleutels.

Als een student zich voor drie leervakken heeft ingeschreven, zou die student één record in de tabel Studenten hebben, maar zou hij/zij ook drie records in de tabel “Inschrijvingen” hebben – één voor elk leervak waarvoor hij/zij zich heeft ingeschreven. Een extra voordeel van het gebruik van een samenvoegtabel is dat u toegang kunt krijgen tot velden en tabellen zonder een aparte relatie te hoeven maken. In ons voorbeeld zou het heel makkelijk zijn om zo nodig informatie uit de tabel Studenten weer te geven in de tabel Leervakken en omgekeerd.


Help mij kiezen

Vind de juiste FileMaker producten voor uw organisatie.

Help me choose

FileMaker Technical Network

Een wereld van GRATIS
bronnen binnen handbereik

Technet

Schrijf u vandaag nog in en ontvang
de training die u op
eigen tempo kan volgen