Представления

Представление (VIEW) – это виртуальная, т.е. не существующая в БД таблица, которая ссылается на данные, фактически хранящиеся в одной или нескольких базовых таблицах. С точки зрения СУБД представлением является хранимый SELECT-запрос (с логикой соединения входящих в него базовых таблиц и фильтрации данных), из результирующей выборки которого можно выбирать данные, как если бы это была базовая таблица. Исходными таблицами представления могут быть не только базовые таблицы, но и другие представления.

Представления могут быть обновляемыми (выборка данных выполняется из одного объекта БД) и необновляемыми (выборка данных выполняется одновременно из нескольких логически связанных объектов БД).

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

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

Для повышения скорости обработки поисковых запросов может применяться механизм материализованных представлений.

Материализация означает, что при создании материализованного представления СУБД создает временную таблицу, заполняя её данными SELECT-запроса, хранящегося в теле определения представления.

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

SELECT-запросы к материализованным представлениям обрабатываются с той же скоростью, что и запросы к реальным таблицам БД.

Материализованные представления рекомендуется применять при использовании сложных SELECT-запросов (в частности, SELECT с DISTINCT, UNION, GROUP BY и HAVING) к таблицам (выборкам) большого объема в случае, если эти таблицы обновляются сравнительно редко.

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

Применение представлений обусловлено следующими их свойствами:

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

  • представления позволяют скрыть структуру БД. Например, единственное представление может служить для построения соединения, которое является отображением взаимосвязанных столбцов или строк из нескольких таблиц. Такое представление скрывает тот факт, что эти данные на самом деле принадлежат разным таблицам;

  • представления помогают упростить составление SQL-запросов. Например, с помощью представления пользователь может выбирать информацию из нескольких таблиц, не зная, как осуществлять сложный коррелированный запрос;

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

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