Управление доступом к данным с помощью представлений в SQL

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

Зачем использовать просмотры?

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

  • Представления обеспечивают простую и детальную безопасность. Используйте представление, чтобы ограничить данные, которые пользователь может видеть в таблице. Например, если у вас есть таблица сотрудников и вы хотите предоставить некоторым пользователям доступ к записям штатных сотрудников, вы можете создать представление, содержащее только эти записи. Это намного проще, чем альтернатива (создание и поддержка теневой таблицы), и обеспечивает целостность данных.
  • Представления упрощают взаимодействие с пользователем. Представления скрывают сложные детали таблиц базы данных от конечных пользователей, которым они не нужны. Если пользователь выгружает содержимое представления, он не увидит столбцы таблицы, которые не выбраны представлением, и они могут не понять. Это защищает их от путаницы, вызванной плохо названными столбцами, уникальными идентификаторами и
    instagram viewer
    ключи от стола.

Создание представления

Создать представление довольно просто: просто создайте запрос, содержащий ограничения, которые вы хотите применить, и поместите его в команду CREATE VIEW. Вот общий синтаксис:

СОЗДАТЬ ПРОСМОТР имя просмотра КАК

Например, чтобы создать представление штатного сотрудника, введите следующую команду:

СОЗДАТЬ ПРОСМОТР ПОЛНЫЙ КАК
ВЫБЕРИТЕ first_name, last_name, employee_id
ОТ сотрудников
ГДЕ статус = 'FT';

Изменение представления

При изменении содержимого представления используется тот же синтаксис, что и при создании представления, но используется команда ALTER VIEW вместо команды CREATE VIEW. Например, чтобы добавить ограничение к полному просмотру, которое добавляет номер телефона сотрудника к результатам, введите следующую команду:

ALTER VIEW full-time AS
ВЫБЕРИТЕ first_name, last_name, employee_id, phone
ОТ сотрудников
ГДЕ статус = 'FT';

Удаление представления

Удалить представление из базы данных просто с помощью команды DROP VIEW. Например, чтобы удалить представление штатного сотрудника, используйте следующую команду:

DROP VIEW полный рабочий день; 

Просмотры vs. Материализованные представления

Представление - это виртуальная таблица. А материализованный вид это то же самое представление, записанное на диск и доступное, как если бы это была отдельная таблица.

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

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