База данных представления уменьшают сложность взаимодействия с конечным пользователем и ограничивают доступ пользователей к данным, содержащимся в таблицах базы данных. По сути, представление использует результаты запрос к базе данных для динамического заполнения содержимого таблицы виртуальной базы данных.
Зачем использовать просмотры?
Есть две основные причины предоставить пользователям доступ к данным через представления, а не прямой доступ к таблицам базы данных:
- Представления обеспечивают простую и детальную безопасность. Используйте представление, чтобы ограничить данные, которые пользователь может видеть в таблице. Например, если у вас есть таблица сотрудников и вы хотите предоставить некоторым пользователям доступ к записям штатных сотрудников, вы можете создать представление, содержащее только эти записи. Это намного проще, чем альтернатива (создание и поддержка теневой таблицы), и обеспечивает целостность данных.
- Представления упрощают взаимодействие с пользователем. Представления скрывают сложные детали таблиц базы данных от конечных пользователей, которым они не нужны. Если пользователь выгружает содержимое представления, он не увидит столбцы таблицы, которые не выбраны представлением, и они могут не понять. Это защищает их от путаницы, вызванной плохо названными столбцами, уникальными идентификаторами и ключи от стола.
Создание представления
Создать представление довольно просто: просто создайте запрос, содержащий ограничения, которые вы хотите применить, и поместите его в команду 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. Материализованные представления
Представление - это виртуальная таблица. А материализованный вид это то же самое представление, записанное на диск и доступное, как если бы это была отдельная таблица.
Когда вы запускаете запрос к представлению, вторичный запрос, который является источником представления, выполняется в реальном времени, а затем эти результаты возвращаются в исходный основной запрос. Если ваши представления исключительно сложны или ваш основной запрос требует большого количества хеш-соединений между несколькими таблицами и представлениями, ваш основной запрос будет выполняться со скоростью черепахи.
Материализованное представление ускоряет выполнение запроса, поскольку оно функционирует как предварительно скомпилированный запрос, записанный на диск, и поэтому выполняется так же быстро, как таблица. Однако материализованные представления хороши ровно настолько, насколько хороши процедуры событий, которые их обновляют. В конечном итоге, при хорошем обслуживании, материализованные представления ускоряют работу с небольшим компромиссом во времени обновления задержки, без потребность в кучке теневых таблиц, которые могут стать бездействующими и либо занимать дисковое пространство, либо создавать чьи-то запросы неуместно.