SQL を使用して、エンタープライズ ジオデータベース内のテーブルおよびフィーチャクラスを基にビューを作成し、ビューのユーザーが利用できる列およびレコードを制限することができ、あるいは 2 つのテーブルまたはフィーチャクラスおよびテーブルからの情報を結合するようにビューを定義することができます。空間列をビュー定義に含めた場合、ビューのユーザーは、ArcGIS Desktop クライアントでマップ内のフィーチャを視覚化できます。
このトピックの例は、IBM Informix データベースでビューを作成する方法を示しています。1 つのビューは、ユーザー アクセスを特定の列に制限します。もう 1 つのビューは、2 つの異なるテーブルからのコンテンツを表示します。この例は、以下の定義を持つテーブルに基づいています。
従業員のテーブル定義
CREATE TABLE employees(
emp_id integer not null,
name varchar(32),
department smallint not null,
hire_date datetime not null;
地域のテーブル定義
CREATE TABLE regions( objectid integer not null, emp_id integer not null, reg_id integer not null, rname varchar(32), region st_geometry
);
テーブルに関する権限の付与
ビューを作成しているユーザーがビューの基になるテーブルの所有者でない場合、テーブルの所有者はビューの作成者に少なくともテーブルの SELECT 権限を付与する必要があります。
この例では、ビューの基になるテーブル (employees と regions) はユーザー gdb が所有しています。ビューを作成しているユーザーは、ユーザー rocket です。
GRANT SELECT
ON gdb.employees
TO rocket;
GRANT SELECT
ON gdb.regions
TO rocket;
アクセスを制限するビューの作成
この例では、ユーザー rocket が employees テーブルを基にビュー (view_dept_201) を作成し、部署番号が 201 の行のみにアクセスを制限しています。
CREATE VIEW view_dept_201
AS SELECT emp_id, name, department, hire_date
FROM gdb.employees
WHERE department = 201;
2 つのテーブルを結合するビューの作成
この例では、ビュー (emp_regions_view) は、emp_id 列に基づいて空間テーブル (フィーチャクラス) を非空間テーブルと結合しています。このビューは、regions フィーチャクラスからの ObjectID、空間列 (region)、および地域名 (rname) に加えて、employees テーブルからの従業員名および ID を含んでいます。
CREATE VIEW emp_regions_view
AS SELECT (e.emp_name,e.emp_id,r.objectid,r.rname,r.region)
FROM employees e, regions r
WHERE e.emp_id = r.emp_id;
ビューに対する権限の付与
ビューの権限を特定のユーザーに付与することができます。また、これらのユーザーにベース テーブル (employees および regions) へのアクセスを許可する必要はありません。この例では、ユーザー dispatch_mgr は 両方のビューの SELECT 権限を付与されています。
GRANT SELECT ON rocket.view_dept_201 TO dispatch_mgr;
GRANT SELECT ON rocket.emp_region_view
TO dispatch_mgr;
ユーザー dispatch_mgr は、view_dept_201 にアクセスして部署番号 201 のすべての従業員に関する従業員レコードを表示し、ArcMap または ArcGIS Pro のデータベース接続から、emp_region_view にアクセスしてすべての地域を表示できるようになりました。dispatch_mgr がビューで地域を検索した場合、ArcGIS は、地域名、およびその地域内のすべての従業員の名前と ID を返します。