Создание представлений (view)

Представление (view) является логической (виртуальной) таблицей, записи в которую отобраны с помощью оператора SELECT. Представлением называется запрос на выборку, которому присвоили имя, а затем сохранили в базе данных. Представление позволяет пользователю увидеть результаты сохраненного запроса, а SQL обеспечивает доступ к этим результатам таким образом, как если бы они были простой таблицей.

Представления используются по нескольким причинам:

– они позволяют сделать так, что разные пользователи базы данных будут видеть ее по-разному;

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

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

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

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

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

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

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

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

Для создания представления мы можем использовать SQL-предложе­ние CREATE VIEW, для его модификации – предложение ALTER VIEW, а для удаления – предложение DROP VIEW. Предложение CREATE VIEW используется для создания представлений, позволяющих извлекать данные, удовлетворяющие некоторым требованиям. Представление создается в текущей базе данных и хранится как отдельный объект. Наилучший способ создания представления – создать запрос SELECT и, проверив его, добавить недостающую часть CREATE VIEW.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: