Найти в Дзене

День 193. Представление - view - вью -вьюшка.

Представление - view - вью -вьюшка в базе данных. Представление (view) — виртуальная производная переменная отношения, значением которой является результат вычисления реляционного выражения (выполнения запроса), заданного при создании представления (такое выражение должно ссылаться хотя бы на одну переменную отношения). Упрощённо: SQL-запрос, который можно выполнять, обращаясь к нему по заранее указанному имени. Сразу же рассмотрим ещё одно очень важное определение. Материализованное представление (materialized view) — производная переменная отношения, значением которой является сохранённый результат заранее вычисленного реляционного выражения (выполнения запроса), заданного при создании материализованного представления (такое выражение должно ссылаться хотя бы на одну переменную отношения). Повторное вычисление и сохранение полученного результата происходит согласно правилам, определённым при создании материализованного представления. Упрощённо: SQL-запрос, который можно выполнять, об

Представление - view - вью -вьюшка в базе данных.

Представление (view) — виртуальная производная переменная отношения, значением которой является результат вычисления реляционного выражения (выполнения запроса), заданного при создании представления (такое выражение должно ссылаться хотя бы на одну переменную отношения). Упрощённо: SQL-запрос, который можно выполнять, обращаясь к нему по заранее указанному имени. Сразу же рассмотрим ещё одно очень важное определение.

Материализованное представление (materialized view) — производная переменная отношения, значением которой является сохранённый результат заранее вычисленного реляционного выражения (выполнения запроса), заданного при создании материализованного представления (такое выражение должно ссылаться хотя бы на одну переменную отношения). Повторное вычисление и сохранение полученного результата происходит согласно правилам, определённым при создании материализованного представления. Упрощённо: SQL-запрос, который можно выполнять, обращаясь к нему по заранее указанному имени, и результат выполнения которого сохраняется для дальнейшего использования. Важно! Для описания этого понятия примерно с одинаковой частотой используют как термин «материализованное представление» (materialized view), так и термин «постоянное представление» (persistent view).

-2
-3

Пример

Вот так будет выглядеть SQL-запрос для решения какой-то задачи

-4

Этот запрос выглядит достаточно громоздко, он сложен для написания и понимания, а его доработка (при условии, что он используется в нескольких местах) с высокой вероятностью приведёт к возникновению ошибок.
Чтобы избежать всех этих неудобств, можно «обернуть» этот запрос в представление, что выглядит следующим образом:

-5

И теперь для получения тех же самых данных достаточно выполнить вот такой примитивный запрос (вьюшку):

-6

Некоторые особенности представлений:

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

Почему каждой базе данных не создать огромное количество представлений:
• Избыточность. Иногда представления просто не нужны. Например, база данных небольшая, бизнес-логика простая, модель безопасности тривиальная
— здесь представления будут просто лишним слоем абстракции между приложением и базой данных.
• Дополнительный код. Представления не появляются и не существуют сами
по себе. Их нужно продумать, создать, протестировать, корректировать при
изменении базы данных или бизнес-логики. Это требует дополнительных
трудозатрат и повышает вероятность возникновения ошибок.
• Ограниченность возможностей. Использование представлений для модификации данных пусть и реализовано во многих СУБД, но имеет широкий спектр ограничений, потому можно утверждать, что не любую операцию с базой данных можно выполнить с помощью представлений.