Relaties
Als u gerelateerde tabellen wilt maken, definieert u een relatie tussen twee tabellen. Een relatie wordt tot stand gebracht wanneer de waarde in een veld, genaamd het vergelijkingsveld (soms een sleutelveld genoemd), aan de ene zijde van de relatie met succes wordt vergeleken met een waarde in het vergelijkingsveld aan de andere zijde van de relatie overeenkomstig de criteria die u in de relatie opgeeft.
U kunt bijvoorbeeld een relatie maken zodanig dat als de waarde in het veld ‘Studentnummer’ in de tabel ‘Studenten’ gelijk is aan de waarde in het veld ‘Studentnummer’ in de tabel ‘Leervakken’, de records in de twee tabellen gerelateerd zijn.
Raadpleeg Werken met de relatiegrafiek om de relaties in uw database te maken, te wijzigen en te bekijken.
Gebruikte velden in relaties
Een vergelijkingsveld kan één veld of een combinatie van velden zijn die een record in een tabel identificeert. Een vergelijkingsveld kan bijvoorbeeld datums bevatten die bepalen of de relatie succesvol is als ze met de criteria van de relatie worden vergeleken.
Een sleutel is een soort vergelijkingsveld. Sleutels bevatten doorgaans waarden die als ID’s worden gebruikt (zoals een productcode). Er zijn twee soorten sleutels:
- primaire sleutel – een veld dat zich in dezelfde tabel bevindt als de record die het identificeert. De waarde van een primaire sleutel moet uniek zijn en mag niet leeg zijn. Er bestaat slechts één primaire sleutel in een tabel maar de sleutel kan uit meer dan één veld bestaan. Standaard bevat een nieuwe tabel een primaire-sleutelveld wanneer u een bestand maakt of een tabel maakt in het dialoogvenster ‘Database beheren’.
- refererende sleutel – een veld in een tabel dat een record in een andere tabel identificeert. Waarden in refererende sleutels moeten niet uniek zijn in de tabel en ze mogen leeg zijn. Een tabel mag meerdere refererende sleutels bevatten.
In de database ‘Verkoop’ kunnen de tabellen ‘Klanten’ en ‘Facturen’ het veld ‘Klantnr.’ gebruiken om elke klant en elke aankoop uniek te identificeren. Het veld ‘Klantnr.’ in de tabel ‘Klanten’ is een primaire-sleutelveld omdat dit veld elke klant uniek identificeert. Het veld ‘Klantnr.’ in de tabel ‘Factuur’ is een refererende-sleutelveld omdat de waarden ervan afkomstig zijn vanuit een andere tabel (in dit voorbeeld de tabel ‘Klanten’). Maar het veld ‘Klantnr.’ is in beide tabellen een vergelijkingsveld.
Wanneer de twee tabellen zijn gerelateerd via het veld ‘Klantnr.’, kan een record in de tabel ‘Klanten’ een portaal weergeven waarin elke factuur met een overeenkomend klantnummer wordt weergegeven, en kunnen in de tabel ‘Facturen’ op elke factuur met hetzelfde klantnummer de vaste gegevens van de klant worden weergegeven.
FileMaker Pro zoekt de geïndexeerde waarden van vergelijkingsvelden in een gerelateerde tabel om te bepalen welke gerelateerde records aan de relatiecriteria voor een record in de huidige tabel voldoen. Daarom moeten de vergelijkingsvelden in de gerelateerde tabel kunnen worden geïndexeerd.
Vergelijkingsvelden moeten een van de volgende veldtypen zijn: tekst, getal, datum, tijd, tijdstempel of berekening (met als resultaat tekst, getal, datum, tijd of tijdstempel).
Soorten relaties
Relaties bevorderen de invoer van consistente gegevens en leggen regels in een database op. FileMaker Pro ondersteunt de volgende soorten relaties.
Soort relatie |
Beschrijving |
Eén-op-één |
Eén record in een tabel wordt aan slechts één record in een tabel gekoppeld. Raadpleeg Eén-op-één-relaties. |
Eén-op-veel of |
Eén record in een tabel kan aan één of meer records in een andere tabel worden gekoppeld. Of één of meer records in een tabel kunnen worden gekoppeld aan één record in een andere tabel. Raadpleeg Eén-op-veel-relaties. |
Interne relatie |
Beide primaire sleutels zijn in twee vermeldingen van dezelfde tabel gedefinieerd. Raadpleeg Interne relaties. |
Een ander soort relatie is een veel-op-veel-relatie. Relationele databasesystemen staan doorgaans niet toe dat u een rechtstreekse veel-op-veel-relatie tussen twee tabellen implementeert. U kunt wel een database ontwerpen die veel-op-veel-relaties ondersteunt door een derde, tussenliggende tabel te gebruiken. Raadpleeg Veel-op-veel-relaties.
Opmerkingen
- Een vergelijkingsveld voor één relatie kan een doelveld voor opzoekdefinities zijn, op voorwaarde dat de opzoekdefinitie is gebaseerd op een andere relatie.
- Aangezien globaalvelden niet kunnen worden geïndexeerd, kunt u ze niet gebruiken als vergelijkingsvelden in een gerelateerde tabel. U kunt ze wel als vergelijkingsvelden in de huidige tabel gebruiken.
- Met relaties kunt u ook uw gegevens groeperen om complexe zoekopdrachten op te lossen. Relaties kunnen bijvoorbeeld de huidige voorraadniveaus, verkoopverwachtingen en andere taken bepalen waarbij het nodig is om gegevens in meerdere tabellen op te vragen.
- Gebruik toegangsprivileges in de brontabel om de toegang tot gerelateerde gegevens te beperken of te verhinderen. Gebruikers die willen nagaan welke gerelateerde velden in een relatie zijn gedefinieerd, moeten bijvoorbeeld beschikken over toegangsprivileges om een gerelateerd vergelijkingsveld te kunnen zien.