Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 09 Лекция 1 (13).doc
Скачиваний:
1
Добавлен:
13.11.2019
Размер:
130.05 Кб
Скачать

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

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

  • Если столбец в представлении создается с использованием обобщающей функции, то этот столбец может указываться в предложениях SELECT и ORDER BY тех запросов, в которых осуществляется доступ к данному представлению. В частности, подобный столбец не может использоваться в предложении WHERE, а также не может быть аргументом в обобщающей функции любого из запросов, обращающихся к данному представлению.

  • Сгруппированное представление никогда не должно соединяться с таблицами базы данных или другими представлениями.

13.5. Обновление данных в представлениях.

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

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

  • в его определении не используется ключевое слово DISTINCT, т.е. результатов определяющего запроса не исключаются дублирующиеся строки;

  • каждый элемент в списке предложения SELECT определяющего запроса представляет собой имя столбца (а не константу, выражение или обобщающую функцию), причем имя каждого из столбцов упоминается в этом списке не более одного раза;

  • в предложении FROM указана только одна таблица – т.е. представление должно быть создано на базе единственной таблицы, по отношению к которой пользователь должен обладать необходимыми правами доступа; если исходная таблица сама является представлением, то это представление также должно отвечать указанным условиям; данное требование исключает возможность обновления любых представлений, построенных на базе соединения, объединения (UNION), пересечением (INTERSECT) или разности (EXEPT) таблиц;

  • предложение WHERE не должно включать никаких вложенных запросов типа SELECT, которые ссылаются на таблицу, указанную в предложении FROM;

  • Определяющий запрос не должен содержать предложений GROUP BY и HAVING.

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

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