Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Обновление представлений в коммерческих СУБД




Лекция 9

Обновление представлений и стандарт ANSI/ISO

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

• Должен отсутствовать предикат distinct; т.е. повторяющиеся строки не должны исключаться из таблицы результатов запроса.

• В предложении from должна быть задана только одна таблица, которую можно обновлять; т.е. у представления должна быть одна исходная таблица, а пользователь должен иметь соответствующие права доступа к ней. Если исходная таблица сама является представлением, то оно также должно удовлетворять этим условиям.

• Каждое имя в списке возвращаемых столбцов должно быть ссылкой на простой столбец; в этом списке не должны содержаться выражения, вычисляемые столбцы или статистические функции.

• Предложение where не должно содержать подчиненный запрос; в нем могут присутствовать только простые условия отбора.

• В запросе не должны содержаться предложения group by и having.

Перечисленные требования базируются на принципе, который запомнить легче, чем сами требования:

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

Если представление соответствует этим требованиям, то над ним и над исходной таблицей можно выполнять имеющие смысл операции вставки, удаления и обновления.

Контрольные вопросы

1. Опишите действие и синтаксис команды Delete SQL.

2. Дайте определение представления данных; опишите действие и синтаксис команды создания представлений.

3. Особенности сгруппированных обновлений.

4. Критерии обновляемости представлений.

 

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

Правила обновления представлений неодинаковы в различных СУБД, и обычно они довольно подробны. Некоторые представления, например созданные на основе сгруппированных запросов, не обновляются ни в одной СУБД, так как эта операция просто не имеет смысла. Некоторые типы представлений в одних СУБД обновлять можно, в других можно только частично, а в третьих вообще нельзя. Это нашло свое отражение в стандарте SQL2: в нем расширен круг обновляемых представлений и допускается значительное разнообразие правил обновлений для различных СУБД. Чтобы узнать правила обновления представлений в какой-нибудь конкретной СУБД, лучше всего обратиться к руководству пользователя или поэкспериментировать с различными типами представлений.

 

Контроль над обновлением представлений (предложение WITH CHECK OPTION)

Если представление создается посредством запроса с предложением where, то в представлении будут видны только строки, удовлетворяющие условию отбора. Остальные строки в исходной таблице присутствуют, но в представлении их нет.

Это представление является обновляемым как по стандарту ANSI/ISO, так и в большинстве коммерческих СУБД. В него можно добавить информацию посредством инструкции INSERT,

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

В СУБД имеются механизмы обнаружения таких инструкций и предотвращения их выполнение. SQL позволяет организовать этот вид контроля целостности представления путем создания представлений с режимом контроля. Данный режим задается в инструкции create view с помощью предложения with CHECK OPTION:

Когда для представления установлен режим контроля, СУБД автоматически проверяет каждую операцию INSERT или UPDATE, выполняемую над представлением, чтобы удостовериться: полученные в результате строки удовлетворяют условиям отбора в определении представления. Если добавляемая или обновляемая строка не удовлетворяет этим условиям, то выполнение инструкции insert или update завершается ошибкой; другими словами, операция не выполняется.

Стандарт SQL2 позволяет также указывать параметр контроля: CASCADE или LOCAL. Этот параметр применим только к тем представлениям, в основе которых лежит не таблица базы данных, а другое представление. В основе этого, исходного, представления может лежать другое представление и т.д. Для каждого из представлений в такой цепочке может быть задан (или не задан) режим контроля. Если представление верхнего уровня создано с предложением with CASCADE CHECK OPTION, то любая попытка обновить такое представление вынудит СУБД просмотреть всю цепочку представлений нижнего уровня и проверить те из них, для которых задан режим контроля. Если же представление верхнего уровня создано с предложением WITH LOCAL check OPTION, то СУБД ограничится проверкой только этого представления. Считается, что параметр CASCADE установлен по умолчанию; его можно не указывать.

Из вышесказанного должно быть понятно, что введение режима контроля приводит к значительным затратам на выполнение инструкций INSERT и update по отношению к "многоуровневым" представлениям. Тем не менее, он играет важную роль в обеспечении целостности базы данных. Если обновляемое представление создается с целью повысить безопасность базы данных, то следует всегда задавать режим контроля. Тогда пользователь не сможет путем модификации представления воздействовать на данные, доступ к которым ему запрещен.

 




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 830; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.