Главная » Просмотр файлов » С.Д. Кузнецов - Основы баз данных

С.Д. Кузнецов - Основы баз данных (1121716), страница 83

Файл №1121716 С.Д. Кузнецов - Основы баз данных (С.Д. Кузнецов - Основы баз данных) 83 страницаС.Д. Кузнецов - Основы баз данных (1121716) страница 832019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 83)

Разработчики стандарта сочли, что область применения триггеров такого рода чересчур узка (трудно придумать какое-либо применение, кроме как для журнализации и аудита). Лвкцня !7 Язык баэ данных ВОЫ средства манипулирования данными Триггеры долги ЕРАТеием7 Если в определении триггера присугствует конструкция Рок кдсн кох, то триггер будет вызываться для каждой строки предметной таблицы, обновляемой инициируюшим ВОЕ-оператором, Если же задано Рок кдсн ктйткмкнт (или явная спецификация Рок клен отсутствует), то триггер сработает один раз на всем протяжении процесса выполнения инициируюшего $0) -оператора. Реедел инее Включение в определение триггера раздела хнкн с соответствуюшим условным выражением позволяет более точно специфицировать условие применимости триггера.

Вычисление условного выражения производится над строками предметной таблицы„и триггер срабатывает только в том случае, когда значением условного выражения является и"ие. Понятно, что виды и интерпретация логических выражений, допускаемых в разделе хнкн, различаются у триггеров с РОК КАСН КОХИ у триггеров с РОк КДСн ВтлткМКНт. Впервом случае условное выражение вычисляется для одной строки, которая должна быть обновлена инициируюшим В Н)=оператором. Во втором — усдовное выражение вычисляется дпя всей предметной таблицы целиком и, по всей видимости, должно базироваться на чкванторных» предикатах. Следует также понимать, что вычисление условия раздела хнкн данного триггера производится только в том случае, если произошло событие срабатывания триггера.

Тело триггера Операции, которые должны быть выполнены при срабатывании триггера, специфицируются в синтаксической конструкции гтзддетес) БОь агагевзепс (будем называть ее инициируемым 50х.-опе/гад!ором). Как видно из синтаксических правил, возможны два вида построения этой конструкции: в виде одиночного оператора Я~1 и в виде списка операторов со скобками вкати Атомгс и кх(). Недоумение читателей может вызвать неуточненная конструкция э0ь ртосес)с ге асасевзепс. Постараемся объяснить ее происхождение и смысл. Дело в том, что в стандарте ЗОЕП999 определено процедурное расширение ВО), называемое ЯИ./РБМ (от Регугугепг огогее/ Мог/и/еу).

Это достаточно большой язык, который мы не будем подробно рассматривать в этом курсе лекций*. Тем не менее для понимания синтаксиса оп- ' Для читателей, которые имеют котя бы минимальный опыт работы с продуктами компании Огас)е, заметим, что во многих своих чертах бОь/РБМ напоминает Р!./5ОЦ Одной из причин, на основании которых мы отказались от описания БОь/РЗМ в этой книге, является то, что до сих пор (первый вариант стандарта БОь/РБМ был опубликован в!996 г) нет ни одной реализапии Я.П., в которой этот стандарт был бы реалиюаан полностью (точнее, ни одна такая реалиэапия не известна автору). 401 Основы баз данных Курс ределения триггеров необходимо отметить, что: (а) ВО(./РВМ включает основные операторы Я.>Е, связанные с обновлением данных; (Ь) язык является вычислительно полным, т.

е. включает развитые средства вычислении; (с) в языке содержатся средства определения и вызова функций и процедур„* и (г)) Я ) Ь/РВМ содержит стандартный комплект управляющих конструкций — циклы, ветвления разных типов и т. д. Тем самым, ЯОь ргосеоцге зйа'ещепг — это любая процедура„определенная на языке БОЬ/РБМ.** В частности, эта процедура может представлять собой оператор ВОЕ обновления базы данных. Обсудим теперьч откуда возникает потребность в составном инициируемом ВО( -операторе. Дело в том, что на практике при определении триггеров в качестве БОь ргосес)цге вгасещепг чаще всего используются операторы БОЬ обновления базы данных. Иногда (и мы покажем это на примере) для корректного определения функциональности триггера одного оператора не хватает, а в ЯОЬ отсутствует возможность определения составных операторов.

Поэтому допускается использование средств определения составных операторов, присутствующих в ЯОЬ/РЯМ (ВЕО1Н АТОМ1С и ЕНР). Для иллюстрации случая, когда при определении триггера достаточно специфицировать один оператор БОЬ, приведем пример определения триггера, условием срабатывания которого является выполнение операции вставки новой строки в таблицу емр (прием на работу нового служащего). Если значение столбца Берт но в очередной вставляемой строке отлично от НОЬЬ, то триггер должным образом модифицирует значения столбцов ЬЕРТ ЕМР НО и ОЕРТ тстав, ЯАЬ строки таблицы БЕРТ со Значением столбца Оерт МО, которое соответствует номеру отдела нового сотрудника (пример 17.10): СНЕАТЕ ТН1СОЕН РЕРТ СОННЕСТ1ОН АГТЕН 1НЯЕНТ ОН ЕМР РОН ЕАСН НОХ ХНЕН (ЕМР.БЕРТ НО 1Я НОТ НОЬЬ) ОРОАТЕ ОЕРТ ЯЕТ РЕРТ ЕМР НО = ОЕРТ ЕМР НО + 1, БЕРТ ТОТАЬ ЯАЬ = ОЕРТ ТОТАЬ ЯАЬ + ЕМР ЯАЬ ХНЕНЕ РЕРТ.РЕРТ НО = ЕМР.РЕРТ НО; * Во многом на этих возмолгностях основываются механизмы БОЬ:!999, предназначенные для определения на уровне пояьзователя новых типов данных и их операций.

Эта тематика такие выходит за пределы данного курса (хотя мы немного затронем соответствующие вопросы в последней лекции этого курса). '" На самом леле, для написания процедур, функций и методов допускается использование не только языка ЯОЬ/РБМ, но и традиционных языков программирования, для которых в стандарте определены правила связывания с Я() Ь. В последней лекции курса мы немного затронем и эту тему. Лекция 17 Язык бвз данных ЯОЬ; средства манипулирования данными Теперь предположим, что при увольнении служащего (удалении строки из таблицы ечр) мы хотим не только должным образом модифицировать таблицу ОЕРТ, но и сохранять (с целью аудита) данные об уволенном служащем в таблице емр ЕТЯм155ец'.

ЕМР О15М155ЕОз Определение соответствующего триггера могло бы выглядеть следующим образом (пример 17,11): СЕЕАТР ТП1ОСпп ЕМР О»ЯМ 551ОЧ АРТ»К ОЕЬптп СИ ЕУР РОЕ ЕАСН ДОХ ВЕС1М АТОМТС 1ЧТО ЕМР Р»ЯЧ ЯЯЕР ЕОХ (ЕМР.ЕМР МО, ЕМР.ЕМР МАМЕ, ЕМР.ОЕРТ ИО~ ОРОАТЕ ОЕРТ ЯЕТ ОЕРТ ЕМР МО = ОЕРТ ЕМР ИΠ— 1, РЕРТ ТОТАЬ ЯАЬ = ОЕРТ ТОТАЬ ЯАЬ - ЕМР ЯАЬ ХНЕКЕ ЭЕРТ.ВЕЕТ МО = ЕМР.ОЕРТ МО Енрп Выполнение триггеров При выполнении каждого триггера система устанавливает контекст выполнения триггера.

Выполнение любого оператора ЯЩ., обновляющего базовую таблицу базы данных, может привести к срабатыванию одного или нескольких триггеров, а выполнение операторов Я3(, содержащихся в триггерах, может привести к обновлению других базовых таблиц. Эти «внутритриггерные» (инициируемые) операторы выполняются в контексте текущего триггера, но их выполнение может привести к срабатыванию других триггеров. Для каждого из «вторичных» триггеров образуется собственный контекст выполнения, позволяющий определить их действия точно и независимо от действий первого набора триггеров. Выполнение вторичных триггеров может привести к срабатыванию «третичных» триггеров и т.

д. — допускается произвольная глубина вложенности. Для каждого триггера на каждом уровне образуется собственный контекст. * для упрощения будем считать, что идентификаторы уволенных служащих не используются повторно. 403 Основы баа данных Курс Контекст выполнения триггера всегда является атомарным, т, е. инициируемый ЕО1.-оператор либо успешно завершается, либо результаты его действия гарантированно отсутствуют в базе данных. Обсудим понятие контекста триггера немного более подробно. Предположим, что в нашей базе данных емР-РВРт-РВО должно поддерживаться правило, в соответствии с которым каждый служащий, становящийся руководителем проекта, автоматически получает прибавку к заработной плате в 10 000 руб.

(Для простоты будем считать, что снятие служащего с должности руководителя проекта не приводит к автоматическому изменению его зарплаты и что для каждого служащего, являющегося руководителем проекта, определен номер отдела, в котором он работает.) Тогда мы могли бы определить триггер СНАМОЕ ММО МО следующим образом: СВЕАТЕ ТВТООЕВ СНАМОЕ МИО ИО АГТЕВ ОРОАТЕ ОР РВО М14О ОМ РВО РОВ ЕАСН ВОХ ОРОАТЕ ЕМР ЯЕТ ЕМР ЯА =- ЕМР ЯА г 10000.00 ХНЕВЕ ЕМР ИО = РВО МИО; Но очевидно, что для поддержания корректности данных в таблице ОЕРТ нам требуется триггер, условием срабатывания которого было бы изменение значений столбца емР ЯАЬ в таблице ЕМР. Определим соответствУющий тРиггеР РЕРТ СОВВЕСТ1ОИ 1; СВЕАТЕ ТВ1СЯЕВ РЕРТ СОВВЕСТТОН 1 АРТЕВ ОРОАТЕ ОР ЕМР ЯА.

ОИ ЕМР ВЕРЕВЕИС1КЯ О 0 ВОХ АЯ ОЕО ЕМР МЕХ ВОХ АЯ МЕХ ЕМР РОВ РАСН ВОХ ОРОАТЕ РЕРТ ЯЕТ РЕРТ ТОТА1 ЯА.. = РЕРТ ТОТА! ЯА! э МЕХ ЕМР.ЕМР ЯАЬ вЂ” О'Р ЕМР.ЕМР ЯА1 ХНЕВЕ ЕМР РЕРТ ИО = РЕРТ РЕРТ ИО. Пусть теперь выполняется операция УРРАТЕ РВО ЯЕТ РВО ММО = 4455 ХНЕВЕ РВО ИО = 554; Сразу после выполнения этой операции сработает триггер СНАХОЕ Мна МО. Этот триггер будет выполняться в контексте, который мы для удобства назовем контекстом Сии Заметим, что исходный оператор модификации в действительности изменяет только одну строку таблицы РВО, но триггеру СЕМИН ММО НО это неизвестно, и он будет Лекция г7 Язык баз данных ЬОЦ средства манипулирования данными работать так, как если бы изменялось произвольное число строк табЛнпы РРО. Выполнение операции модификации таблицы РМР приведет к срабатыванию триггера пРРт СОЯРЕСт1ОИ 1.

Характеристики

Тип файла
PDF-файл
Размер
5,28 Mb
Тип материала
Предмет
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее