エンタープライズ ジオデータベースでの表示

データベース ビューは、エンタープライズ ジオデータベース内に作成できます。データベース ビューをジオデータベースに登録してビューのメタデータと情報をジオデータベース システム テーブルに保存したり、ビューをデータベース オブジェクトとして保持しておくことができます。

データベース ビュー

データベース ビューは、指定されたテーブルからデータを選択するクエリを格納します。バージョン対応登録されていないデータベースまたはエンタープライズ ジオデータベースのテーブルに対して、ビューを定義できます。エンタープライズ ジオデータベースで使用する場合、データベース ビューは単一のバージョン非対応テーブルに対して定義するか、2 つのバージョン非対応テーブル間で定義できます。また、サブクエリを含む、より複雑なビューを作成することもできます。

ArcGIS で使用されるビューには 1 つの空間列を含めることができます。空間列が存在する場合、これらのビューは空間ビューと呼ばれます。空間ビューを作成するときに、空間列と同じテーブルのオブジェクト ID 列を含める必要があります。フィーチャクラスのオブジェクト ID が含まれない場合、オブジェクト ID と Shape 列の間の関係が一意とならず、ArcGIS で検索やレンダリングを行う際に結果が不正確になる可能性があります。

データベース ビュー内のデータは、ArcGIS クライアントまたはサービスを通じて編集することはできません。

データベース ビューは次のような目的で使用されます。

  • ビューでは、あらかじめ定義した方法で行または列のサブセットを表示できます。これにより、データベースからクライアントに転送されるデータの量を削減し、パフォーマンスを向上させることができます。
  • ビューはデータベースで共通のクエリを体系化し、複数のユーザーが利用できるようにします。これにより、ユーザーが各自で複雑なクエリを作成する必要がなくなります。
  • ビューでは、さまざまなテーブルやその他のビューのデータを結合できます。
  • 集計関数を使用して、ビューのデータを合計することができます。この場合も、データベースからクライアントに転送されるデータの量を削減し、パフォーマンスを向上させることができます。
  • テーブルの場合と同じ方法で、ビューに対する select 権限をユーザーに付与できます。したがって、テーブルの行や列に対するアクセスを制御する目的でビューを使用することもできます。
  • ビューを定義するときにフィーチャクラスを非空間テーブルに結合し、これら両方の列を連結することができます。
  • ArcGIS は、1 つの空間列を含むテーブルのみを操作できます。複数の空間列を含む空間テーブルを使用する場合は、テーブルの空間列を 1 つだけ含む空間ビューを作成します。
  • ArcGIS は、1 つの空間参照を使用するテーブルのみを操作できます。テーブルに複数の空間参照が含まれている場合は、同じ空間参照を使用するレコードのみを含むビューを作成できます。

データベース ビューを作成するには、[データベース ビューの作成 (Create Database View)] ジオプロセシング ツールまたはデータベースのショートカット メニューを使用するか、使用しているデータベース管理システムに固有の SQL を使用できます。

ユーザーがビューを作成するには、特定のデータベース権限が必要です。たとえば、Oracle または Microsoft SQL Server データベースでは、ユーザーに create view 権限を付与する必要があります。一部のデータベース管理システムでは、自身が所有者でないフィーチャクラスまたはテーブルからビューを作成する場合、他のユーザーにビューを参照する権限を割り当てることはできません。この場合は、元のテーブルの所有者から、他のユーザーに権限を割り当てるための権限を付与してもらう必要があります。

以下は、データベース ビューを操作する場合の注意事項です。

  • ビューは、データベース内でオブジェクトとして存在し、[データベース ビューの作成 (Create Database View)] ツールを使用してジオデータベース テーブルに定義した場合でも、ジオデータベースには登録されません。
  • 基になるテーブルのスキーマに対して行われた変更は、ビューに反映されません。追加された列をビューに含めるには、これらの列を含むようにビューを再定義する必要があります。
    注意:

    ArcGIS によって作成されたビューを、SQL または他のデータベース ツールを使用して既存のビューを変更することで置き換えた場合、クエリの正確さと効率だけでなく、ArcGIS クライアントで使用することの妥当性についても、ユーザーの責任となります。たとえば、1 対多のビューを作成するとフィーチャクラスのオブジェクト ID が重複する場合があります。この場合、オブジェクト ID に一意の値が含まれている必要があるため、ArcMapArcGIS Pro などのアプリケーションや Web サービスで予想外の動作が発生することがあります。

  • ArcGIS Desktop ではデータベース ビューを使用してデータを編集できません。
  • ビューは、ArcGIS Server フィーチャ サービスでサポートされていません。
  • 従来のバージョンに対応しているジオデータベース テーブルまたはフィーチャクラスでビューを作成した場合は、ベース テーブル内のデータだけが表示され、差分テーブルに格納されている編集内容は表示されません。ArcGIS クライアントを通じてビューの編集内容を表示するには、編集内容をリコンサイルしてデフォルト バージョンにポストし、ジオデータベースを圧縮する必要があります。
  • 空間列をビュー定義に含める場合、空間列は SQL ジオメトリ データ タイプでなければならず、空間列の取得元のフィーチャクラスはバージョン対応登録できないため、ビュー定義内の空間列を含むフィーチャクラスのオブジェクト ID も含める必要があります。

ジオデータベースに登録されたビュー

データベースにジオデータベースが含まれている場合は、[ジオデータベースに登録 (Register with Geodatabase)] ジオプロセシング ツールを使用して、データベース ビューをジオデータベースに登録することができます。

ジオデータベースにビューを登録する理由は次のとおりです。

  • ジオデータベースにビューを登録すると、ビューに関する情報がジオデータベースのシステム テーブルに格納されます。このジオメトリ タイプ、空間参照、範囲などの情報により、マップに空間フィールドを含むビューを追加するときのパフォーマンスが結果として向上します。
  • ビューの所有者である場合、ジオデータベースに登録されているビューでメタデータを定義できます。

フィーチャクラスで SQL ジオメトリ タイプが使用されている場合、およびフィーチャクラスがバージョン対応登録されていない場合、ビューに 1 つの空間列を含めることができます。フィーチャクラスのオブジェクト ID をビュー定義に含めて、ジオデータベースにビューを登録する必要があります。

ジオデータベースに登録されたビューは、ArcGIS クライアントおよびサービスでは編集できません。