2022年2月7日更新
「relate」と「relationship class」という用語には常に混乱があるようです。この投稿では、それを明確にしようとします。例のスクリーンショットは ArcMap からのものですが、概念は ArcGIS Pro にも適用されます。
基本
- relate(テーブル relate とも呼ばれます)は ArcGIS Pro または ArcMap のレイヤーのプロパティです。テーブル relate を作成すると、あるレイヤーのフィーチャをクエリおよび選択し、別のレイヤーまたはテーブルの関連するすべてのフィーチャを見ることができます。テーブル relate はマップまたはレイヤーファイル(.lyr)内にのみ存在します。

- relationship class はジオデータベース内のオブジェクトで、2つのフィーチャクラス間、フィーチャクラスと非空間テーブル間、または2つの非空間テーブル間の関係に関する情報を格納します。relationship class の両方の参加者は同じジオデータベースに格納されている必要があります。
- Cardinality は relates と relationship classes の設定方法を制御します。Cardinality はセントルイスの野球ファンの熱狂度を測るものではなく、2つの異なるテーブルのレコードがどのように関連しているかを説明するものです。Cardinality は一対一、一対多、多対一、多対多の場合があります。
- テーブル relates は一対多または多対一の cardinality を持つテーブル間で作成されます。relationship classes はすべての cardinalities をサポートします。
- テーブル relate または relationship class を作成するとき、関係が基づく各テーブル内のフィールドを指定します。フィールドは同じデータ型(例:テキスト、ショート整数、ロング整数、object ID など)でなければなりません。
- Relates は Basic、Standard、または Advanced ライセンスで作成および編集できます。
- Relationship classes は Standard または Advanced ライセンスで作成および編集できます。Basic ライセンスでは読み取り専用です。
これで全てクリアですか?いいえ?では、もっと詳しく見てみましょう。
例

上記マップの目次には、市内消防署のレイヤーと、市の消防部隊員に関するデータを格納する非空間テーブルがあります。各テーブル内に消防署ID番号を格納するショート整数フィールドに基づいて、そのレイヤーと非空間テーブル間にテーブル relate が作成されています。
マップ上で消防署が選択されたらどうなりますか?
以下は消防署レイヤーと消防部隊員テーブルの属性テーブルです。両方のテーブルで選択されたフィーチャのみ表示オプションが使用されています。一つの消防署レコード(ワシントン署)のみが選択されている一方で、消防部隊員テーブルでは6件のレコードが選択されていることに注目してください。

これは Fire Stations レイヤーが消防部隊員テーブルと一対多の cardinality を持っていることを示しています。各消防署には複数の消防部隊員が関連付けられています。この場合、6人の消防士がワシントン署に配属されています。テーブルが関連付けられているため、署を選択するとその署で働く人を簡単に知ることができます。テーブル relates は双方向なので、消防部隊員テーブルでレコードを選択して、その消防士が配属されている署名も取得できます。
フィーチャを選択したりテーブルを開いたりする必要さえなく、Identify ツールを使って情報を素早く見ることもできます。Identify ウィンドウ左側には関連するテーブル名がフィーチャ名の下に表示されます。関連するテーブルを展開すると関連レコードが表示されます。関連レコードをクリックすると関連テーブルに格納されたデータが表示されます。

ブライアン・バトラーが Adams 署へ異動すると仮定しましょう。この変更を反映させるため FirePersonnel テーブルを編集します。以下は例で行う手順です。
- 編集セッションを開始します。
- Fire Personnel テーブルでブライアン・バトラーのレコードを選択します。
- Number_ フィールドで値を1714(Adams 署ID番号)に変更します。
- テーブルを閉じて編集内容を保存します。
- Identify ツールで Adams 署をクリックします。
- ブライアン・バトラーが Adams 署に所属する人員リストに表示されます。

- Identify ツールで Washington 署をクリックします。
- ブライアン・バトラーのレコードはもう表示されません。

なぜ Relationship Class を使うのか?
Table relates は実際には異なる2つのテーブルに格納されている現実世界について迅速にアクセスし閲覧するために便利です。しかし relationship classes はより強力な機能を提供します。
一方のテーブルでレコードを選択し他方で関連レコードを見ることに加え、relationship class ではどちらかのテーブル内データ編集時に何が起こるか制御するルールやプロパティ設定が可能で、有効な編集のみ行われるよう保証できます。一方のテーブル内レコード編集時に自動的に他方関連レコードも更新されるよう設定できます。
上記例を使うと、Fire Stations レイヤーと消防部隊員テーブル間に relationship class が作成されたと仮定しましょう。市にはすべての署に最低5人、最大15人の消防士配置という要件があります。この要件を反映したルールが relationship class に設定されています。
table relate の例では Washington 署には5人割り当てられていました。今や relationship class があるのでスタッフが Washington 署消防士1人に別署番号割り当てしようとするとエラーメッセージが表示され、このルールによってすべての署には最低5人配置必要だと理解できます。既存消防士署番号編集前に新たな消防士を Washington 署へ割り当てなければなりません。その後既存 Washington 署消防士への転属反映として署番号変更可能です。
relationship class はデータ編集が有効であること保証し、市要件遵守した人員配置という消防部目標達成支援します。
覚えておくこと
- Table relates はマップまたはレイヤーファイル内だけ存在します。
- Relationship classes はジオデータベース内の個別オブジェクトとして存在します。参加するいずれかのテーブルがジオデータベースから削除されると relationship class も削除されます。
- Table relates と relationship classes の両方ともユーザーがどちらか一方から関連情報へアクセスし閲覧可能です。
- Relationship classes はデータ整合性確保によく使われます。ジオデータベースをスマート化します。
relates と relationship classes についてもっと多く語れますが、簡潔さ優先でここまでとします。このトピックについてさらに詳しく知りたい場合は、このヘルプ トピックをご覧ください。