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

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

Create view (пользовательское имя представления) as (команда select)

[with check option] – с опцией проверки

Также популярны опции local (локальный, ближний), remote (удалённый).

В первом случае соответствующая команда select ссылается только на данные клиента. Удалённое представление ссылается на данные сервера.

Представление – это именованная выборка. Таблица получает пользовательское имя.

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

create view Young_Customers as select (что-то)

create view Young_Kazan_Customers

as select * from Young_Customers

where city=’Казань’;

CustomerYoung _CustomersYoung_Kazan_Customers

Процесс создания представлений обратен процессу проектирования БД.

В какой степени к такой виртуальной таблице можно относиться как к таблице реальной, физической? Команды выборки могут ссылаться не только на базовые таблицы, но и на представления. В реальности это означает, что при выполнении соответствующей выборки исполняется вложенный подзапрос, соответствующий определению данного представления. В отличие от хранения промежуточных результатов в реальных таблицах (например, CurSOR), обращение к представлению даёт гарантированно актуальную информацию.

Проблемы модификации представлений

Можно ли модифицировать представления (изменять их значения)?

Очевидно, что это не всегда возможно даже теоретически. В реальности модификация представлений может означать лишь модификацию физических таблиц. Так, например, добавить запись в представление «Казанские покупатели» означает в действительности добавление записи в таблицу «Покупатели» со значением поля city=’Казань’. Изменение значений полей появившихся при этом записей снова означает модификацию исходной записи. Очевидно, подобное, обратное по отношению к выборке преобразование, существует не всегда.

X

2

3

5

Sqr

4

9

25

create view Average as

select city, avg(credit) as Avg

from Customer

group by city

update Average set Avg=Avg+100;

Даже если такое преобразование существует теоретически, оно должно быть реализуемо практически. ANSI предлагает считать модифицируемыми представления, которые базируются лишь на одной базовой таблице (слишком сильное допущение, не требуемое в реальных системах). Все базовые таблицы должны иметь первичные ключи; все они должны быть включены в выборку.

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

Замечание. Модифицируемые представления должны ссылаться только на модифицируемые.

Реальные версии SQL могут накладывать и другие ограничения.