- •Раздел 2 проектирование серверной части приложения баз данных
- •Тема 2.1 sql-сервер InterBase и его основные компоненты
- •Тема 2.2 Физическая организация базы данных InterBase.
- •Тема 2.3 Создание базы данных.
- •Тема 2.4 Домены
- •Создание домена.
- •Тема 2.5 Создание таблиц
- •Определение ключей и ссылочных целостностей.
- •Тема 2.6 Работа с индексами.
- •Тема 2.7 Добавление, изменение, удаление записей
- •Добавление записей
- •Изменение записей.
- •Тема 2.8 Работа с просмотрами view.
- •Тема 2.9 Работа с хранимыми процедурами.
- •Изменение и удаление хранимых процедур
- •Алгоритмический язык хранимых процедур.
- •Тема 2.10 Работа с триггерами
- •Создание триггеров.
- •Тема 2.11 Использование генераторов.
Тема 2.8 Работа с просмотрами view.
В базе данных может быть определен просмотр, который представляет собой виртуальную таблицу, в которой представлены записи из одной или нескольких таблиц. Порядок формирования записей в просмотре определяется оператором SELECT.
Для создания просмотра используется оператор:
CREATE VIEW <имя просмотра>
[(столбец1 [, столбец2 …])]
AS <оператор SELECT> [WITH CHECK OPTION];
в котором
[(столбец1 [, столбец2 …])] – необязательный список столбцов
<оператор SELECT> - полнофункциональный оператор SELECT
[WITH CHECK OPTION] – определяет, допускать ли для обновляемых просмотров ввод записей, неудовлетворяющих условию формирования просмотра.
Пример:
Создается просмотр, содержащий поля таблицы RASHOD и цену товара из таблицы TOVARY.
CREATE VIEW RASH_FULL
AS
SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, T.ZENA
FROM RASHOD R, TOVARY T
WHERE R.TOVAR= T.TOVAR WITH CHECK OPTION
Для удаления просмотра используется оператор:
DROP VIEW <имя просмотра>
Преимущества создания просмотров:
однажды определив просмотр, не нужно всякий раз формировать оператор SELECT; это важно для сложных операторов, выполняющих соединение нескольких таблиц.
просмотр может представлять подмножество столбцов из таблицы, что важно для обеспечения сохранности данных и усиления безопасности.
Способы формирования просмотров:
1. Вертикальный срез таблицы, когда в просмотр включается подмножество столбцов таблицы:
CREATE VIEW RASH_V
AS
SELECT DAT_RASH, TOVAR, KOLVO
FROM RASHOD
2. Горизонтальный срез таблицы, когда в просмотр включаются все столбцы, но не все записи:
CREATE VIEW RASH_H
AS
SELECT *
FROM RASHOD
WHERE TOVAR= «МОЛОКО»
3. вертикально-горизонтальный, когда в просмотр включается подмножество столбцов и подмножество строк.
CREATE VIEW RASH_H_V
AS
SELECT DAT_RASH, TOVAR, KOLVO
FROM RASHOD
WHERE TOVAR= «МОЛОКО» ;
4. подмножество строк и столбцов соединения разных таблиц:
CREATE VIEW RASH_FULL
AS
SELECT R.DAT_RASH, R.TOVAR, R.KOLVO, T.ZENA
FROM RASHOD R, TOVARY T
WHERE R.TOVAR= T.TOVAR ;
Имена столбцов в просмотре должны указываться в том случае, когда в качестве столбца просмотра определяется выражение.
Пример:
CREATE VIEW STOIM_RASH (DAT_RASH, TOVAR, STOIM)
AS
SELECT R.DAT_RASH, R.TOVAR, R.KOLVO*T.ZENA
FROM RASHOD R, TOVARY T
WHERE R.TOVAR=T.TOVAR ;
В противном случае имена столбцов указывать необязательно, так как их имена считаются идентичными именам полей, возвращаемых оператором SELECT.
Обновляемые просмотры допускают применение операции добавления, удаления и изменения записей. Для этого просмотр должен удовлетворять следующим условиям:
формироваться из записей только одной таблицы;
оператор SELECT не должен использовать агрегирующих (вычисляемых) функций, режим DISTINCT (в результирующий НД включаются не все записи с одинаковым значением какого-либо столбца, а только одну из них), предложение HAVING (наложение ограничений на группировку записей), соединения таблиц, хранимые процедуры и функции, определенные пользователем .
в просмотр должен быть включен каждый столбец таблицы, имеющий атрибут NOT NULL.
Если просмотр удовлетворяет этим условиям, к нему могут применяться операторы INSERT и UPDATE, а также DELETE .