シンプルかコンポジットか、特定の基数かどうかに関係なく、すべてのリレーションシップ クラスに属性があります。 多対多の基数や属性を持つリレーションシップ クラスが作成されると、新しい中間テーブルが作成されます。
この中間テーブルには次の 2 つの外部キーが含まれ、テーブル内の各行は 1 つの関連元オブジェクトと 1 つの関連先オブジェクト間の関連付けのマッピングに使用されます。
- 関連元の外部キー フィールドは、関連元テーブルまたはフィーチャクラスの主キー フィールドに関連付けられます。
- 関連先の外部キー フィールドは、関連先テーブルまたはフィーチャクラスの主キー フィールドに関連付けられます。
たとえば、自然保護官や観光客が特定のアクティビティ (グランドティトン国立公園にあるさまざまな施設で利用できる水泳、ハイキング、ボートなど) を見つけるために、Facilities フィーチャクラスと Activities スタンドアロン テーブルの間に多対多のリレーションシップ クラスが作成されました。 このシナリオでは、Lizard Creek Campground にボート アクティビティが追加されたため、これらのオブジェクト間のリレーションシップをリレーションシップ クラスに追加する必要があります。
ヒント:
属性付きリレーションシップ クラスの詳細、およびそれを実世界のシナリオに適用する方法については、「多対多のリレーションシップ クラスについて」の ArcGIS ブログ記事をご参照ください。 このブログには、ワークフローの手順により詳細なレビューが示され、公園データの妥当性の維持に役立つ多対多の属性付きリレーションシップ クラスの作成および設定に必要なデータが含まれています。 下記の「中間テーブルへのアクセス」セクションと「オブジェクト間のリレーションシップの追加」セクションには、このブログで利用可能なデータを使用して作成された画像が含まれています。
リレーションシップ クラスの作成ツールを使用して中間テーブルが作成される際には、フィールドだけが自動的に生成されます。 ArcGIS は関連元オブジェクトをその関連先オブジェクトに自動的に関連付けしないため、オブジェクト間のリレーションシップを手動で追加し、行を設定する必要があります。 オブジェクト間のリレーションシップを追加するには、編集セッションで 2 つの対象オブジェクト クラスの関連するフィーチャまたは行を選択し、[属性] ウィンドウを使用してリレーションシップを中間テーブルに追加します。 [属性] ウィンドウにアクセスするには、[編集] タブの [属性] ボタン をクリックします。 いったんリレーションシップを中間テーブルに追加すると、関連する主キー値が外部キー フィールドに自動的に設定されます。追加属性フィールドにデータが入力される場合もあります。 このプロセスは、一連の関連フィーチャのすべてにおいて繰り返す必要があります。
注意:
属性付きリレーションシップ クラスを作成したら、その属性付きリレーションシップ クラスをマップに追加できます。 属性付きリレーションシップ クラスは、[コンテンツ] ウィンドウで開くことができるテーブルとして表示されます。 また、フィールド ビューから、この中間テーブルにユーザー定義フィールドを追加および削除できます。 ただし、この中間テーブルはジオデータベースでオブジェクト クラスとしては認識されません。 したがって、この中間テーブルでは、属性ルール、ドメイン、サブタイプ、条件値、デフォルト値などのジオデータベースの動作を適用したり使用することはできません。
中間テーブルへのアクセス
2 つのオブジェクト間のリレーションシップを追加する前に、まず、リレーションシップを作成するオブジェクトを含むフィーチャクラスまたはテーブル間のリレーションシップ クラスを作成する必要があります。 ArcGIS Pro のリレーションシップ クラスの作成 (Create Relationship Class) ジオプロセシング ツールまたはテーブルからリレーションシップ クラスを作成 (Table To Relationship Class) ジオプロセシング ツールを使用して、属性付きリレーションシップ クラスを作成します。
属性付きリレーションシップ クラスを作成したら、その属性付きリレーションシップ クラスの中間テーブルにアクセスできます。
属性付きリレーションシップ クラスの中間テーブルに追加する手順については、以下の「オブジェクト間のリレーションシップの追加」セクションをご参照ください。
ヒント:
次の例と画像は、「多対多のリレーションシップ クラスについて」の ArcGIS ブログ記事からダウンロードできるデータを使用して作成されました。
- ArcGIS Pro で、[カタログ] ウィンドウの [データベース] フォルダーで、属性を含めるリレーションシップ クラスを含むジオデータベースをクリックして展開します。
注意:
エンタープライズ ジオデータベース内にある属性付きリレーションシップ クラスのレコードの追加、削除、更新を行うには、そのリレーションシップ クラスの所有者としてエンタープライズ ジオデータベースに接続している必要があります。
- 必要に応じて、[カタログ] ウィンドウでリレーションシップ クラスを右クリックし、[プロパティ] をクリックします。
一般、ルール、管理タブからリレーションシップ クラスのプロパティを管理できます。
ヒント:
[リレーションシップ クラス プロパティ] ダイアログ ボックスの管理タブにリストされているジオデータベース機能は有効になっています。これらは、属性付きリレーションシップ クラスのプロパティであるためです。
- [カタログ] ウィンドウでリレーションシップ クラスを右クリックして、[現在のマップに追加] をクリックします。
ArcGIS Pro で、属性が含められたリレーションシップ クラスをマップに追加する際に、属性付きリレーションシップ クラス用に作成された中間テーブルが [コンテンツ] ウィンドウにテーブルとして追加され、[スタンドアロン テーブル] セクションの下に表示されます。 この中間テーブルの名前は、リレーションシップ クラスと同じ名前になります。
- [カタログ] ウィンドウでフィーチャクラスまたはテーブルを右クリックして、[現在のマップに追加] をクリックします。
- 必要に応じて、[コンテンツ] ウィンドウの [スタンドアロン テーブル] で、中間テーブルを右クリックし、[開く] をクリックして、フィールドと属性を確認します。
たとえば、テーブルからリレーションシップ クラスを作成ツールを使用してリレーションシップ クラスする場合で、そのリレーションシップに関する追加の属性を既存のテーブルに設定する必要がある場合、作成される中間テーブルは次のようになります。 この例では、この属性付きリレーションシップ クラスの中間テーブルに Facilities フィーチャクラスと Outdoor アクティビティ テーブルの有効なリレーションシップがすべて含まれています。その Facility_ID フィールドは関連元の外部キーで、Activity_ID フィールドは関連先の外部キーです。
リレーションシップ クラスの作成ツールを使用してリレーションシップ クラスを作成すると、中間テーブルには必須フィールドのみが含まれます。ArcGIS は関連元オブジェクトと関連先オブジェクトの間の関連付けをマッピングしないため、それらのフィールド内の値を設定する必要があります。 このツールを使用して属性付きリレーションシップ クラスを作成することは、手動で中間テーブルを設定することを意味し、作成される中間テーブルは次のようになります。
オブジェクト間のリレーションシップの追加
[属性] ウィンドウ を使用して、2 つのオブジェクト間のリレーションシップを追加できます。 多対多または属性付きのリレーションシップ クラスで、中間テーブルは関連元オブジェクトと関連先オブジェクトの間の関連付けをマッピングし、格納します。 このタイプのリレーションシップ クラスで 2 つのオブジェクト間にリレーションシップが作成されると、その中間テーブルに新しい行が追加されます。 この行には、関連元オブジェクトと関連先オブジェクトの主キーの値が設定されます。
オブジェクト間のリレーションシップを追加するには、これらの手順に従って、属性付きリレーションシップ クラスの中間テーブルに行を追加します。
- [編集] タブの [選択] グループで [選択] ツールをクリックします。
- [選択] ツールを使用して、関連する関連元および関連先のオブジェクトを対話的に選択します。 テーブルがリレーションシップに属する場合は、[コンテンツ] ウィンドウの [開く] をクリックしてテーブルを開き、対象となる行を選択します。
たとえば、このトピックの上部にある画像を使用する場合、Facilities フィーチャクラスの Lizard Creek Campground を Outdoor Activities テーブルの Boating アクティビティに関連付ける必要があります。 Lizard Creek Campground (関連元フィーチャ オブジェクト) と Boating (関連先フィーチャ オブジェクト) が選択されています。
- [編集] タブの [属性] ボタン をクリックして [属性] ウィンドウを開きます。
選択した関連元フィーチャと関連先フィーチャが [属性] ウィンドウに表示されます。
- [属性] ウィンドウで選択した関連元フィーチャをクリックして展開し、リレーションシップ クラス ラベルを右クリックします。
- [選択セットをリレーションシップに追加] オプションをクリックします。 Facilities フィーチャクラスの Lizard Creek Campground が Outdoor Activities テーブルの Boating アクティビティに関連付けられました。
- [属性] ウィンドウが更新され、選択した関連元フィーチャと関連先フィーチャの追加されたリレーションシップが表示されます。
- 中間テーブルに行が追加され、関連する主キーの値が外部キー フィールドに設定されます。
- ステップ 2 ~ 5 を繰り返し、中間テーブルにオブジェクト間の適切なリレーションシップをすべて設定します。
- 編集内容を保存して、リレーションシップと新規データを中間テーブルに保存します。