Aktualizováno 7. února 2022
Zdá se, že kolem pojmů „relate“ a „relationship class“ vždy panilo zmatení. V tomto příspěvku se pokusíme toto vyjasnit. Ukázkové snímky obrazovky jsou z ArcMap, ale koncepty platí i pro ArcGIS Pro.
Základy
- Relate (také nazývaný table relate) je vlastnost vrstvy v ArcGIS Pro nebo ArcMap. Vytvoříte table relate, abyste mohli dotazovat a vybírat prvky v jedné vrstvě a vidět všechny související prvky v jiné vrstvě nebo tabulce. Table relate existuje pouze v mapě nebo souboru vrstvy (.lyr).

- Relationship class je objekt v geodatabázi, který ukládá informace o vztahu mezi dvěma feature classes, mezi feature class a nonspatial table, nebo mezi dvěma nonspatial tables. Oba účastníci v relationship class musí být uloženi ve stejné geodatabázi.
- Kardinalita řídí, jak jsou relates a relationship classes nastaveny. Kardinalita není míra zápalu fanouška baseballu ze St. Louis, je to popis toho, jak jsou záznamy ve dvou různých tabulkách navzájem propojeny. Kardinalita může být one-to-one, one-to-many, many-to-one nebo many-to-many.
- Table relates jsou vytvářeny mezi tabulkami, které mají one-to-many nebo many-to-one kardinalitu. Relationship classes podporují všechny kardinality.
- Při vytváření table relate nebo relationship class určíte pole v každé tabulce, na kterém bude vztah založen. Pole musí být stejného datového typu (např. text, short integer, long integer, object ID atd.).
- Relates lze vytvářet a upravovat s licencí Basic, Standard nebo Advanced.
- Relationship classes lze vytvářet a upravovat s licencí Standard nebo Advanced. S Basic licencí jsou pouze pro čtení.
Je to teď jasnější? Ne? Dobře, pojďme se do toho ponořit více.
Příklad

V obsahu mapy výše vidíte vrstvu městských požárních stanic a nonspatial table, která ukládá data o personálu městského hasičského sboru. Mezi vrstvou a nonspatial table byl vytvořen table relate založený na poli short integer v každé tabulce, které ukládá ID číslo požární stanice.
Co se stane, když je na mapě vybrána stanice?
Níže vidíte atributovou tabulku vrstvy požárních stanic a tabulku hasičského personálu. Je použita možnost zobrazit pouze vybrané prvky u obou tabulek. Všimněte si, že zatímco je vybrán pouze jeden záznam požární stanice (stanice Washington), v tabulce hasičského personálu je vybráno šest záznamů.

Toto vám říká, že vrstva Fire Stations má one-to-many kardinalitu s tabulkou fire personnel. Pro každou požární stanici je přiřazáno více hasičů. V tomto případě je ke stanici Washington přiřazáno šest hasičů. Protože jsou tabulky propojené, když vyberete stanici, můžete snadno zjistit, kdo na stanici pracuje. Table relates jsou obousměrné, což znamená, že můžete také vybrat záznam v tabulce fire personnel a získat název stanice, ke které je hasič přiřazen.
Není třeba ani vybírat prvek nebo otevírat tabulky; informace můžete rychle zobrazit pomocí nástroje Identify. Název související tabulky se zobrazí pod názvem prvku na levé straně okna Identify. Rozbalením související tabulky se zobrazí související záznamy. Kliknutím na související záznam se zobrazí data uložená v související tabulce.

Řekněme, že Brian Butler přechází na stanici Adams. Budete upravovat tabulku FirePersonnel tak, aby to odrážela. Zde jsou kroky k provedení této změny podle našeho příkladu.
- Zahajte editační relaci.
- V tabulce Fire Personnel vyberte záznam Briana Butlera.
- V poli Number_ změňte hodnotu na 1714 (ID číslo stanice Adams).
- Zavřete tabulku a uložte úpravy.
- Klikněte na stanici Adams pomocí nástroje Identify.
- Brian Butler se nyní objeví v seznamu personálu přiřazeného ke stanici Adams.

- Klikněte na stanici Washington pomocí nástroje Identify.
- Záznam Briana Butlera se již nezobrazuje.

Proč používat Relationship Class?
Table relates jsou užitečné pro rychlý přístup a zobrazení informací o reálném světě uložených ve skutečnosti ve dvou různých tabulkách. Relationship classes však nabízejí silnější možnosti.
Kromě výběru záznamů v jedné tabulce a zobrazení souvisejících záznamů v druhé můžete s relationship class nastavit pravidla a vlastnosti, které řídí co se stane při úpravách dat v kterékoliv tabulce a zajistit tak platnost úprav. Můžete nastavit relationship class tak, aby úprava záznamu v jedné tabulce automaticky aktualizovala související záznamy v druhé tabulce.
Použijme výše uvedený příklad: předpokládejme, že je vytvořena relationship class mezi vrstvou Fire Stations a tabulkou fire personnel. Město má požadavek, že všechny stanice musí mít minimálně pět hasičů a maximálně patnáct hasičů. Pro relationship class bylo vytvořeno pravidlo odrážející tento požadavek.
Na konci příkladu s table relate měla stanice Washington přiřazeno pět hasičů. Nyní s existující relationship class pokud se někdo pokusí přiřadit jinému hasičovi ze stanice Washington jiné číslo stanice, zobrazí se chybová zpráva a pochopí, že existuje pravidlo vyžadující minimálně pět hasičů na každé stanici. Před úpravou čísla stanice u existujícího hasiče musí nejprve přiřadit nového hasiče ke stanici Washington. Poté mohou změnit číslo stanice u existujícího hasiče ze stanice Washington tak, aby odráželo přesun.
Relationship class zajišťuje platnost úprav dat a podporuje cíl hasičského sboru zajistit dodržování požadavků města ohledně personálního obsazení stanic.
Pamatujte
- Table relates existují pouze v mapě nebo souboru vrstvy.
- Relationship classes existují jako samostatné objekty v geodatabázi. Pokud je jedna z účastnických tabulek odstraněna z geodatabáze, je také odstraněna i relationship class.
- Jak table relates tak i relationship classes umožňují uživatelům přístup k informacím o souvisejících prvcích z obou tabulek.
- Relationship classes se často používají k zajištění integrity dat. Pomáhají učinit vaši geodatabázi inteligentní.
O relates a relationship classes by šlo říct mnohem více, ale ve snaze o jednoduchost zde příspěvek ukončíme. Doufejme, že některé nejasnosti byly rozptýleny. Pro více informací k tomuto tématu si přečtěte toto
téma nápovědy.