Создание и модификация обзоров. Группы

Управления правами

Цель работы: формирование умений и навыков создания и модификации обзоров, создания ролей и назначения им прав пользователей.

Краткие теоретические сведения

Понятие «обзор»

Обзоры обеспечивают способ создания настраиваемой версии основных таблиц, отображающей только те данные, которые интересуют пользователя или группу пользователей.

Когда обзор определен, с ним можно работать как с обычной таблицей. Обзор может быть получен из одной или нескольких таблиц или других обзоров. Обзоры выглядят также как и обычные таблицы БД, но физически не хранятся в БД. В БД хранится определение обзора.

Создание обзора не создает копию данных, в то же время изменение данных через обзор изменяет данные в основных таблицах.

Обзор представляет собой виртуальную таблицу, которая создается на основе результатов выборки данных из базы командой SELECT. Он может быть создан:

- на основе подмножества столбцов отдельной таблицы;

- на основе подмножества строк отдельной таблицы;

- на основе комбинации подмножества строк и столбцов отдельной таблицы;

- на основе комбинации подмножества строк и столбцов объединения нескольких таблиц;

- на основе результатов работы хранимой процедуры.

Создание обзоров

Синтаксис создания обзора следующий:

CREATE VIEW <имя обзора> [(<столбец обзора1>, <столбец обзора2>, ….)]

AS <условие выборки SELECT> [WITH CHECK OPTION];

Пользователь, создавший обзор, является его владельцем и имеет на него все права, включая право передачи прав другим пользователям, триггерам и процедурам. Пользователь может получить права на обзор без получения доступа к исходным таблицам.

В табл. 14.1 приведены синтаксические конструкции команды CREATE VIEW.

Типы обзоров

Обзоры могут быть:

- обновляемыми (updatable);

- необновляемыми (read-only).

Для обновляемого обзора необходимо, чтобы:

- он представлял собой подмножество одной таблицы или обновляемого обзора;

- все столбцы таблицы, не вошедшие в обзор, допускали значение NULL;

- команда SELECT, на которой основан обзор, не содержала подзапросов, конструкций DISTINCT, HAVING, огрегирующих функций, присоединенных таблиц, пользовательских функций или хранимых процедур.

Т а б л и ц а 14.1

Конструкция Описание
<имя обзора> Имя обзора. Имя должно быть уникальным в перечне имен обзоров, таблиц и хранимых процедур
<столбец обзора 1> Имя столбца обзора. Имя должно быть уникальным в перечне имен столбцов обзора Имя обязательно, если обзор включает столбцы-выражения. Если имя не указано, используется имя соответствующего столбца таблицы SELECT. Имена столбцов обзора соответствуют столбцам выборки SELECT
Условие выборки SELECT Задает условия выборки данных посредством команды SELECT. Может использоваться полный синтаксис команды за исключением конструкции ORDER BY
WITH CHECK OPTION Предотвращает операции INSERT и UPDATE в обзоре, если они нарушают условие поиска в конструкции WHERE команды SELECT


Обзоры только для чтения также могут обновляться, но на основе использования триггеров. В этом случае все действия по обновлению данных в таблицах выполняются соответствующими триггерами обзора.

Для обеспечения возможности обновления данных (команды INSERT, UPDATE) пользователь должен получить соответствующие права. Для создания обновляемого обзора его создатель должен иметь все права на таблицы, используемые обзором.

Пример 1. Создать обзор для вывода списка всех студентов.

CREATE VIEW STUD_1 AS

SELECT * FROM STUDENT

WHERE univ_id NOT IN(1);

Пример 2. Обновить данные в обзоре.

UPDATEstud_1

SETsurname = 'Дубков'

WHEREkurs = 4;

Обновление данных в обзоре с конструкцией

WITH CHECK OPTION

Если обзор создан с опцией проверки (WITH CHECK OPTION), то при попытке обновления или вставки данных проверяется, удовлетворяют ли новые данные условиям выборки, заданным конструкцией WHERE. Данные будут записаны только при выполнении этих условий.

З а м е ч а н и я:

1. Опция применима только для обновляемых обзоров.

2. Значения могут быть вставлены через обзор только для тех столбцов, которые входят в обзор. Для столбцов таблицы, не вошедших в обзор, InterBase устанавливает значения NULL.

НЕЛЬЗЯ непосредственно изменить обзор. Сначала его нужно удалить, а затем создать заново командой CREATE VIEW.

Удаление обзора означает удаление из БД его описания, но не самих данных. Удаление обзора разрешено пользователю, создавшему обзор, при выполнении условия: обзор не должен использоваться другим обзором, хранимой процедурой или ограничением целостности (CHECK-конструкцией). В этом случает нужно предварительно удалить все объекты, использующие данный обзор.

Синтаксис команды удаления обзора:

DROP VIEW <имя обзора>;

Наши рекомендации