2022年2月7日更新
relates(しばしばtable relatesと呼ばれる)とrelationship classesの違いは、多くの混乱の原因となっており、特に新しい ArcGIS ユーザーにとってはそうです。似たような言葉ですが、これらの用語は異なるものを指します。どちらにも利点があり、それぞれを使う理由があります。ここでは主なポイントを説明します。
- relate は マップまたはレイヤーファイル内に存在します。
- relationship class は ジオデータベース内のオブジェクトです。
- relates は ArcGIS Pro または ArcGIS Desktop の Basic、Standard、または Advanced ライセンスで作成および編集できます。
- relationship classes は ArcGIS Pro または ArcGIS Desktop の Standard または Advanced ライセンスで作成および編集できます。Basic ライセンスでは読み取り専用です。
これでわかりましたか?まだですか?それでは続けましょう。
用語の分解
relates は、あるレイヤー内のフィーチャを選択し、別のレイヤー内の関連フィーチャや非空間テーブル内の関連レコードを簡単に見ることができるため便利です。relationship classes は「スマートな動作」を可能にするため優れています。参加しているフィーチャクラスやテーブルが何か起こったときにどのように振る舞うかのルールを設定できます。例えば、relationship class がある場合、フィーチャが削除されると、その関連する他のフィーチャクラスやテーブル内のレコードも自動的に削除されることがあります。
relates と relationship classes の両方は cardinality に依存しています。これは異なる2つのテーブル間でレコードがどのように関連しているかを表し、cardinality は一対一、一対多、多対一、多対多があります。
- 一対一: 各フィーチャには他方のテーブルに正確に1つの関連レコードがあります。
- 一対多: あるテーブル内のフィーチャは他方のテーブルに複数の関連レコードを持つことがあります。
- 多対一: あるテーブル内の複数のフィーチャが他方のテーブルに1つの関連レコードを持ちます。
- 多対多: あるテーブル内の複数のフィーチャが他方のテーブルに複数のレコードを持ちます。
relates は一対多および多対一の cardinality をサポートし、relationship classes はすべての cardinality をサポートします。relate または relationship class に参加するフィーチャクラスやテーブルは同じデータ型(テキスト、ショート整数、ロング整数、オブジェクトIDなど)のフィールドを持っている必要があります。そのフィールドが2つをつなぐ「接続点」(別名キー フィールド)となります。
Relate の例
以下のマップには消防署レイヤーと、市消防局職員についてデータを格納する非空間テーブルがあります。relate はこのレイヤーと非空間テーブル間で作成されており、一対多 cardinality(各消防署には複数の職員がいます)です。この relate は両方のテーブルにある消防署ID番号を格納するショート整数フィールドに基づいています。フィールド名は異なりますが、それは全く問題ありません。

relate により、任意の消防署に割り当てられている職員を簡単に見つけることができます。Identify ツールを使いマップ上で消防署をクリックしてください。Identify ウィンドウには消防署フィーチャ名の下に関連するテーブル名が表示されます。テーブルを展開すると、その消防署(この例ではワシントン署で6人の職員が割り当てられています)に関連付けられたレコードが表示されます。

仮に Brian Butler が Adams 署へ転勤したとします。FirePersonnel テーブル内で彼のレコードが編集され、ワシントン署番号(2)が Adams 署番号(202)に置き換えられました。編集が保存されると、Identify ウィンドウに表示されるデータも彼の新しい配属先を反映します。ワシントン署には現在5人だけが割り当てられています…

…一方 Adams 署職員リストには Brian が含まれるようになりました。

The Relationship Class の例
Table relates は別々のテーブルに格納されたフィーチャデータを素早く閲覧するために非常に便利です(効率的なデータ管理目的)。しかし relationship classes は単なるデータ閲覧以上のことが可能です。relationship class を使うことで、どちらかのテーブルでデータが編集された際に何が起こるか制御するルールやプロパティを設定できます。また、有効な編集のみ行われるよう保証できます。
上記例を使うと、StationsPersonnel という名前の relationship class が Fire Stations フィーチャクラスと Fire Personnel テーブル間で作成されたと仮定します。また市ではすべての署に最低5人、最大15人まで割り当てられるルールがあります。この要件を強制するルールが relationship class に設定されています。

Brian Butler の Adams 署への転勤後、ワシントン署には5人だけ残っています。しかし Jean Fiorini が転勤希望し、その申請が承認されました。消防局 GIS データ管理担当技術者は人事テーブル内で Jean のレコードを新しい署番号で更新しました。すると編集によってルール違反となった警告メッセージが表示されました。
- 注意: 使用している ArcGIS のバージョンや relationship class の設定によっては、ルール違反となる編集は受け付けられない場合があります。
データベースは Jean がいなくなることでワシントン署には5人未満しか割り当てられなくなることを認識しています。relationship class のルールに従うためには、技術者はまずワシントン署へ新たな消防士を追加し、その後 Jean のレコードを新しい配属先へ編集すべきです。
relationship class はすべてのデータ編集が有効であり、組織の GIS データベースが現実世界のニーズを正確に反映しサポートすることを保証するために設計されています。Jean の転勤承認者がワシントン署に4人しか残らないことに気づかなかった場合でも、この relationship class のルールによって重要な情報が明らかになり、GIS 技術者は問題を伝えてスタッフ不足による財産や生命への損失防止につながるでしょう。
relates と relationship classes についてもっと学びたいですか?以下のヘルプトピックをご覧ください:
relates、relationship classes、およびデータ整合性を強制するその他ジオデータベース機能について詳細なトレーニングと実践的な練習をご希望の場合はManaging Geospatial Data in ArcGISコースをご受講ください。