Aktualizováno 7. února 2022
Rozdíl mezi relates (často nazývanými table relates) a relationship classes je zdrojem mnoha nejasností, zejména pro nové uživatele ArcGIS. Přestože znějí podobně, tyto termíny označují různé věci. Oba mají své výhody a existují důvody pro použití každého z nich. Zde jsou hlavní věci, které je třeba vědět.
- Relate existuje v mapě nebo souboru vrstvy.
- Relationship class je objekt v geodatabázi.
- Relates lze vytvářet a upravovat s licencí ArcGIS Pro nebo ArcGIS Desktop Basic, Standard nebo Advanced.
- Relationship classes lze vytvářet a upravovat s licencí ArcGIS Pro nebo ArcGIS Desktop Standard nebo Advanced. S Basic licencí jsou pouze pro čtení.
Je to teď jasné? Ne? Pokračujme tedy dál.
Rozklad terminologie
Relates jsou skvělé, protože vám umožňují vybrat prvky ve vrstvě a pak snadno vidět související prvky v jiné vrstvě nebo související záznamy v nespatné tabulce. Relationship classes jsou skvělé, protože umožňují „chytré chování“. Můžete nastavit pravidla, jak se mají účastnící třídy prvků nebo tabulky chovat, když se něco stane. Například s existující relationship class, pokud je prvek smazán, může být jeho přidružený záznam v jiné třídě prvků nebo tabulce automaticky také smazán.
Oba relates i relationship classes se opírají o cardinality, která popisuje, jak jsou záznamy ve dvou různých tabulkách navzájem propojeny – cardinality může být jeden-na-jeden, jeden-na-mnoho, mnoho-na-jeden nebo mnoho-na-mnoho.
- Jeden-na-jeden: Každý prvek má přesně jeden související záznam v druhé tabulce.
- Jeden-na-mnoho: Prvky v jedné tabulce mohou mít více než jeden související záznam v druhé tabulce.
- Mnoho-na-jeden: Více prvků v jedné tabulce má jeden související záznam v druhé tabulce.
- Mnoho-na-mnoho: Více prvků v jedné tabulce má více záznamů v druhé tabulce.
Relates podporují cardinality jeden-na-mnoho a mnoho-na-jeden, zatímco relationship classes podporují všechny cardinality. Třídy prvků a tabulky, které se účastní relate nebo relationship class, musí mít pole stejného datového typu (text, krátké celé číslo, dlouhé celé číslo, object ID atd.). Toto pole bude „spojovacím bodem“ (také klíčové pole) mezi oběma.
Příklad Relate
Následující mapa obsahuje vrstvu požárních stanic a nespatnou tabulku, která ukládá data o personálu městského hasičského sboru. Byl vytvořen relate mezi vrstvou a nespatnou tabulkou, které mají cardinalitu jeden-na-mnoho (každá požární stanice má více zaměstnanců). Relate je založen na poli krátkého celého čísla v obou tabulkách, které ukládá ID číslo požární stanice. Pole mají různá jména, ale to vůbec nevadí.

Díky relate je snadné zjistit, kteří zaměstnanci jsou přiřazeni ke které požární stanici. Stačí použít nástroj Identify a kliknout na požární stanici na mapě. V okně Identify se pod názvem prvku požární stanice zobrazí název související tabulky. Rozbalením tabulky se zobrazí záznamy spojené s touto stanicí (v tomto příkladu Washingtonská stanice, která má šest přiřazených zaměstnanců).

Předpokládejme, že Brian Butler je přeložen na Adamsovu stanici. Jeho záznam v tabulce FirePersonnel je upraven tak, že místo čísla Washingtonské stanice (2) je uvedeno číslo Adamsovy stanice (202). Po uložení úpravy se data zobrazená v okně Identify aktualizují podle jeho nového přiřazení. Washingtonská stanice má nyní pouze pět přiřazených zaměstnanců...

...zatímco seznam personálu Adamsovy stanice nyní zahrnuje Briana.

Příklad Relationship Class
Table relates jsou velmi užitečné pro rychlý náhled na data prvků uložená v samostatných tabulkách (pro efektivní správu dat). Relationship classes vám však umožňují dělat víc než jen snadný náhled dat. S relationship class můžete nastavit pravidla a vlastnosti, které kontrolují, co se stane při úpravách dat v kterékoliv z tabulek. Můžete také zajistit, že budou provedeny pouze platné úpravy.
Použijme výše uvedený příklad: předpokládejme, že byla vytvořena relationship class pojmenovaná StationsPersonnel mezi třídou prvků Fire Stations a tabulkou Fire Personnel. Také předpokládejme, že město vyžaduje minimálně pět a maximálně patnáct přiřazených hasičů na každé stanici. V relationship class bylo vytvořeno pravidlo k prosazení tohoto požadavku.

S přeložením Briana Butlera na Adamsovu stanici zůstává Washingtonská stanice s pěti přiřazenými hasiči. Jean Fiorini však požádala o přeložení a její žádost byla schválena. GIS technik odpovědný za údržbu GIS dat hasičského sboru aktualizuje Jeanin záznam v personální tabulce novým číslem stanice. Zobrazí se jí zpráva varující ji, že úprava porušila pravidlo.
- Poznámka: V závislosti na verzi ArcGIS a konfiguraci relationship class nemusí být úpravy konfliktující s pravidlem relationship class akceptovány.
Databáze ví, že bez Jean bude mít Washington méně než pět přiřazených zaměstnanců. Aby bylo dodrženo pravidlo relationship class, měl by technik nejprve přidat hasiče do Washingtonské stanice a poté upravit Jeanin záznam tak, aby odrážel její nové přiřazení ke stanici.
Cílem relationship class je zajistit platnost všech úprav dat a aby GIS databáze organizace přesně odrážela a podporovala potřeby reálného světa. Představme si, že osoba schvalující Jeanino přeložení si neuvědomila, že Washingtonská stanice bude mít pouze čtyři hasiče. Pravidlo relationship class tuto klíčovou informaci odhalilo a předpokládáme, že GIS technik problém oznámí, aby se zabránilo ztrátám majetku nebo životů kvůli nedostatečnému obsazení.
Chcete se dozvědět více o relates a relationship classes? Zkontrolujte tyto témata nápovědy:
Pro podrobné školení a praktické cvičení s relates, relationship classes a dalšími schopnostmi geodatabáze prosazujícími integritu dat absolvujte náš kurz Managing Geospatial Data in ArcGIS.