Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диго С.М. Базы данных проектирование и использование.doc
Скачиваний:
723
Добавлен:
14.05.2016
Размер:
12.04 Mб
Скачать

Ограничения при использовании представлений

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

Чтобы не была нарушена целостность БД, должны соблюдаться следующие ограничения:

  • нельзя корректировать данные представлений, полученных на основе нескольких базовых таблиц (в некоторых СУБД это ограниче­ние менее жесткое);

  • при определении представления не должно использоваться со­ единение таблицы «сама с собой»;

  • нельзя манипулировать данными представлений, полученных на основе оператора группирования (GROUP BY);

  • нельзя корректировать вычисляемые поля;

  • представление должно содержать один и только один запрос, т.е. не допускается использование UNION, EXCEPT, INTERSECT;

  • включающий запрос представления не может содержать пред­ложение DISTINCT;

  • ни на один столбец нельзя ссылаться в SELECT более одного раза.

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

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

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

Специфицировать WITH CHECK OPTION в операторе CREATE VIEW можно только для обновляемых представлений.

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

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

Создавать представления можно и при проектировании БД с ис­пользованием CASE-систем.

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

Для того чтобы исключить некоторые из полей или провести другие изменения в представлении, следует воспользоваться редактором пред­ставлений (View Editor).

Поскольку в целевой СУБД представление реализуется в виде опе­ратора SQL, а, как известно, диалекты SQL различаются в разных СУБД, то и окна редактора представлений несколько различаются в зависимости от выбранной целевой СУБД. Для сравнения на рис. 7.1 представлен вид окна для целевой СУБД Access, а на рис. 7.2 - для целевой СУБД Oracle.

Для того чтобы отобрать поля, которые должны входить в пред­ставление, следует воспользоваться вкладкой Select в окне редактора представлений (см. рис. 7.2).

Таблицы, на основе которых формируется представление, указы­ваются на вкладке From (рис. 7.3). Если на этой вкладке добавить таблицы в окно From, то на схеме появится связь представления с соответствующей таблицей.

На вкладке Where (рис. 7.4) можно задать условие отбора и дру­гие предложения оператора SELECT.

Возможность создать представление в ERWin имеется для всех целевых СУБД, даже для тех (например, Access), в которых оператор CREATE VIEW в явном виде не поддерживается.

На вкладке SQL (рис. 7.5) можно увидеть текст сгенерированных предложений SQL.

Таким образом, как мы видим, создать представление при исполь­зовании ERWin несколько легче, чем при написании оператора CREATE VIEW непосредственно на языке SQL.