Mithilfe von SQL können Sie Sichten aus den Tabellen und Feature-Classes einer Enterprise-Geodatabase erstellen und anpassen, welche Spalten oder Datensätze Benutzer mit Anzeigeberechtigung sehen dürfen; des Weiteren können Sie in einer Sicht Informationen aus zwei Tabellen bzw. aus einer Feature-Class und einer Tabelle zusammenfassen. Wenn Sie in die Sichtdefinition die räumliche Spalte einbeziehen, können Benutzer die Features auf einer Karte in einem ArcGIS Desktop-Client anzeigen.
Mit den Beispielen in diesem Thema wird veranschaulicht, wie in einer IBM Db2-Datenbank Sichten erstellt werden. Mit einer Sicht wird der Benutzerzugriff auf bestimmte Spalten eingeschränkt. In der anderen Sicht werden Inhalte aus zwei verschiedenen Tabellen dargestellt. Die Beispiele basieren auf Tabellen mit den folgenden Definitionen:
Tabellendefinition für "employees"
CREATE TABLE employees(
emp_id integer not null,
name varchar(32),
department smallint not null,
hire_date date not null
);
Tabellendefinition für "regions"
CREATE TABLE regions( objectid integer not null, emp_id integer not null, reg_id integer not null, rname varchar(32), region st_geometry
);
Erteilen von Berechtigungen für die Tabellen
Wenn der Benutzer, der die Sicht erstellt, nicht der Besitzer der Tabellen ist, auf denen die Sicht basiert, muss der Tabellenbesitzer dem Ersteller der Sicht mindestens eine Berechtigung zur Auswahl aus den Tabellen erteilen.
In diesem Beispiel befinden sich die Tabellen, auf denen die Sicht basiert ("employees" und "regions"), im Besitz von Benutzer "gdb". Die Sicht wird durch den Benutzer "rocket" erstellt.
db2 => connect to testdb user gdb using gdb.dbg
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = GDB
Local database alias = TESTDB
db2 => GRANT SELECT
ON employees
TO USER rocket;
db2 => GRANT SELECT
ON regions
TO USER rocket;
Erstellen einer Sicht zur Zugriffsbeschränkung
In diesem Beispiel erstellt Benutzer "rocket" eine Sicht (view_dept_201) für die Tabelle "employees", um den Zugriff auf die Zeilen zu beschränken, deren Abteilung ("department") 201 ist:
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = ROCKET
Local database alias = TESTDB
db2 => CREATE VIEW view_dept_201
AS SELECT emp_id, name, department, hire_date
FROM gdb.employees
WHERE department = 201;
Erstellen einer Sicht zum Verbinden zweier Tabellen
In diesem Beispiel wird mit der Sicht "emp_regions_view" eine Tabelle mit räumlichen Daten (Feature-Class) anhand der Spalte "emp_id" mit einer Tabelle mit nichträumlichen Daten zusammengeführt. Die Sicht enthält die Spalte "ObjectID", die räumliche Spalte (region) und den Namen der Region (rname) aus der Feature-Class "regions" sowie die Spalten "employee name" und "ID" aus der Tabelle "employees".
connect to testdb user gdb using gdb.dbg
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = GDB
Local database alias = TESTDB
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;
Erteilen von Berechtigungen für die Sichten
Sie können bestimmten Benutzern Berechtigungen für die Sichten erteilen, ohne den Benutzern Zugriff auf die Basistabellen ("employees" und "regions") zu erteilen. In diesem Beispiel erhält der Benutzer "dispatch_mgr" eine SELECT-Berechtigung für beide Sichten:
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 10.5.5
SQL authorization ID = ROCKET
Local database alias = TESTDB
db2 => GRANT SELECT
ON rocket.view_dept_201
TO USER dispatch_mgr;
db2 => GRANT SELECT
ON rocket.emp_region_view
TO USER dispatch_mgr;
Der Benutzer "dispatch_mgr" hat nun Zugriff auf die Sicht "view_dept_201" und kann die Datensätze aller Mitarbeiter der Abteilung 201 sehen; über eine Datenbankverbindung in ArcMap oder ArcGIS Pro hat er Zugriff auf die Sicht "emp_region_view", in der er alle Regionen sehen kann. Wenn der Benutzer "dispatch_mgr" in der Sicht eine Abfrage auf eine Region durchführt, gibt ArcGIS den Namen der Region sowie die Namen und die IDs aller Mitarbeiter in dieser Region zurück.