データベース ビューは、ビュー定義で指定したテーブルからデータを選択するストアド クエリです。 ビューには、1 つのテーブル、複数のテーブル、サブクエリを含めることができます。
ビューはデータベース内にオブジェクトとして存在するため、ユーザーがビューを作成できるようにするには専用のデータベース権限が必要です。 データベース管理システムに関するドキュメントに目を通し、該当するデータベース タイプのビューで何がサポートされていて、何がサポートされていないかを確認してください。
[データベース ビューの作成 (Create Database View)] ジオプロセシング ツールを使用するか、データベース接続のショートカット メニューから [新規作成] > [ビュー] の順にオプションを選択して、データベース ビューをエンタープライズ ジオデータベース内に作成したり、データベース管理システムに固有の SQL を使用したりすることができます。
注意:
ビューがジオデータベース テーブルとフィーチャクラスで定義されている場合や [データベース ビューの作成 (Create Database View)] ジオプロセシング ツールを使用してビューを作成した場合でも、ビューはジオデータベースに自動的に登録されません。 このビューは、明示的に登録しない限り、ジオデータベースに登録されません。
ビューを使用する理由
データベース ビューをジオデータベース内に作成する理由のいくつかを次に示します。
- ビューでは、あらかじめ定義した方法で行または列のサブセットを表示できます。 これにより、データベースからクライアントに転送されるデータの量を削減し、パフォーマンスを向上させることができます。
- ビュー内の列または行を制限して、ユーザーに表示されるデータを制御することもできます。 たとえば、在庫の評価や製品の注文に携わっている従業員は、製品を購入した人の名前も販売価格も確認する必要がありません。 その情報が格納されているテーブル全体へのアクセス権をこれらの従業員に付与するのではなく、これらの列が含まれていないビューを作成し、そのビューに対する select 権限を在庫担当の従業員に付与することができます。
- 列と行を制限して、ArcGIS データ要件を満たすこともできます。 たとえば、ArcGIS では、1 つの空間列を含むテーブルしか操作できません。 複数の空間列を含む空間テーブルを使用するために、ビューを作成できます。 ビューごとに 1 つの空間列を含めることができます。 同様に、ArcGIS では、1 つの空間参照を使用するテーブルしか操作できません。 複数の空間参照に格納されているデータがテーブルに含まれている場合は、同じ空間参照を使用する行 (フィーチャ) だけが含まれるビューを作成できます。
- ビューはデータベースで共通のクエリを体系化し、複数のユーザーが利用できるようにします。 これにより、ユーザーが各自で複雑なクエリを作成する必要がなくなります。
- ビューでは、さまざまなテーブルやその他のビューのデータを結合できます。
- 集計関数を使用して、ビューのデータを合計することができます。 この場合も、データベースからクライアントに転送されるデータの量を削減し、パフォーマンスを向上させることができます。
- ビューを定義するときにフィーチャクラスを非空間テーブルに結合し、これら両方の列を連結することができます。
ビューを使用する場合の注意事項
ArcGIS でビューを操作する場合には、次の点に注意してください。
- ビューをジオデータベースに登録している場合でも、ArcGIS クライアントまたはサービスでビューを通してデータを編集することはできません。
- 基になるテーブルのスキーマに対して行われた変更は、ビューに反映されません。 追加された列をビューに含めるには、これらの列を含むようにビューを再定義する必要があります。
注意:
SQL または他のデータベース ツールを使用して既存のビューを変更することで、ArcGIS で作成されたビューを置き換える場合は、クエリの正確さと効率だけでなく、ArcGIS クライアントで使用することの妥当性についても、ユーザーの責任となります。 たとえば、1 対多のビューを作成するとフィーチャクラスのオブジェクト ID が重複する場合があります。 この場合には、オブジェクト ID に一意の値が含まれている必要があるため、ArcGIS Pro などのアプリケーションと Web サービスで予期しない動作が発生します。
- ほとんどの場合、ビューに含めるジオデータベース テーブルとフィーチャクラスは、トラディショナル バージョン対応登録することも、履歴管理に対応できるようにすることもできません。 トラディショナル バージョニングに対応しているジオデータベース テーブルまたはフィーチャクラスでビューを作成した場合は、ベース テーブル内のデータだけが表示され、差分テーブル内の編集内容も履歴管理テーブルに格納されているレコードも表示されません。 ArcGIS クライアントを使用して編集内容をビューで表示するには、編集内容をリコンサイルしてデフォルト バージョンにポストし、ジオデータベースを完全圧縮する必要があります。
- ArcGIS で使用されているビューの定義に空間列を含める場合は、次の要件が満たされている必要があります。
- ビューに表示できる空間列は 1 つだけです。
- ビュー定義には、空間列と同じフィーチャクラスのオブジェクト ID 列を含める必要があります。 フィーチャクラスのオブジェクト ID が含まれない場合、オブジェクト ID と Shape 列の間の関係が一意とならず、ArcGIS で検索やレンダリングを行う際に結果が不正確になる可能性があります。
ジオデータベースに登録されたビュー
ビューをジオデータベース内に作成したら、[ジオデータベースに登録 (Register with Geodatabase)] ジオプロセシング ツールを実行して、そのビューをジオデータベース オブジェクトにすることができます。
ジオデータベースにビューを登録する理由は次のとおりです。
- ジオデータベースにビューを登録すると、ビューに関する情報がジオデータベースのシステム テーブルに格納されます。 この情報 (ジオメトリ タイプ、空間参照、範囲など) により、空間フィールドを含むビューをマップに追加する際のパフォーマンスが向上します。
- ビューの所有者である場合、ジオデータベースに登録されているビューでメタデータを定義できます。