Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Airtables gids voor veel-op-veel relaties

By admin on februari 24, 2021

Wat Airtable onderscheidt van gewone spreadsheet applicaties is zijn vermogen om gerelateerde concepten aan elkaar te koppelen. Weten hoe de relaties tussen verschillende groepen objecten moeten worden weergegeven, vergt enige oefening, maar door de verschillende soorten relaties te leren kennen, kunt u krachtige bases maken die de complexiteit van uw gegevens nauwkeuriger weergeven.

Dit artikel definieert de verschillende soorten relaties tussen lijsten van entiteiten en geeft voorbeelden, zodat u ze zelf kunt leren identificeren. Ook wordt uitgelegd hoe je veel-op-veel relaties kunt weergeven met behulp van een techniek die “junction tables” wordt genoemd.

Relatiesoorten

Een-op-een

One-to-many

Many-to-many-relaties en junction tables

Voorbeeld 1: Studenten en klassen

Voorbeeld 2: Sollicitanten en interviewers

Voorbeeld 3: Klanten, klantorders, producten, en fabrikanten

Gerekende velden en junction tables

Relatiesoorten

Airtable is een database. In databases zijn er een paar verschillende manieren om de relaties tussen verschillende lijsten van entiteiten te beschrijven.

Een-op-een

De eenvoudigste soort relatie is een een-op-een relatie. Stel, je hebt een lijst met namen van mensen, en een lijst met sofi-nummers. Elke persoon heeft maar één sofinummer, en elk sofinummer is gekoppeld aan één persoon. In de context van een Airtable-basis wordt een één-op-één-relatie gewoonlijk het best weergegeven door de twee lijsten met informatie samen te voegen in één tabel, met gebruikmaking van twee velden.

M2M-SSN.png

Het is ook mogelijk om een één-op-één-relatie aan te tonen met behulp van een gekoppeld recordveld binnen dezelfde tabel. Stel dat je een lijst hebt van deelnemers aan een kunstschaatswedstrijd. Voor elk paar personen dat deelneemt aan een schaatswedstrijd is de relatie één-op-één, omdat elke partner slechts één andere partner heeft. Als je in dit geval een gekoppeld recordveld zou maken waarin de tabel aan zichzelf is gekoppeld, dan zou het mogelijk zijn om een veld met partners in te vullen met recordlinks uit de grotere tabel met alle deelnemers.

image2.png

Eén-op-één-relaties zijn relatief zeldzaam, omdat het onwaarschijnlijk is dat beide zijden van een bepaalde relatie kunnen worden gekoppeld aan één en slechts één tegenhanger. Hier zijn enkele andere voorbeelden van één-op-één-relaties:

  • People-Passports (Elke persoon heeft slechts één paspoort van een bepaald land en elk paspoort is bestemd voor slechts één persoon.)
  • Landen-vlag (Elk land heeft maar één vlag en elke vlag hoort maar bij één land.)
  • Spousal-relaties (Elke persoon heeft maar één echtgenoot.)

Eén-op-veel

Een complexer (maar ook veel gebruikelijker) type relatie is één-op-veel/mens-op-één. Als je bijvoorbeeld een lijst met kunstwerken hebt en een lijst met musea, dan kan elk kunstwerk maar in één museum tegelijk zijn, maar elk museum kan wel veel kunstwerken hebben. Door deze twee lijsten van entiteiten (musea en kunstwerken) in een basis op te splitsen in twee tabellen kunt u informatie opslaan die relevant is voor elke entiteit. Voor kunstwerken zou dit informatie kunnen zijn zoals de kunstenaar en de datum van voltooiing, en voor musea zou dit informatie kunnen zijn over de openingstijden van het museum en het adres.

Als je een Airtable basis zou maken die een één-op-veel relatie weergeeft tussen een lijst van musea en een lijst van kunstwerken, zou je elk van deze lijsten in een tabel met musea en een tabel met werken kunnen plaatsen. Met behulp van gekoppelde recordvelden zou je het dan zo kunnen opzetten dat elk record in de werktabel gekoppeld is aan een museumrecord, en elk record in de museumtabel is gekoppeld aan een of meer records in de werktabel.

Museums.png

Works.png

Het zal vaak zinvol zijn om de twee helften van een one-to-many-relatie in afzonderlijke tabellen te hebben, maar wanneer alle entiteiten in de relatie van dezelfde klasse zijn, kan het zinvoller zijn om een tabel met zelfkoppeling te gebruiken. Stel bijvoorbeeld dat u een bedrijfsgids hebt met de namen van alle werknemers: u wilt de relaties tussen managers en hun ondergeschikten modelleren, aangezien elke manager vele werknemers beheert en elke werknemer slechts één manager heeft. Om dit te doen, zou u zelf-koppelende gekoppelde recordvelden kunnen maken voor de manager en ondergeschikten van elk individu.

Image_2020-08-27_at_12.41.34_PM.png

Hier volgen enkele andere voorbeelden van one-to-many-relaties:

  • People-Addresses (Elke persoon kan op één adres wonen, maar elk adres kan een of meer personen huisvesten.)
  • Eigenaren-Huisdieren (Elk huisdier heeft één eigenaar, maar elke eigenaar kan een of meer huisdieren hebben.)
  • Boer-Materieel (Elk landbouwwerktuig is eigendom van één boer, maar elke boer kan vele werktuigen bezitten.)

Many-to-many

Tot slot kunnen entiteiten ook een many-to-many-relatie hebben. Stel dat je een lijst met boeken hebt, en een lijst met auteurs – elk boek kan een of meer auteurs hebben, en elke auteur kan meerdere boeken hebben geschreven. In dit geval heb je veel boeken die gerelateerd zijn aan veel auteurs. In Airtable is het weergeven van de relatie tussen deze twee lijsten met entiteiten net zo eenvoudig als het maken van twee tabellen en het creëren van gekoppelde recordvelden.

In Airtable is het weergeven van een eenvoudige veel-op-veel relatie tussen twee lijsten met entiteiten net zo eenvoudig als het weergeven van een één-op-veel relatie. Met gekoppelde recordvelden kunt u het zo instellen dat elk record in de boekentabel gekoppeld is aan een of meer auteurrecords, en dat elk record in de auteurstabel gekoppeld is aan een of meer records in de boekentabel.

Auteurs.png

Books.png

Zoals bij één-op-één-relaties en één-op-veel-relaties is het soms zinvol om veel-op-veel-relaties in een enkele, zelf-linkende tabel weer te geven, bijvoorbeeld wanneer alle entiteiten tot dezelfde klasse behoren. Stel dat u de vriendschappen binnen een groep mensen wilt bijhouden. Elke persoon kan veel vrienden hebben, en elk van die vrienden kan op zijn beurt weer veel andere vrienden hebben. U zou deze veel-op-veel relatie in een enkele tabel kunnen bijhouden met een zelf-linkend recordveld.

dog.png

Hier volgen enkele andere voorbeelden van many-to-many-relaties:

  • Ingrediënten-Recipes (Elk voedingsmiddel kan in meerdere recepten worden gebruikt en elk recept vereist meerdere ingrediënten.)
  • Dokters-Patiënten (Elke dokter ziet meerdere patiënten en elke patiënt ziet meerdere dokters.)
  • Werknemers-Taken (Elke werknemer werkt aan vele taken tegelijk, terwijl aan elke taak door een of meer werknemers wordt gewerkt.)
  • Klanten-Producten (Elke klant kan vele producten kopen, en elk van die producten kan door vele verschillende klanten worden gekocht.

Many-to-many relaties en junction tables

Vaak is het weergeven van een many-to-many relatie in Airtable zo eenvoudig als het koppelen van twee tabellen aan elkaar. In sommige situaties moet u echter niet alleen weten dat er een relatie is tussen twee entiteiten – u moet ook andere informatie over die relatie kunnen uitdrukken en opslaan. In deze gevallen moet je een derde tabel maken, een zogenaamde junction (of join) table. Je kunt de junction table zien als een plaats om attributen van de relaties tussen twee lijsten van entiteiten op te slaan.

Voorbeeld 1: Studenten en klassen

Als dat abstract klinkt, laten we dan eens naar een specifiek voorbeeld kijken: Stel, je hebt een lijst met studenten en een lijst met klassen. Er is een veel-op-veel relatie tussen de studenten en hun klassen, want elke student kan meerdere klassen volgen, en voor elke klas kunnen meerdere studenten ingeschreven zijn. Je zou gewoon een tabel met studenten en een tabel met klassen kunnen maken, ze aan elkaar koppelen, en het daarbij laten. Maar wat als je informatie wilt opslaan over de cijfers van elke student in de klas? Of welk semester die student de les heeft gevolgd? Zet je deze informatie in de tabel met studenten, of in de tabel met klassen?

De cijfers van de studenten in hun klassen en de tijdstippen waarop zij de klassen volgden, kunnen worden beschouwd als attributen van de relaties tussen de studenten en de klassen waarin zij zich hebben ingeschreven. Aangezien de relaties elk hun eigen relevante lijsten met informatie hebben, is de beste manier om te werk te gaan het maken van een junction table.

Laten we deze junction table stap-voor-stap opbouwen. Stel dat je al een tabel met leerlingen en een tabel met klassen hebt.

Image_2020-08-27_at_2.06.13_PM.pngclasses.png

We kunnen een nieuwe tabel maken met een veld dat is gekoppeld aan leerlingen en een veld dat is gekoppeld aan klassen. Je kunt de tabel “Cijfers”, “Inschrijving”, “Studenten/Klassen” noemen, of wat je maar helpt herinneren dat deze tabel een verbindingstabel is tussen de tabellen Studenten en Klassen.

inschrijving.png

We moeten nog steeds het primaire veld voor deze verbindingstabel invullen. Een van de beste manieren om records in een junction table een naam te geven is door gebruik te maken van een formule, die gegevens uit andere velden in de tabel gebruikt om een unieke naam voor elk record samen te stellen. Dit kan bijzonder nuttig zijn voor een junction table, omdat de records die de relaties tussen concepten weergeven zich vaak niet bijzonder goed lenen voor een enkel uniek primair veld. Informatie die relevant is voor de relatie tussen een student en een klas (zoals het cijfer, of het semester waarin een klas werd gevolgd) kan ook in deze tabel worden gezet.

enrollment_2.png

Als we terugkeren naar de tabellen Students of Classes, zien we dat nieuwe velden die zijn gekoppeld aan de junction table automatisch zijn aangemaakt. U kunt rollup- of lookup-velden in deze tabellen maken om automatisch informatie uit de junction table naar de tabellen Students of Classes te halen.

students_2.png

Example 2: Sollicitanten en interviewers

Hier volgt een ander voorbeeld van wanneer u een junction table zou willen gebruiken: Je hebt een lijst met sollicitanten en een lijst met interviewers. Elke sollicitant doorloopt meerdere interviews met verschillende interviewers, en elke interviewer organiseert meerdere interviews met verschillende sollicitanten. Het interview kan worden gezien als de relatie tussen een sollicitant en een interviewer, en als zodanig hebben we een junction table nodig om informatie over elk interview op te slaan.

Applicants.png

Interviews.png

Interviewers.png

Exemplaar 3: Klanten, klantorders, producten en fabrikanten

Hier volgt een complexer voorbeeld. Stel dat u een Airtable-basis wilt maken met lijsten van klanten en hun orders, en producten en hun fabrikanten. Elke klant kan veel orders plaatsen, maar elke order is slechts aan één klant gekoppeld:

Op dezelfde manier kan elke fabrikant veel producten maken, maar elk product kan slechts één fabrikant hebben:

Elke klantorder kan veel producten hebben, en elk product kan deel uitmaken van veel klantorders:

Het probleem hier is echter dat er geen goede plaats is om informatie op te slaan over de hoeveelheid van elk product in de specifieke order van een klant. De oplossing is om een verbindingstabel te maken tussen de klantbestellingen en de productentabellen, die we de tabel met bestelregelitems kunnen noemen.

Hier volgt een voorbeeld van hoe dat er in een Airtable-basis uit zou zien. De cliententabel is gekoppeld aan de clientbestellingentabel:

Clients.png

De clientbestellingentabel is gekoppeld aan de cliententabel en aan de orderregelitems tabel:

Client_Orders.png

De tabel met bestelregelitems neemt de koppelingen van de tabel met producten en de tabel met klantenbestellingen, en de hoeveelheid van elk product, om unieke primaire veldwaarden voor elk van de regels te maken.

Order_Line_Items.png

De tabel met producten is gekoppeld aan de orderregelitems en de fabrikanten:

Products.png

En de fabrikantentabel is gekoppeld aan de productentabel in een één-op-veel relatie.

Fabrikanten.png

Gerekende velden en verbindingstabellen

Wanneer u zoveel gekoppelde velden hebt, is het belangrijk om lookup- en rollup-velden in uw voordeel te gebruiken om de hoeveelheid gegevensinvoer die u moet uitvoeren tot een minimum te beperken.

Voorstellend dat u een veld in de tabel met klantbestellingen wilt hebben dat automatisch de totale kosten van de bestelling van een individuele klant berekent. Om dit te doen, zou u de informatie over de kosten per eenheid uit de productentabel in de tabel met bestelregelitems opnemen met behulp van een lookup-veld.

Lookup.gif

Daarna zou u met een formule de totale kosten per regelitem kunnen berekenen.

Formule.gif

En ten slotte kunt u een rollup-veld in de tabel met klantorders gebruiken om de totale kosten van alle regelitems in een bepaalde klantorder op te tellen.

rollup.gif

Berichtnavigatie

The Mamas & the Papas
Avril Lavigne

Geef een reactie Antwoord annuleren

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Meest recente berichten

  • 9 Beste Vitaminen en Supplementen voor honden voor een betere gezondheid
  • CD-rentevoorspelling voor 2021: Tarieven blijven waarschijnlijk laag, maar kunnen later in het jaar stijgen
  • Hoe de documentatie van het kwaliteitsmanagementsysteem te structureren
  • Chronische bekkenpijn en prostatitis: symptomen, diagnose en behandeling
  • Mixed Berry Crisp
  • Koolhydraatarm chocoladepuddingrecept
  • Gezonde spelletjes en activiteiten voor kinderen | UIC Online Informatics
  • De voordelen van borstvoeding na één jaar
  • Is het veilig om koffiedik door de gootsteen te spoelen | Atomic Plumbing
  • Onze werkzaamheden

Meta

  • Inloggen
  • Berichten feed
  • Reacties feed
  • WordPress.org

Archief

  • maart 2021
  • februari 2021
  • januari 2021
  • december 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com