リレーションシップ クラス作成の準備

リレーションシップ クラスは、ArcGIS Pro で使用可能なワークフローの 1 つであり、ジオデータベース内のフィーチャやレコードを相互に関連付けます。

リレーションシップ クラスを作成するツール

ジオデータベース リレーションシップ クラスを作成するには、次の 2 つのジオプロセシング ツールから選択することができます。

ジオデータベース リレーションシップ クラスに関する検討事項

ワークフローで作成および使用するジオデータベース リレーションシップ クラスのタイプを決定する際には、以下について検討します。

  • テーブルまたはクラス内のオブジェクト間に存在する基数
    • ジオデータベース リレーションシップ クラスの基数は、関連元テーブル内のいくつの行またはフィーチャが関連先テーブル内のいくつの行またはフィーチャに関連するかを示します。

      ジオデータベース リレーションシップ クラスには、次の 3 つの基数のいずれかを指定することができます。

      ジオデータベース リレーションシップ クラスには 3 つの基数のいずれかを指定することができます。
      • [1 対 1 (1:1)] - 関連元テーブル内の各行またはフィーチャを、関連先テーブル内の 0 個または 1 個の行またはフィーチャに関連付けることができます。 これがデフォルトです。
      • [1 対多 (1:M)] - 関連元テーブル内の各行またはフィーチャを、関連先テーブル内の 1 個または複数の行またはフィーチャに関連付けることができます。
      • [多対多 (M:N)] - 関連元テーブル内の複数の行またはフィーチャを、関連先テーブル内の 1 個または複数の行またはフィーチャに関連付けることができます。

      基数とその使用方法の詳細

  • 関連元テーブルまたはクラスと関連先テーブルまたはクラスの両方に存在する共通キー フィールド
    • キーと呼ばれる共通のフィールドを介して、あるテーブル (関連元) のレコードを別のテーブル (関連先) のレコードに関連付けることができます。 どのタイプのリレーションシップ クラスを作成する場合でも、作成する前に、共通の値を共有する、データ タイプが同じフィールドを各テーブルで特定する必要があります。 このフィールドは、関連元では主キー フィールドと呼ばれ、関連先では外部キー フィールドと呼ばれます。

      たとえば、キャンプ場施設 (関連元テーブル) のフィーチャクラスとキャンプ地 (関連先テーブル) のフィーチャクラスは、共通の値が格納されている共通フィールドを互いに共有しており (関連元テーブルの FacilityID と関連先テーブルの ParentFacilityID)、そのフィールドのデータ タイプは同じ Long Integer なので、相互に関連付けることができます。 この例では、これらのレコードを関連付けることで、キャンプ場施設を 1 つ選択して、そのキャンプ場に関連付けられているすべてのキャンプ地にアクセスできるようになります。

      主キーは関連元テーブルに表示され、関連先のキーは関連先テーブルに表示されます
      注意:

      リレーションシップ クラスの共通フィールドは、同じ名前である必要はありませんが、同じデータ タイプである必要があります。 共通フィールドの値を使用して、定義済みの基数に基づいてテーブル内のレコードがリンクされます。

      次の例では、キャンプ場施設と各キャンプ場にあるキャンプ地の間に 1 対多のリレーションシップ クラスが作成されています。 この 1 対多のリレーションシップによって、キャンプ場を 1 つ選択して、そのキャンプ場に関連付けられているキャンプ地と各キャンプ地の属性にアクセスすることができます。

      1 対多のリレーションシップ クラスの図
      Campground Facilities と各キャンプ場に割り当てられている個々の Campsites の間にリレーションシップ クラスが作成されています。

    主キーと外部キーの詳細

  • 関連元テーブルの主キーと関連先テーブルの外部キーの間のリレーションシップを表す Object ID または Global ID フィールドの使用。

    Object ID と Global ID を使用する際には次のような検討事項があります。

    • Object ID フィールド
      • ArcGIS Pro でリレーションシップ クラスを作成するには、主キーと外部キーの間のリレーションシップを表す一意の値が必要です。 ArcGIS Pro でテーブルを作成すると、NULL 値が許可されない一意の整数フィールドがテーブルに追加され、オブジェクト識別子 (Object ID) として機能します。 この Object ID フィールドには、テーブルの行ごとに一意の ID が保存され、デフォルトでは 32 ビットの Object ID として、テーブルおよびフィーチャクラス内に作成されます。

        Object ID フィールドArcGIS Pro によって管理され、テーブル内の各行が最初に追加されたときに一意の ID を持つことが保証されます。 個別属性ツールを使用したり選択セットを表示したりするなどの、ArcGIS の主な機能は、テーブル内の各値が一意の値を持つことに依存します。

      • ジオデータベースのテーブルとフィーチャクラスは、デフォルトで 32 ビットの Object ID を使用して ArcGIS に作成されます。 ただし、状況によっては、Object ID の値を 21 億 4,000 万より大きくする必要があります。 [Object ID を 64 ビットに移行 (Migrate Object ID To 64 Bit)] ジオプロセシング ツールを使用して、リレーションシップ クラスの Object ID フィールドを移行できます。
        注意:

        64 ビット Object ID を格納するよう Object ID フィールドを移行すると、変更を元には戻せず、データセットを ArcMap または ArcGIS Pro 3.1 以前のバージョンで使用できなくなります。

      • ObjectID ベースのリレーションシップ クラスを作成する操作は、ブランチ バージョニングではサポートされていません。

        ヒント:

        または、[リレーションシップ クラスの移行 (Migrate Relationship Class)] ツールを実行して ObjectID ベースのリレーションシップ クラスを Global ID ベースのリレーションシップ クラスに移行してから、ブランチ バージョニング環境でデータを使用します。

    • Global ID フィールド
      • Global ID は、ArcGIS Pro で管理され、編集できないという意味では、Object ID とほぼ同じです。

        Global ID によって、ジオデータベース内およびジオデータベース間でフィーチャを一意に識別できます。 Global ID をデータに追加し、Global ID フィールドを主キーとして使用することをお勧めします。 レイヤーの Global ID フィールドを使用することで、フィーチャクラスとテーブルの間の関連を確立する際に、リレーションシップ クラスの主キーが一意になります。

        リレーションシップ クラスの Global ID を有効化することもできます。 [Global ID] オプションは、ファイル ジオデータベース、モバイル ジオデータベース、またはエンタープライズ ジオデータベース内の属性付きリレーションシップ クラスまたは多対多のリレーションシップ クラスの [管理] タブで使用できます。 有効にすると、Global ID フィールドが中間テーブルに追加されます。

      • Global ID と GUID の違いの 1 つとして、ArcGIS Pro では Global ID フィールドがアクティブに管理されます。 たとえば、Global ID フィールドを使用しているときに新しいフィーチャが作成されると、そのフィーチャに一意の Global ID 値が割り当てられるのに対し、GUID フィールドは空白のままとなるため、GUID フィールドはユーザーが管理する必要があります。

シンプル リレーションシップ クラスの作成方法またはコンポジット リレーションシップ クラスの作成方法

ジオデータベース リレーションシップ クラスのルールの作成と設定

関連元クラスと関連先クラスの両方が同じフィーチャ データセット内に存在する場合、リレーションシップ クラスは、そのフィーチャ データセット内に配置されます。 そうでない場合、リレーションシップ クラスはジオデータベースの直下 (フィーチャ データセット外) に配置されます。

リレーションシップの作成には、いくつかの追加手順が伴うことがあり、このプロセスを完了するために従うことができる異なるワークフローが存在します。 どのワークフローに従うべきかは、使用するデータおよび作成するリレーションシップのタイプによって決まります。

  • 関連元クラスと関連先クラスにフィーチャまたはレコードを入力しており、関連元の主キーの値が関連先の外部キーの値に正しく関連している場合は、次のワークフローを検討します。

    1. [リレーションシップ クラスの作成 (Create Relationship Class)] ツールを使用してリレーションシップ クラスを作成します。
    2. 必要に応じて、リレーションシップ クラス ルールを設定します。

      リレーションシップ クラスのルールを有効化および無効化する方法については、「リレーションシップ クラス ルールの管理」をご参照ください。

    3. リレーションシップ クラス ルールを設定する場合や、コンポジット リレーションシップ クラスを操作している場合、検証または制約属性ルールを使用して、データの参照整合性をテストおよび確保します。

      注意:

      このワークフローは多対多 (M:N) のリレーションシップ クラスや属性付きリレーションシップ クラスには適用できません。

  • 関連元クラスと関連先クラスにフィーチャまたはレコードを入力しており、関連元には主キーの値が存在するが、関連先に外部キーの値が存在しないか、正しく関連していない値が存在する場合は、次のワークフローを検討します。

    1. [リレーションシップ クラスの作成 (Create Relationship Class)] ジオプロセシング ツールを使用してリレーションシップ クラスを作成します。
    2. 必要に応じて、リレーションシップ クラス ルールを設定します。

      リレーションシップ クラスのルールを有効化および無効化する方法については、「リレーションシップ クラス ルールの管理」をご参照ください。

    3. 関連元オブジェクトと関連先オブジェクトを対話的に選択し、[属性] ダイアログ ボックスで [選択をリレーションシップに追加] オプションを使用して、これらのオブジェクトを関連付けます。

      これによって、関連先クラス内の外部キーの値が、関連元クラス内の主キーの値に関連するように設定されます。

      詳細については、「属性付きリレーションシップ クラス テーブルの生成」をご参照ください。

    4. ArcGIS では関連元オブジェクトと関連先オブジェクトの間の関連付けは自動的にマッピングされず、結果の中間テーブルにはフィールドしか生成されないため、リレーションシップ クラスの作成ツールを使用して属性付きリレーションシップ クラスまたは多対多のリレーションシップ クラスを作成する場合、必要に応じて、中間テーブルに手動で入力します。

      詳細については、「属性付きリレーションシップ クラスの概要」をご参照ください。

    5. リレーションシップ クラス ルールを設定する場合や、コンポジット リレーションシップを操作している場合、検証または制約属性ルールを使用して、データの参照整合性をテストおよび確保します。

      注意:

      このワークフローは、少なくとも 1 つのフィーチャクラスが関連元または関連先として含まれていない多対多 (M:N) のリレーションシップ クラスには適用できません。

  • 2 つのテーブル間に多対多のリレーションシップ クラスを作成するか、リレーションシップ属性を含んでいる既存の中間テーブルを使用してリレーションシップ クラスを作成するには、次のワークフローを検討します。
    1. 関連元テーブル、関連先テーブル、および中間キー テーブルを作成してデータを入力し、主キーの値が関連先テーブルのキーの値に正しく関連するようにします。
    2. [テーブルからリレーションシップ クラスを作成 (Table To Relationship Class)] ツールを使用して、リレーションシップ クラスを作成します。

      詳細については、「属性付きリレーションシップ クラスの概要」および「属性付きリレーションシップ クラス テーブルの作成」をご参照ください。

リレーションシップ クラスの使用上のヒントおよびリレーションシップ クラスを変更する際に使用可能なオプションの詳細

関連トピック