エンタープライズ ジオデータベースでは、次の 4 種類のビューを使用できます。
- データベース ビュー(非空間ビュー)
- 空間ビュー
- バージョン対応ビュー
- 履歴管理ビュー
データベース ビュー
データベース ビューは、指定されたバージョン非対応の非空間テーブルからデータを選択するストアド クエリです。データベースまたはエンタープライズ ジオデータベースのテーブルに対して、ビューを定義できます。エンタープライズ ジオデータベースで使用する場合、データベース ビューは単一のバージョン非対応テーブルに対して定義するか、2 つのバージョン非対応テーブル間で定義できます。また、サブクエリを含むビューや、複数のデータベースにまたがるビューなど、より複雑なビューを作成することもできます。
データベース ビューは次のような目的で使用されます。
- ビューでは、あらかじめ定義した方法で行または列のサブセットを表示できます。これにより、データベースからクライアントに転送されるデータの量を削減し、パフォーマンスを向上させることができます。
- ビューはデータベースで共通のクエリを体系化し、複数のユーザーが利用できるようにします。これにより、ユーザーが各自で複雑なクエリを作成する必要がなくなります。
- ビューでは、複数のビジネス テーブルやその他のビューを結合できます。
- 集計関数を使用して、ビューのデータを合計することができます。この場合も、データベースからクライアントに転送されるデータの量を削減し、パフォーマンスを向上させることができます。
- テーブルの場合と同じ方法で、ビューに対する SELECT 権限をユーザーに付与できます。したがって、ビジネス テーブルの行や列に対するアクセスを制御する目的でビューを使用することもできます。
データベース ビューを作成するには、[データベース ビューの作成 (Create Database View)] ツールまたは ArcGIS for Desktop のデータベースのショートカット メニューを使用するか、使用しているデータベース管理システム (DBMS) に固有の SQL を使用できます。
ビューは、データベース内でオブジェクトとして存在し、ジオデータベースには登録されません。基になるテーブルのスキーマに対して行われた変更は、ビューに反映されません。追加された列をビューに含めるには、これらの列を含むようにビューを再定義する必要があります。
ユーザーがビューを作成するには、特定の権限が必要です。たとえば、Oracle または SQL Server データベースでは、CREATE VIEW 権限が必要です。一部のデータベース管理システムでは、自身が所有者でないフィーチャクラスまたはテーブルからビューを作成する場合、他のユーザーにビューを参照する権限を割り当てることはできません。この場合は、元のテーブルの所有者から、他のユーザーに権限を割り当てるための権限を付与してもらう必要があります。
バージョン対応登録されたデータセットでビューを作成した場合、表示されるのはビジネス (ベース) テーブルのデータだけで、差分テーブルに格納されている編集内容は表示されません。差分テーブルの編集内容を確認するには、ビジネス テーブルにバージョン対応のビューを使用します。
ArcMap または ArcGIS フィーチャ サービスではデータベース ビューを使用してデータを編集できないことに注意してください。
空間ビュー
空間ビューは空間列を 1 つ含むデータベース ビューです。
空間ビューを作成する目的には、上で示したデータベース ビューを使用する目的に加えて、次のような目的があります。
- 空間ビューを定義するときにフィーチャクラスを非空間テーブルに結合し、これら両方の列を連結することができます。
- ArcGIS クライアントは、空間列を 1 つ含むテーブルのみを操作できます。複数の空間列を含む空間テーブルを使用する場合は、テーブルの空間列を 1 つだけ含む空間ビューを作成します。
- ArcGIS クライアントは、1 つの空間参照を使用するテーブルのみを操作できます。テーブルに複数の空間参照が含まれている場合は、同じ空間参照を使用するレコードのみを含むビューを作成できます。
フィーチャクラスで SQL ジオメトリ タイプが使用されている場合、およびフィーチャクラスがバージョン対応登録されていない場合、[データベース ビューの作成 (Create Database View)] ツールまたは SQL を使用して空間ビューを作成できます。空間ビューを作成するには、空間列とフィーチャクラスの ObjectID をビュー定義に含めます。
空間ビューを作成するときに、同じテーブルの ObjectID 列を、空間列として含める必要があります。フィーチャクラスの ObjectID が含まれない場合、ObjectID と Shape 列の間の関係が一意とならず、ArcGIS で検索やレンダリングを行う際に結果が不正確になる可能性があります。
他のデータベース ビューと同様に、空間ビューはジオデータベースに登録されません。
バージョン対応ビュー
バージョン対応ビューには、SQL を使用してジオデータベースのテーブルまたはフィーチャクラスに特定のバージョンでアクセスしたり、これらを編集できるように、データベース ビュー、ストアド プロシージャ、トリガー、および関数が組み込まれています。
バージョン対応ビューは次のような目的で使用されます。
- バージョン対応ビューを使用して、テーブルの差分テーブルに現在格納されている編集内容を表示できます。
- バージョン対応ビューでは、SQL を使用してバージョン対応テーブルおよびフィーチャクラスを編集できます。
ArcGIS 10.1 からは、テーブルおよびフィーチャクラスをバージョン対応登録すると、それらのバージョン対応ビューが自動的に作成されます。既存のバージョン対応登録されたデータがある場合、バージョン対応ビューを作成するには、ArcGIS for Desktop のカタログ ツリーでバージョン対応のテーブル、フィーチャクラス、フィーチャ データセットを右クリックして [管理] をポイントし、[SQL アクセスを有効化] をクリックします。
バージョン対応ビューは、バージョン対応登録された個々のテーブルまたはフィーチャクラスのみを操作します。WHERE 句を使用して複数のテーブルを結合したり、バージョン対応ビューに含める行や列を制限することはできません。
バージョン対応ビューの主な用途は、SQL を使用してバージョン対応登録されたデータを編集することです。ArcGIS クライアント アプリケーションを使用して、バージョン対応ビューから基になるテーブルやフィーチャクラスを編集することはできません。バージョン対応ビューの基になるテーブルやフィーチャクラスは、SQL を使用してジオデータベース データを編集するための ArcGIS の要件を満たす必要があります。詳細については、「SQL で編集可能なデータ タイプ」をご参照ください。
履歴管理ビュー
履歴管理ビューは、履歴管理が有効なバージョン非対応のテーブルまたはフィーチャクラスに定義されたデータベース ビューです。履歴管理ビューには、履歴管理ビューを通じて編集を行ったときに履歴管理テーブルを最新に保つトリガーも含まれています。履歴管理ビューは、履歴管理でデータセットを有効にするとき、または履歴管理が有効なバージョン非対応のデータセットで SQL アクセスを有効にするときに作成されます。
履歴管理ビューは次のような目的で使用されます。
- 履歴管理ビューを使用して、履歴管理が有効なテーブルの履歴テーブルのデータを表示できます。
- 履歴管理ビューでは、SQL を使用して履歴管理が有効なテーブルおよびフィーチャクラスを編集できます。
履歴管理ビューは、個々のテーブルまたはフィーチャクラスのみを操作します。WHERE 句を使用して複数のテーブルを結合したり、履歴管理ビューに含める行や列を制限することはできません。