Пример. Создание представления базы данных в DB2 с помощью SQL
Для отображения таблиц и классов пространственных объектов многопользовательской базы геоданных можно использовать SQL.
Приведенные в настоящей теме примеры показывают, как создать в IBM DB2 простое представление для просмотра с ограничением доступа пользователей к другим столбцам. Этот пример построен на базе таблицы со следующим определением:
CREATE TABLE employees(emp_id integer not null, name varchar(32),
department smallint not null, hire_date date not null);
Предоставление прав доступа к таблице
Если создающий представление пользователь не является владельцем таблицы или таблиц в этом представлении, владелец таблиц должен предоставить создателю как минимум права доступа Select. Если владетелю предоставления требуется возможность передачи прав доступа к представлению другим пользователям, владелец таблицы должен предоставить владельцу представления права передачи прав доступа другим пользователям.
В данном примере таблица, на базе которой построено представление (employees), принадлежит пользователю gdb. Представление создается пользователем rocket. также пользователю rocket требуется возможность предоставления прав доступа к представлению другим пользователям. Таким образом, пользователь gdb должен передать пользователю rocket права доступа SELECT и WITH GRANT OPTION, чтобы пользователь rocket мог передавать другим пользователям права доступа SELECT.
db2 => connect to testdb user gdb using gdb.dbg
Database Connection Information
Database server = DB2 9.5.5
SQL authorization ID = GDB
Local database alias = TESTDB
db2 => GRANT SELECT
ON employees
TO USER rocket WITH GRANT OPTION;
DB20000I The SQL command completed successfully.
Создание представления.
В этом примере пользователь rocket создает представление таблицы employees и ограничивает доступ к нему только пользователям из отдела 201:
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 9.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;
DB20000I The SQL command completed successfully.
Предоставление прав доступа к представлению
Права доступа к представлению можно предоставлять определенным пользователям, не передавая им права доступа к базовой таблице (employees). В данном примере пользователю mgr200 предоставлены права доступа SELECT к представлению view_dept_201:
db2 => connect to testdb user rocket using nopeeking
Database Connection Information
Database server = DB2 9.7.4
SQL authorization ID = ROCKET
Local database alias = TESTDB
db2 => GRANT SELECT ON view_dept_201 TO USER mgr200;
DB20000I The SQL command completed successfully.
Тестовые права доступа
Войдите в систему как mgr200 и выберите записи view_dept_201:
db2 => connect to testdb user mgr200 using mgr200
Database Connection Information
Database server = DB2 9.7.4
SQL authorization ID = MGR200
Local database alias = TESTDB
db2 => 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.