Bijgewerkt op 7 februari 2022
Het verschil tussen relates (vaak table relates genoemd) en relationship classes is een bron van veel verwarring, vooral voor nieuwe ArcGIS-gebruikers. Hoewel ze vergelijkbaar klinken, verwijzen de termen naar verschillende dingen. Beide hebben voordelen en er zijn redenen om elk van hen te gebruiken. Hier zijn de belangrijkste zaken om te weten.
- Een relate bestaat in een kaart- of laagbestand.
- Een relationship class is een object in een geodatabase.
- Relates kunnen worden gemaakt en bewerkt met een ArcGIS Pro of ArcGIS Desktop Basic, Standard, of Advanced-licentie.
- Relationship classes kunnen worden gemaakt en bewerkt met een ArcGIS Pro of ArcGIS Desktop Standard of Advanced-licentie. Ze zijn alleen-lezen met een Basic-licentie.
Alles duidelijk nu? Nee? Laten we dan verder gaan.
De terminologie ontleden
Relates zijn geweldig omdat ze je in staat stellen om functies in een laag te selecteren en vervolgens gemakkelijk gerelateerde functies in een andere laag of gerelateerde records in een niet-ruimtelijke tabel te zien. Relationship classes zijn geweldig omdat ze "slim gedrag" mogelijk maken. Je kunt regels instellen voor hoe de deelnemende feature classes of tabellen zich gedragen wanneer er iets gebeurt. Bijvoorbeeld, met een relationship class ingesteld, als een feature wordt verwijderd, kan het bijbehorende record in de andere feature class of tabel ook automatisch worden verwijderd.
Zowel relates als relationship classes vertrouwen op cardinality, wat beschrijft hoe records in twee verschillende tabellen aan elkaar gerelateerd zijn — cardinality kan één-op-één, één-op-veel, veel-op-één, of veel-op-veel zijn.
- Eén-op-één: Elke feature heeft precies één gerelateerd record in de andere tabel.
- Eén-op-veel: Features in de ene tabel kunnen meer dan één gerelateerd record in de andere tabel hebben.
- Veel-op-één: Meerdere features in de ene tabel hebben één gerelateerd record in de andere tabel.
- Veel-op-veel: Meerdere features in de ene tabel hebben meerdere records in de andere tabel.
Relates ondersteunen één-op-veel en veel-op-één cardinaliteiten, terwijl relationship classes alle cardinaliteiten ondersteunen. Feature classes en tabellen die deelnemen aan een relate of een relationship class moeten een veld van hetzelfde gegevenstype hebben (tekst, korte integer, lange integer, object ID, enz.). Dat veld zal het "verbindingspunt" (ook wel key field genoemd) tussen de twee zijn.
Het Relate Voorbeeld
De onderstaande kaart bevat een laag met brandweerkazernes en een niet-ruimtelijke tabel die gegevens opslaat over het personeel van de brandweer van de stad. Er is een relate gemaakt tussen de laag en de niet-ruimtelijke tabel, die een één-op-veel cardinaliteit hebben (elke brandweerkazerne heeft meerdere personeelsleden). De relate is gebaseerd op een korte integer veld in beide tabellen dat een brandweerkazerne-ID nummer opslaat. De velden hebben verschillende namen, maar dat maakt helemaal niet uit.

Dankzij de relate is het gemakkelijk om te achterhalen welk personeel aan welke brandweerkazerne is toegewezen. Gebruik gewoon het Identify-gereedschap en klik op een brandweerkazerne op de kaart. In het Identify-venster wordt onder de naam van het brandweerkazerne-object de naam van de gerelateerde tabel weergegeven. Het uitvouwen van de tabel toont de records die aan die kazerne zijn gekoppeld (in dit voorbeeld het Washington-kazerne, dat zes toegewezen personeelsleden heeft).

Stel dat Brian Butler wordt overgeplaatst naar het Adams-kazerne. Zijn record in de FirePersonnel-tabel wordt bewerkt om het Washington-kazerne nummer (2) te vervangen door het Adams-kazerne nummer (202). Wanneer de bewerking wordt opgeslagen, zullen de gegevens die in het Identify-venster worden getoond zijn nieuwe toewijzing weerspiegelen. Washington heeft nu slechts vijf toegewezen personeelsleden...

...terwijl de personeelslijst van het Adams-kazerne nu Brian bevat.

Het Relationship Class Voorbeeld
Tabel relates zijn superhandig om snel featuregegevens te bekijken die in aparte tabellen zijn opgeslagen (voor efficiënte gegevensbeheerdoeleinden). Relationship classes geven je echter de mogelijkheid om meer te doen dan alleen gemakkelijk gegevens bekijken. Met een relationship class kun je regels en eigenschappen instellen die bepalen wat er gebeurt wanneer gegevens in een van beide tabellen worden bewerkt. Je kunt ook ervoor zorgen dat alleen geldige bewerkingen worden uitgevoerd.
Gebruikmakend van het bovenstaande voorbeeld, stel dat er een relationship class genaamd StationsPersonnel is gemaakt tussen de Fire Stations feature class en Fire Personnel-tabel. Stel ook dat de stad vereist dat alle kazernes minimaal vijf toegewezen brandweerlieden en maximaal 15 toegewezen brandweerlieden hebben. Er is een regel gemaakt in de relationship class om aan deze eis te voldoen.

Met Brian Butlers overplaatsing naar het Adams-kazerne blijft Washington over met vijf toegewezen brandweerlieden. Jean Fiorini heeft echter om overplaatsing gevraagd en haar verzoek is goedgekeurd. Een GIS-technicus die verantwoordelijk is voor het onderhouden van de GIS-gegevens van de brandweer werkt Jeans record bij in de personeelslijst met het nieuwe kazerne nummer. Ze krijgt een bericht dat waarschuwt dat deze bewerking een regel heeft geschonden.
- Opmerking: Afhankelijk van welke versie van ArcGIS je gebruikt en hoe de relationship class is geconfigureerd, kunnen bewerkingen die conflicteren met een regel van de relationship class mogelijk niet worden geaccepteerd.
De database weet dat zonder Jean Washington minder dan vijf toegewezen personeelsleden zal hebben. Om aan de regel van de relationship class te voldoen, moet de technicus eerst een brandweerman toevoegen aan het Washington-kazerne en daarna Jeans record aanpassen om haar nieuwe kazerne-toewijzing weer te geven.
Een relationship class is bedoeld om ervoor te zorgen dat alle gegevensbewerkingen geldig zijn en dat de GIS-database van een organisatie nauwkeurig weerspiegelt en ondersteunt wat er in de echte wereld nodig is. Stel dat degene die Jeans overplaatsing goedkeurde niet besefte dat Washington dan nog maar vier brandweerlieden zou hebben. De regel van de relationship class bracht die belangrijke informatie aan het licht, en we gaan ervan uit dat de GIS-technicus dit probleem communiceert om verlies van eigendom of levens later door onvoldoende bezetting te voorkomen.
Wil je meer leren over relates en relationship classes? Kijk dan eens naar deze helponderwerpen:
Voor gedetailleerde training en praktische oefening met relates, relationship classes en andere geodatabase-mogelijkheden die gegevensintegriteit afdwingen, volg onze Managing Geospatial Data in ArcGIS-cursus.