
242
Часть II. Структурированный язык запросов SQL
ставления, то редактируется набор результатов запроса. Но мо-
дификация не должна воздействовать на запрос - она должна воз-
действовать на значения в таблице, к которой был сделан запрос,
и таким образом изменять вывод запроса.
При этом может возникнуть ряд неоднозначных ситуаций.
Вспомним рассмотренное выше представление, выводящее фа-
милию студента, наименование предмета и оценку. Предполо-
жим, что это представление является модифицируемым и необ-
ходимо из него удалить строку. Если каким-либо специальным
образом не оговорить правила удаления, то неясно - удаление
строки из представления повлечет за собой удаление оценки из
таблицы успеваемости USP. студента из таблицы STUDENTS,
предмета из PREDMET или какой-то комбинации этих записей.
Итак, если команды модификации могут выполняться в пред-
ставлении, то оно считается модифицируемым; в противном слу-
чае оно предназначено только для чтения при запросе. Основное
отличие между ними заключается в том, что модифицируемое
представление - это представление, в котором команда модифи-
кации может выполниться так. чтобы изменить только одну за-
пись основной таблицы в каждый момент времени, не воздейст-
вуя на другие строки любой таблицы. Использование этого прин-
ципа на практике, однако, затруднено. Кроме того, некоторые
представления, которые являются модифицируемыми в теории,
на самом деле не являются модифицируемыми в SQL.
Критерии, по которым определяют, является ли представле-
ние модифицируемым в SQL, следующие:
• представление должно основываться только на одной ба-
зовой таблице;
• оно должно содержать первичный ключ этой таблицы;
• оно не должно иметь никаких полей, которые бы явля-
лись агрегатными функциями;
• оно не должно содержать DISTINCT в своем определении;
• представление не должно использовать GROUP BY или
HAVING в своем определении,
• желательно, чтобы оно не использовало в своем опреде-
лении подзапросы;
• оно может быть использовано в другом представлении, но
это представление должно также быть модифицируемым;
• оно не должно использовать константы, строки или вы-
ражения значений среди выбранных полей вывода;
Глава 2.6. Представления
243
• для команды INSERT оно может содержать любые поля ос-
новной таблицы, которые имеют ограничение NOT NULL.
если другое ограничение по умолчанию не определено.
Таким образом, модифицируемые представления фактически
подобны фрагментам базовых таблиц, отображая определенную
часть их содержимого. Они могут ограничивать определенные
строки путем использования предикатов или специально имено-
ванных столбцов, некоторые поля исключать из вывода, но в ко-
нечном счете, такие представления предоставляют пользователю
значения непосредственно, не выводя информацию с использова-
нием составных функций и выражений
Различия между модифицируемыми представлениями и пред-
ставлениями, предназначенными только для чтения, не случайны.
Цели, для которых их используют, различны: модифицируемые
представления, в основном, используются точно так же. как и
базовые таблицы. Фактически, пользователи не могут даже осоз-
нать, является ли объект, который они запрашивают, базовой
таблицей или представлением, т.е. в основном это средство защи-
ты для скрытия частей таблицы, являющихся конфиденциальны-
ми или не относящихся к потребностям данного пользователя.
Представления режима только для чтения, с другой стороны,
позволяют получать и форматировать данные более рационально.
Они дают целый арсенал сложных запросов, которые можно вы-
полнить и повторить снова, сохраняя полученную информацию.
Наконец, результаты этих запросов мопт затем использоваться в
других запросах самостоятельно, что позволяет избежать слож-
ных предикатов и снизить вероятность ошибочных действий.
Приведем ряд примеров. Следующее представление выводит
количество оценок, полученных всеми студентами в тот или иной
день. Оно является представлением только для чтения, т.к. со-
держит в определении агрегатную функцию и GROUP BY:
CREATE VIEW PRCOUNT (UDATE, COL)
AS SELECT UDATE, COUNT (*)
FROM USP
GROUP BY UDATE;
Следующее представление является модифицируемым в силу
того, что оно удовлетворяет перечисленным выше условиям. В
качестве вывода в нем содержатся данные об успеваемости по
предмету с кодом 2003, т.е. математике: