Example: Creating a database view in Informix using SQL and registering it with ArcSDE

複雑さ: 初心者 データ要件: 独自のデータの使用

SQL を使用して、ArcSDE ジオデータベースにビューを作成できます。ArcGIS でビューを検索するには、ビューを ArcSDE に登録する必要があります。

ビューを ArcSDE に登録するには、ビューの基になるテーブルに RowID 列が含まれている必要があります。ArcSDE によって使用される RowID 列は、テーブルまたはビューの行を一意に識別できるよう、NULL 以外の一意の整数列になっています。RowID 列を登録せずにビューを作成することもできますが、このようなビューは ArcGIS において機能が制限されます。これは、ArcGIS での選択およびクエリに登録済みの RowID 列が必要であるためです。

The example in this topic shows how a view created in IBM Informix using SQL can be registered with ArcSDE. The example is based on a table with the following definition:

CREATE TABLE employees(
  emp_id integer not null, 
  name varchar(32), 
  department smallint not null, 
  hire_date datetime not null;

テーブルには、ArcSDE の RowID として使用できる NULL でない整数列(emp_id)が含まれています。ビューを ArcSDE に登録できるようにするには、この列がビューの定義に含まれている必要があります。

Grant privileges on the table

ビューを作成しているユーザがビューの基になるテーブルの所有者でない場合、テーブルの所有者はビューの作成者に少なくともテーブルの SELECT 権限を付与する必要があります。ビューの所有者がビューの権限を他のユーザに付与する必要がある場合、テーブルの所有者はビューの所有者に、権限を他のユーザに付与する権限を付与する必要があります。

この例では、ビューの基になるテーブル(employees)はユーザ gdb が所有しています。ビューを作成しているユーザは、ユーザ rocket です。また、rocket ユーザはビューの権限を他のユーザに付与する必要があります。したがって、gdb ユーザは rocket ユーザに employees テーブルの SELECT 権限を付与し、rocket がビューの SELECT 権限を他のユーザに付与できるように WITH GRANT OPTION を指定する必要があります。

GRANT SELECT 
ON employees 
TO rocket WITH GRANT OPTION;

Create a view

この例では、ユーザ rocket が employees テーブルを基にビューを作成し、部署番号が 201 のレコードのみにアクセスを制限しています。

CREATE VIEW view_dept_201 
AS SELECT emp_id, name, department, hire_date
FROM gdb.employess 
WHERE department = 201;

Grant privileges on the view

ビューの権限を特定のユーザに付与することができます。また、これらのユーザにベース テーブル(employees)へのアクセスを許可する必要はありません。この例では、ユーザ mgr200 は ビュー view_dept_201 の SELECT 権限を付与されています。

GRANT SELECT ON view_dept_201 TO mgr200;

Test privileges

mgr200 としてログインし、view_dept_201 のレコードを選択します。

SELECT * FROM rocket.view_dept_201; 

emp_id   name       dept   hire_date 
112      LOLLI POP  201    06/30/2007 
134      VAN CHIN   201    10/15/2007 
150      DON GUN    201    03/01/2009

期待どおり、部署 201 の従業員のレコードだけが返されます。

Register the view with ArcSDE

ArcGIS クライアント アプリケーションからビューのレコードを検索または選択するには、ビューを ArcSDE に登録する必要があります。ビューを ArcSDE に登録すると、ArcSDE の TABLE_REGISTRY システム テーブルにレコードが追加されます。

ビューを登録するには、sdetable コマンドに register 操作を指定して使用します。ビューを ArcSDE に登録できるのは、ビューの所有者だけです。したがって、view_dept_201 を登録するときに、rocket ユーザの名前とパスワードを sdetable コマンドに指定する必要があります。

sdetable -o register -t rocket.view_dept_201 -c emp_id -C SDE 
-i sde:informix -s myidsserver -D testdb -u rocket -p nopeeking

この例では、RowID(emp_id)は ArcSDE による管理として登録されます。ビューが読み取り専用の場合は、RowID をユーザ管理として登録できます。

sdetable コマンドの詳細については、『コマンド リファレンス』をご参照ください。


7/10/2012