リレーションシップは、空間オブジェクトの間、非空間オブジェクトの間、または空間オブジェクトと非空間オブジェクトの間に存在します。 リレーションシップ クラスを作成する際に、必要に応じて、リレーションシップ クラスに属性を付けるかどうかを指定できます。 属性付きのリレーションシップ クラスには、リレーションシップ自体に関する追加の属性と詳細情報を格納できます。
属性付きリレーションシップ クラスを作成するには、ArcGIS Pro のリレーションシップ クラスの作成ジオプロセシング ツールまたはテーブルからリレーションシップ クラスを作成ジオプロセシング ツールを使用します。
各ジオプロセシング ツールを確認すると、リレーションシップ クラスの作成ツールと テーブルからリレーションシップ クラスを作成ツールはほとんど同じです。 どちらのツールでも、リレーションシップを作成して、リレーションシップ クラスのタイプと基数を設定し、主キー フィールドと外部キー フィールドを指定できます。
ただし、これらのツールは、属性付きリレーションシップ クラスを作成するときに使用されるパラメーターが異なります。
[リレーションシップ クラスの作成 (Create Relationship Class)] ツールを使用すると、属性付きまたは属性付きでないリレーションシップ クラスを作成できます。 このツールを使用して属性付きリレーションシップ クラスを作成する際に、中間テーブルが作成されます。 ただし、ArcGIS は関連元オブジェクトと関連先オブジェクトの間の関連付けをマッピングしないため、このテーブルは必須フィールドのみを含み、設定されません。 このツールを使用して属性付きリレーションシップ クラスを作成することは、手動で中間テーブルを設定することを意味します。
[リレーションシップ クラスの作成 (Create Relationship Class)] ツールに含まれるその他のパラメーターは次のとおりです。
- [リレーションシップ クラスに属性を含める] - このパラメーターをオンにすると、中間テーブルが自動的に作成されますが、必須フィールドのみが生成されます。
注意:
[リレーションシップ クラスに属性を含める] は [リレーションシップ クラスの作成 (Create Relationship Class)] ツールのオプションのパラメーターであり、属性付きリレーションシップ クラスを作成する場合にのみオンにする必要があります。
- [リレーションシップ クラスに属性を含める] - このパラメーターをオンにすると、中間テーブルが自動的に作成されますが、必須フィールドのみが生成されます。
テーブルからリレーションシップ クラスを作成ツールは、属性付きリレーションシップ クラスを作成します。 この属性付きリレーションシップ クラスの中間テーブルは、既存のリレーションシップ テーブルから選択された属性フィールドに基づいて設定されます。 これらの選択された属性フィールドには、属性付きでないリレーションシップ クラスの作成時に必要なリレーションシップ属性のほか、追加のリレーションシップ属性が含まれます。 これらは、関連元または関連先クラスの属性として設定されていない、リレーションシップ自体の属性を格納するために使用されます。 たとえば、所有者が区画を所有し、区画が所有者に所有されるという区画と所有者の間のリレーションシップに、各所有者の所有権の割合をリレーションシップ属性として格納できます。
テーブルからリレーションシップ クラスを作成ツールに含まれるその他のパラメーターは次のとおりです。
- [リレーションシップ テーブル] - リレーションシップ クラスに追加される属性を含む既存のテーブル。
- [属性フィールド] - 属性付きリレーションシップ クラスの中間テーブルに追加される属性値を含む [リレーションシップ テーブル] に存在するフィールドの名前。
注意:
テーブルからリレーションシップ クラスを作成ツールを使用する場合、[リレーションシップ テーブル] と [属性フィールド] は必須パラメーターです。 属性と属性フィールドは、中間テーブルとして新しく作成された属性付きリレーションシップ クラス テーブルに追加されます。
属性付きリレーションシップ クラスを作成する前に、「リレーションシップ クラス作成の準備」でジオデータベース リレーションシップ クラスに関する注意事項をご確認ください。
リレーションシップ クラスの作成ツールを使用して属性付きリレーションシップ クラスを作成するには、次の手順に従います。
ヒント:
- リレーションシップ クラスはファイル ジオデータベース、モバイル ジオデータベース、およびエンタープライズ ジオデータベースでサポートされています。 属性付きリレーションシップ クラスを作成するには、既存のジオデータベースまたはジオデータベース内のフィーチャ データセットを右クリックします。 エンタープライズ ジオデータベース内にリレーションシップ クラスを作成する場合、データベースでデータを作成する権限のあるユーザーとして、エンタープライズ ジオデータベースに接続する必要があります。
属性付きリレーションシップ クラスの詳細、およびそれを実世界のシナリオに適用する方法については、「多対多のリレーションシップ クラスについて」の ArcGIS ブログ記事をご参照ください。 このブログには、ワークフローの手順のより詳細なレビューが示され、公園データの妥当性の維持に役立つ多対多のリレーションシップ クラスの作成に必要なデータが含まれています。
- ArcGIS Pro を起動して、既存の ArcGIS Pro プロジェクトを開くか、テンプレートを使用せずに開始します。
- [カタログ] ウィンドウで、既存のジオデータベースを右クリックし、ショートカット メニューの [新規] をクリックします。
- [リレーションシップ クラス] を選択します。
[リレーションシップ クラスの作成] ジオプロセシング ツール ダイアログ ボックスが開き、デフォルト設定が表示されます。
注意:
または、テーブルからリレーションシップ クラスを作成ツールを使用すると、リレーションシップ属性を含んでいる既存の中間テーブルを使用してリレーションシップ クラスを作成できます。
- [関連元テーブル] で、リストからデータセットを選択するか、参照ボタンを使用してデータセットを選択します。
- [関連先テーブル] で、リストからデータセットを選択するか、参照ボタンを使用してデータセットを選択します。
- [出力リレーションシップ クラス] で、参照ボタン をクリックしてリレーションシップ クラスの格納先のジオデータベースを参照します。 [名前] にリレーションシップ クラスの名前を入力し、[保存] をクリックします。
この例では、関連元テーブルと関連先テーブルは Wyoming Natural Assets.geodatabase という名前のモバイル ジオデータベース内にあります。 したがって、リレーションシップ クラスもこの同じモバイル ジオデータベース内に存在していなければなりません。 このモバイル ジオデータベース (.geodatabase) は SQLite 上に構築されているため、接頭辞「main」がリレーションシップ クラス名に自動的に追加され、メイン スキーマ (SQLite データベースのデフォルト スキーマ) に属していることが示されます。
- [リレーションシップ タイプ] で [シンプル] を選択します。
シンプル リレーションシップ クラス タイプとコンポジット リレーションシップ クラス タイプの違いについては、「ジオデータベース リレーションシップ クラスのタイプ」をご参照ください。
- このリレーションシップ クラスの [正方向 (関連元から関連先へ)] パラメーターと [逆方向 (関連先から関連元へ)] パラメーターのラベルを入力します。
[正方向 (関連元から関連先へ)] パラメーターは、関連元クラスから関連先クラスへの移動時のリレーションシップを示します。 これに対して、[逆方向 (関連先から関連元へ)] パラメーターは、反対方向 (関連先クラスから関連元クラス) への移動時のリレーションシップを示します。 これらのラベルの詳細については、「リレーションシップ クラスの作成ツールのパラメーター」をご参照ください。
- シンプル リレーションシップ クラスを作成しているので、[情報伝達方向] で [None] を選択します。
[情報伝達方向] パラメーターは、関連オブジェクトの間でメッセージがどのように送られるかを示します。 このパラメーターは、リレーションシップ クラスのカスタム カスケード更新/削除動作を実装する場合に適用されます。 シンプル リレーションシップ クラスとコンポジット リレーションシップ クラスの [情報伝達方向] パラメーターを設定することによる影響の詳細については、「リレーションシップ クラスの作成ツールのパラメーター」をご参照ください。
- [基数] で、リレーションシップ クラスに参加しているデータに適した基数オプションを選択します。
リレーションシップ クラスの基数は、関連元のいくつのオブジェクトが関連先のいくつのオブジェクトに関連するかを示します。 属性付きリレーションシップでサポートされている [基数] オプションは次のとおりです。
- [1 対 1 (1:1)] - 関連元テーブル内の各行またはフィーチャを、関連先テーブル内の 0 個または 1 個の行またはフィーチャに関連付けることができます。 これがデフォルトです。
- [1 対多 (1:M)] - 関連元テーブル内の各行またはフィーチャを、関連先テーブル内の 1 個または複数の行またはフィーチャに関連付けることができます。
- [多対多 (M:N)] - 関連元テーブル内の複数の行またはフィーチャを、関連先テーブル内の複数の行またはフィーチャに関連付けることができます。
- 使用しているツールに応じて、次の手順を実行します。
- リレーションシップ クラスの作成ツールを使用する場合は、[リレーションシップ クラスに属性を含める] パラメーターに横にあるチェックボックスをオンにします。
[リレーションシップ テーブル] パラメーターのテーブルからリレーションシップ クラスを作成ツールを使用している場合は、リレーションシップ クラスに関連する属性値を含む既存のテーブルが存在する場所を参照 します。
ヒント:
属性付きリレーションシップでは、[リレーションシップ テーブル] に、関連元と関連先のフィーチャクラスまたはテーブルに対する外部キーとして機能するフィールドが含まれている必要があります。 これらの外部キーは、関連元と関連先のフィーチャクラスまたはテーブルの主キーに関連しています。[属性フィールド] で、[リレーションシップ テーブル] パラメーターから、リレーションシップ クラスに追加する属性値を含むフィールドの名前を選択します。 このフィールドは、[リレーションシップ テーブル] パラメーター値に存在する必要があり、中間テーブルに表示されます。
- 以下のフィールドを指定します。属性付きリレーションシップ クラスはこれらのフィールドを、対応する関連元テーブルまたはフィーチャクラスの関連する [関連元テーブルの主キー] と [関連先テーブルの主キー] とともに、中間テーブル内の [関連元の外部キー] フィールドと [関連先の外部キー] フィールドの間の値を割り当てるキー フィールドとして使用します。
関連元テーブルの主キー - 多対多または属性付きのリレーションシップ クラスの場合、これは関連元テーブルのフィールドであり、中間テーブルの [関連元の外部キー] フィールドにリンクしています。
関連元の外部キー - 1 対多または属性付きのリレーションシップ クラスの場合、これは関連元テーブル内の [関連元テーブルの主キー] フィールドにリンクしている、中間テーブル内のフィールドです。
- 関連先テーブルの主キー - 中間テーブルの [関連先の外部キー] フィールドにリンクしている、関連先テーブルのフィールド。 多対多または属性付きリレーションシップ クラスの場合、この値は必須です。
- 関連先の外部キー - 関連先テーブルの [関連先テーブルの主キー] フィールドにリンクしている、中間テーブルのフィールド。 多対多または属性付きリレーションシップ クラスの場合、この値は必須です。
注意:
キー フィールドの名前は異なっていてもかまいませんが、同じフィールド データ タイプでなければならず、Percel ID といった同じ種類の情報を含んでいなければなりません。 BLOB、日付、ラスターを除くすべてのデータ タイプのフィールドをキー フィールドとして使用することができます。
- [実行] をクリックして、属性付きリレーションシップ クラスを作成します。
注意:
[実行] ドロップダウン メニューをクリックし、[実行のスケジュール] を選択して、ツールを後から実行したり、オプションで定期的に実行したりすることができます。