Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции СУБД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
6.32 Mб
Скачать

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

Таблицы определяют структуру базы данных и организацию информации в ней.

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

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

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

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

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

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

14.1.Создание представлений

Инструкция CREATE VIEW, синтаксическая диаграмма которой изображена на рисунке 8, используется для создания представлений. В ней указываются имя представления и запрос, лежащий в его основе. Для успешного создания представления необходимо иметь разрешение на доступ ко всем таблицам, входящим в запрос.

Рисунок 8 Синтаксическая диаграмма инструкции CREATE VIEW

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

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

Пример 1

Создать представление, показывающее информацию о служащих, работающих в отделении компании города Минска.

create view Minsk as

select * from staff

where bno in (select bno

from branch

where city = ‘Минск’);

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

Пример 2

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

create view info as

select fname, lname, position

from staff;

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

Пример 3

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

Создать представление, включающее избранную информацию обо всех квартирах сотрудника …

create view property as

select street, area, type, rent

from property_for_rent

where sno = (select sno from staff

where fname=’…’ and lname=’…’);

Пример 4

Создать представление с информацией о средней заработной плате сотрудников по каждому отделению.

create view average_salary as

select bno, avg(salary)

from staff

group by bno;

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

После определения представления к нему можно обращаться с помощью инструкции SELECT как к обычной таблице:

select * from average_salary;.