Beispiel: Erstellen einer Datenbanksicht in Informix mit dem Befehl "sdetable"

Komplexität: Einsteiger Erforderliche Daten: Eigene Daten verwenden

Sie können den Befehl "sdetable" verwenden, um eine Sicht in einer Geodatabase in IBM Informix zu erstellen. Dabei wird die Sicht automatisch in ArcSDE registriert.

Das Beispiel in diesem Thema verdeutlicht, wie Sie mithilfe einer mit dem Befehl "sdetable" erstellten Sicht den Benutzerzugriff auf bestimmte Daten einschränken. Das Beispiel basiert auf einer Tabelle mit der folgenden Definition:

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

Beachten Sie, dass die Tabelle bereits eine Spalte vom Typ "Integer" ohne Nullwerte enthält, die für die Zeilen-ID in ArcSDE verwendet werden kann.

Erstellen einer Sicht mit dem Befehl "sdetable"

Angenommen, Sie möchten, dass der Manager von Abteilung 101 alle Spalten der Tabelle "employees" sehen kann, aber nur die Zeilen mit den Angestellten von Abteilung 101. Sie können "sdetable" verwenden, um eine Sicht mit allen Zeilen zu erstellen, in denen die Abteilungsnummer 101 lautet. Durch die Option "–w" wird die WHERE-Klausel der Abfrage angegeben, die in der Sichtdefinition gespeichert ist.

sdetable -o create_view -T view_dept_101 -t employees 
-c 'emp_id,name,department,hire_date' -w "department = 101" 
-u gdb -p gdb.bdg -i sde:informix -s myidsserver -D testdb

Weitere Informationen zum Befehl "sdetable" finden Sie in der Administration Command Reference.

Mit dem Befehl "sdetable" wird die Sicht in der Informix-Systemkatalogtabelle "sysviews" so definiert, als ob Sie die Sicht mit SQL (Structured Query Language) selbst erstellt hätten. Sie können die Systemtabelle "sysviews" abfragen, um dies zu bestätigen.

Erteilen von Berechtigungen für die Sicht

Der Besitzer der Sicht kann bestimmten Benutzern Berechtigungen für die Sicht erteilen, ohne den Benutzern Zugriff auf die Basistabelle (employees) zu erteilen. In diesem Beispiel erhält der Benutzer "mgr100" eine SELECT-Berechtigung für die Sicht "view_dept_101":

GRANT SELECT ON view_dept_101 TO mgr100;
HinweisHinweis:

In diesem Beispiel sind der Besitzer der Tabelle und der Besitzer der Sicht identisch. Wenn es verschiedene Besitzer gibt, muss der Tabellenbesitzer dem Besitzer der Sicht eine Berechtigung zur Auswahl aus der Tabelle sowie die Fähigkeit, die SELECT-Berechtigung anderen Benutzern zu erteilen, gewähren. Wenn die Berechtigung mit SQL erteilt wird, schließen Sie WITH GRANT OPTION in die Anweisung ein. Wenn die Berechtigung mit dem Befehl "sdetable" zusammen mit "grant" erteilt wird, müssen Sie die Übernahmeoption (–I) angeben.

Testen der Berechtigungen

Melden Sie sich als "mgr100" an, und wählen Sie Datensätze aus "view_dept_101" aus.

SELECT * FROM gdb.view_dept_101;

emp_id         name        dept      hire_date
29             YAN WU      101       04/15/2002
67             LEE VAN     101       11/01/2004
78             SUE CHOO    101       05/31/2005
105            DAN HO      101       10/01/2006
111            ANN ANG     101       12/15/2006
135            BILL BO     101       10/15/2007

Wie erwartet werden nur Datensätze für Mitarbeiter in Abteilung 101 zurückgegeben.

Sichten sind Schemaobjekte, die unabhängig von den Tabellen sind, anhand derer sie ausgefüllt werden. In der folgenden Abfrage hat der Benutzer "mgr100" keinen Zugriff auf die Tabelle "employees", sodass es für "mgr100" so wirkt, als wäre die Tabelle "employees" nicht vorhanden.

SELECT * FROM gdb.employees;

Invalid object name 'gdb.employees'

3/6/2012