Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
12.65 Mб
Скачать

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

Представление – это виртуальная таблица, т. е. таблица, которая сама по себе не существует, но для пользователя выглядит таким образом, как будто она существует. В отличии от запросов SELECT, можно корректировать поля, входящие в представление и использовать их во фразе FROM.

Общий синтаксис предложения CREATE VIEW (создать представление): CREATE VIEW имя–представления [(имя–столбца[ , имя–столбца] . . .)] AS подзапрос [WITH CHECK OPTION];

Подзапрос не может включать ни оператора UNION, ни фразы ORDER BY.

Пример. CREATE VIEW КРАСНЫЕ_ДЕТАЛИ (НОМЕР–ДЕТАЛИ, НАЗВАНИЕ, ВЕС, ГОРОД) AS SELECT НОМЕР_ДЕТАЛИ, НАЗВАНИЕ, ВЕС, ГОРОД FROM P WHERE ЦВЕТ = 'Красный';

Пример. CREATE VIEW PQ (НОМЕР_ДЕТАЛИ, ОБЩЕЕ_КОЛИЧЕСТВО) AS SELECT НОМЕР_ДЕТАЛИ, SUM (КОЛИЧЕСТВО) FROM SP GROUP BY НОМЕР_ДЕТАЛИ;

Пример.

CREATE VIEW ПАРЫ_ГОРОДОВ (ГОРОД_ПОСТАВЩИКА, ГОРОД_ДЕТАЛИ) AS SELECT S. ГОРОД, Р. ГОРОД FROM S, SP, P WHERE S. НОМЕР_ПОСТАВЩИКА =SP. НОМЕР_ПОСТАВЩИКА AND SP.HOMEP_ДЕТАЛИ = Р.НОМЕР_ДЕТАЛИ;

Пример.

CREATE VIEW ЛОНДОНСКИЕ_КРАСНЫЕ_ДЕТАЛИ AS SELECT НОМЕР_ДЕТАЛИ, ВЕС FROM КРАСНЫЕ_ДЕТАЛИ WHERE ГОРОД = 'Лондон';

Пример.

CREATE VIEW ХОРОШИЕ_ПОСТАВЩИКИ AS SELECT НОМЕР_ПОСТАВЩИКА, СОСТОЯНИЕ, ГОРОД FROM S WHERE СОСТОЯНИЕ > 15 WITH CHECK OPTION;

Фраза «WITH CHECK OPTION» (с проверкой) указывает, что для операций UPDATE и INSERT над этим представлением должна осуществляться проверка, которая обеспечивает удовлетворение определяющего представление предиката обновленной или вставляемой строкой (СОСТОЯНИЕ>15).

Предложение DROP VIEW имеет следующий синтаксис:

DROP VIEW имя_представления;

В результате исполнения этого предложения уничтожается специфицированное представление,

Пример. DROP VIEW КРАСНЫЕ_ДЕТАЛИ;

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

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

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

CREATE VIEW RATE

DEPARTMENT. COUNT(*), SUM(SALARY), SUM(PREMIUM), MAX(SALARY), MIN(SALARY),AVERAGE (SALARY), MAX(PREMIUM), MIN(PREMIUM), AVERAGE (PREMIUM) AS SELECT DEPARTMENT, COUNT(*), SUM(SALARY). SUM(PREMIUM). MAX(SALARY),

MIN(SALARY), AVERAGE (SALARY), MAX(PREMIUM), MIN(PREMIUM),

AVERAGE (PREMIUM) FROM EMPLOYEE GROUP BY DEPARTMENT;

Объеденные представления. Часто представления базируются на многотабличных запросах. Такое использование позволяет упростить разработку пользовательского интерфейса, сохранив при этом корректность схемы базы данных.

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

CREATE VIEW DEBTORS ISBN, TITLE, NUM_READER, NAME, ADRES, HOME_PHON, WORK_PHON,DATA_OUT

AS

SELECT ISBN, TITLE, NUM_READER, NAME, ADRES.HOME_PHON, WORK_PHON, DATA_OUT

FROM BOOKS, EXEMPLAR, READERS

WHERE BOOKS.ISBN = EXEMPLAR.ISBN AND

EXEMPLAR.NUM_READER = READERS.NUM_READER AND

EXEMPLAR.PRESENT = FALSE AND

EXEMPLAR.DATA OUT < GetDate();

Рассмотрим преимущества представлений.

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

Они дают возможность различным пользователям по-разному видеть одни и те же данные, возможно, даже в одно и то же время.

Упрощается пользовательское восприятие. Очевидно, что механизм представлений дает возможность пользователям сосредоточить внимание именно на тех данных, которые представляют для них интерес, и игнорировать остальные данные.

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

Для скрытых данных автоматически обеспечивается секретность. «Скрытые данные» обозначает здесь данные, невидимые через некоторое заданное представление. Ясно, что такие данные защищены от доступа через это конкретное представление.

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