ジオデータベースのビューの概要
ArcSDE ジオデータベースでは、次の 3 種類のビューを使用できます。
- データベース ビュー(非空間ビュー)
- 空間ビュー
- マルチバージョン対応ビュー
ビューは、ArcGIS Server Enterprise でライセンスされる ArcSDE ジオデータベースのみで使用できます。
データベース ビュー
データベース ビューは、指定されたバージョン非対応の非空間テーブルからデータを選択するストアド クエリです。ArcSDE で使用する場合、データベース ビューは単一のバージョン非対応テーブルに対して定義するか、2 つのバージョン非対応テーブル間で定義できます。また、サブクエリを含むビューや、複数のデータベースにまたがるビューなど、より複雑なビューを作成することもできます。
バージョン対応のデータセットでビューを作成した場合、表示されるのはビジネス(ベース)テーブルのデータだけで、差分テーブルに格納されている編集内容は表示されません。差分テーブルの編集内容を確認するには、ビジネス テーブルにマルチバージョン対応のビューを作成します。
DBMS(Database Management System)のネイティブ SQL を使用するか、ArcSDE の sdetable コマンドに create_view 操作を指定してデータベースビューを作成することができます。
sdetable -o create_view コマンドの構文は次のとおりです。
sdetable –o create_view –T <view_name> –t <table1,table2...tablen> –c <table_col1,table_col2...table_coln [–a <view_col1,view_col2...view_coln>] [–w <"where_clause">] [–i {<direct connection> | <service> | <port#>}] [–s <server_name>] [–D <database>] –u <DB_User_name> [–p <DB_User_password>] [–N] [–q]
ビューに含める列のリストを指定する必要があります(-c オプション)。sdetable コマンドの説明と、コマンドの操作およびオプションについては、『ArcSDE コマンド リファレンス』をご参照ください。
ユーザがビューを作成するには、特定の権限が必要です。たとえば、Oracle または SQL Server データベースでは、CREATE VIEW 権限が必要です。データベースにビューを作成する適切な権限がない場合は、sdetable -o create_view コマンドを実行できません。また、一部のデータベース管理システムでは、自身が所有者でないフィーチャクラスまたはテーブルからビューを作成する場合、他のユーザにビューを参照する権限を割り当てることはできません。この場合は、元のテーブルの所有者から、他のユーザに権限を割り当てるための権限を付与してもらう必要があります。
空間ビュー
空間ビューは空間列を 1 つ含むデータベース ビューです。このビューを作成できるのは、ジオデータベースに登録されていない空間テーブルか、テーブルがジオデータベースに登録されている場合はバージョン非対応のフィーチャクラスのみです。
空間ビューを作成する理由には、「ビューとは」に示すデータベース ビューを使用する理由の他に、次のようなものがあります。
- 空間ビューを定義するときにフィーチャクラスを非空間テーブルに結合し、これら両方の列を結合することができます。
- ArcGIS クライアントは、空間列を 1 つ含むテーブルのみを操作できます。複数の空間列を含む空間テーブルを使用する場合は、テーブルの空間列を 1 つだけ含む空間ビューを作成します。
空間ビューは、ArcSDE の sdetable コマンドに create_view 操作を指定するか、SQL を使用することで作成できます。sdetable コマンドを使用する場合は、-c オプションで指定する列のリストに必ず RowID(または ObjectID)と空間列を含めます。RowID または ObjectID 列は、空間列と同じテーブルに属している必要があります。これらが同じテーブルにない場合、RowID または ObjectID と Shape 列の間の関係が一意とならず、ArcGIS で検索やレンダリングを行う際に結果が不正確になる可能性があります。
SQL を使用して空間ビューを作成する場合は、フィーチャクラスまたは空間テーブルから空間列と RowID または ObjectID 列をビューに含めます。SQL でビューを作成した後、ArcGIS クライアントにフィーチャクラスとして表示するには、ビューを少なくとも ArcSDE に登録する必要があります。
ArcSDE ツール、SQL、またはその他の DBMS ツールでビューを作成する際には、ビューの妥当性について検討する必要があります。たとえば、指定された列が指定されたテーブルに実際に存在するかどうか、あるいはクエリの実行を高速化するインデックスが列に設定されているかどうかについて検討する必要があります。ArcSDE によって作成されたビューを後から変更する方法を選択した場合は、クエリの正確さと効率だけでなく、ArcSDE クライアントで使用することの妥当性についても、ユーザの責任となります。たとえば、1 対多のビューを作成するとフィーチャクラスの ObjectID が重複する場合があります。この場合、ObjectID の値は一意であると想定されているため、ArcMap や ArcCatalog などのアプリケーションで予想外の動作が発生することがあります。
マルチバージョン対応ビュー
マルチバージョン対応ビューには、SQL を使用してジオデータベースのテーブルまたはフィーチャクラスに特定のバージョンでアクセスしたり、これらを編集できるように、データベース ビュー、ストアド プロシージャ、トリガ、および関数が組み込まれています。
マルチバージョン対応ビューを作成するには、sdetable コマンドに create_mv_view 操作を指定します。sdetable -o create_mv_view コマンドの構文は次のとおりです。
sdetable –o create_mv_view –T <view_name> –t <table_name> [–i {<direct connection> | <service> | <port#>}] [–s <server_name>] [–D <database>] –u <DB_User_name> [–p <DB_User_password>] [–N] [–q]
sdetable コマンドの説明と、コマンドの操作およびオプションについては、『ArcSDE コマンド リファレンス』をご参照ください。
マルチバージョン対応ビューは、個々のバージョン対応登録されたテーブルまたはフィーチャクラスのみを操作します。WHERE 句を使用して複数のテーブルを結合したり、マルチバージョン対応ビューに含める行や列を制限することはできません。
マルチバージョン対応ビューの主な用途は、SQL を使用してバージョン対応登録されたデータを編集することです。ArcGIS クライアント アプリケーションを使用して、マルチバージョン対応ビューから基になるテーブルやフィーチャクラスを編集することはできません。マルチバージョン対応ビューの基になるテーブルやフィーチャクラスは、SQL を使用してジオデータベース データを編集するための ArcGIS の要件を満たす必要があります。詳細については、「SQL を使用して編集可能なデータの種類」をご参照ください。