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

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

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

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

Только в этом случае операции обновления будут выполняться корректно, независимо от того, имеются ли в базе данных представления, определенные над моне ктсн емР или между моне В1сн емР, М1РР Е КТСН ЕМР и ЕМР. Очевидный вывод из приведенного анализа заключается в том, что единственным способом обеспечить корректность выполнения операций обновления через представления (допускаюшие операции обновления) 395 Основы бвэ данных Курс является включение в определение каждого представления раздела НТТН САНСАОКО СННСК ОРТ1ОМ. В этом случае поведение системы булет оставаться корректным при введении дополнительных представлений над представлением мОРМ н1сн дмР, между представлениями МОРЯ н1сн емР и МТООЬН НТСН РМР или между прелставлением М1ООЬН НТСН НМР и базовой таблицей РНР, если в определениях всех этих представлений присутствуетраздел МТТН САНСАОЕР СннСк ОРТ1ОМ.

Исторический очерк Завершим обсуждение возможностей применения операций обновления к виртуальным таблицам небольшим экскурсом в историю. На протяжении более чем тридцатилетней истории реляционных баз данных вопрос о возможности однозначной интерпретации операций обновления баз данных через виртуальные таблицы интересовал многих исследователей. Причины этого интереса состоят в следующем. Во-первых, как отмечалось в лекции 3, одной из наиболее привлекательных черт реляционной алгебры является замкнутость относительно понятия отношения. В любой алгебраической операции, операндом которой является отношение, в качестве операнда можно использовать алгебраическое выражение.

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

На мой взгляд, ланная ситуация оказала заметное влияние на подход к решению проблемы применимости операций обновления к виртуальным таблицам, которым руководствуются разработчики языка Я (.. В двух первых международных стандартах (Я)(./89 и Б9(./92) к виду таких виртуальных таблиц прельявлялись чрезмерно строгие требования. Это показывают даже те простые примеры, которые приводились в начале ланного раздела.

И конечно, наличие таких ограничений в стандарте 39в Лекция 17 язык баз данных 80Ы средства манипулирования данными языка приводило к тому, что в реализациях Я.>Ь появлялось много расширений, которые поддерживались только отдельными компаниями-производителями СУБД. Создается впечатление, что когда более десяти лет назад был инициирован проект нового стандарта Я)Ь-3 (который в конце концов привел к появлению Ь0Ь:1999), разработчики находились в состоянии растерянности. Кстати, одна из идей, включавшихся в ранние варианты проекта Я) Ь- 3, состояла в том, чтобы расширить определение представляемой таблицы средствами, позволяющими явно специфицировать действия, которые нужно предпринимать при выполнении над представлением операций 1ккккт, пргтлтк и иккктк.

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

Операции обновления баз данных и механизм триггеров Термин тлригге)т в контексте реляционных баз данных был введен в обиход участниками проекта Яуяеш К (разд. «Введение» лекции 11). В терминологии этого проекта триггером называлась хранимая в базе данных процедура, автоматически вызываемая СУБД при возникновении соответствующих условий. При определении триггера указывались два условия его применимости — общее условие (имя отношения и тип операции манипулирования данными) и конкретное условие (логическое выражение, построенное по правилам, близким к правилам ограничений целостности), а также действие, которое должно быть выполнено над БД при наличии условий применимости.

Конечно, термин триггер в данном контексте является жаргонным. Но, с другой стороны, он достаточно точно соответствует ситуации: для применения процедуры должны быть произведены «возбуждаюшиеа ее действия. Как отмечалось в лекции 11, после завершения проекта оуагегп В на протяжении более десяти лет триггеры не поддерживались ни в одной коммерческой Я0Ь-ориентированной СУБД.

Но затем практически во всех ведущих СУБД механизм триггеров в том или ином виде бьш реализован. Э97 Основы баа данных Курс В стандарте же языка БО) спецификации триггеров отсутствовали до принятия стандарта БО).:1999. По словам главного редактора стандартов ЯгЕ/92 и 301.:1999 Джима Мелтона, эта спецификация была уже полностью готова к люменту принятия Я.>1/92 и не вошла в текст стандарта только по причине ограниченности его объема.

Однако, как мне кажется, этому препятствовали и расхождения в подходах, существовавшие между основными компаниями-производителями СУБД. Заметим, что альтернативным термином по отношению к базам данных, содержащим триперные процедуры, является термин актпивная база данных. Наверное, этот термин более точен, поскольку действительно речь идет о базах данных, содержащих процедуры, которые автоматически вызываются при срабатывании связанных с ними правил. Однако в обиходе пользователей Я~).-ориентированных СУБД по-прежнему более распространен термин триггер. Понятие триггера а 80Е:1998 В языке обеспечиваются возможности определения триггеров, которые вызываются (дорабатывают») при вставке одной или нескольких строк в указанную таблицу, при модификации одной или нескольких строк в указанной таблице или при удалении одной или нескольких строк из указанной таблицы.

Вообще говоря, триггер может производить любое действие, необходимое для соответствующего приложения. Можно определить триггеры, срабатывающие по одному разу для операций 1Н9КПт, црпхтк или ОЯЬКтя, но существует и возможность определения триггеров, вызываемых при вставке, модификации или удалении каждой отдельной строки. Таблица, с которой связывается определение триггера, называется предметной таблицей 1диЬ/ес( гаЫг), а оператор БО)., выполнение которого приводит к срабатыванию триггера, мы будем называть инициирующим (!пбхеплб 5)гх. дттлееиеп 1). Триггеры могут срабатывать после и до реального выполнения инициирующего оператора БО1..

В теле триггера допускается доступ к значениям вставляемых, модифицируемых и удаляемых строк. В случае операции модификации возможен доступ к значениям строк до модификации и к значениям после модификации. В соответствии со стандартом Я ) 1.: 1999 любой триггер ассоциируется только с одной базовой таблицей. Не допускается определение триггеров над представлениями*.

Можно придумать различные способы полезного применения механизма триггеров, но принято считать, что основными областями использования этого механизма являются следующие. * Непонятно, откуда происходит это ограничение. Скорее всею, в будущих версиях стандар- та оно будет снято. 398 Лекция 17 Язык баз данных ЯРЫ средства манипулирования данными ° Журнализацил и аудит. С помощью триггеров можно отслеживать изменения таблиц, для которых требуется поддержка повышенного уровня безопасности.

Данные об изменении таблиц могут сохраняться в других таблицах и включать, например, идентификатор пользователя, от имени которого выполнялась операция обновления; временную метку операции обновления; сами обновляемые данные и т, д. ° Согласование и очистка данных. С любым простым оператором Яг(., обновляющим некоторую таблицу, можно связать триггеры, производящие соответствующие обновления других таблиц.

Например, с операцией вставки новой строки в таблицу ЕМР (прием на работу новою служащего) можно было связать триггер, модифицирующий значения столбцов Рерт емр ио и Рерт тотАР ЯАРа строки таблицы Рерт со значением столбца РЕРТ ИО, которое соответствует номеру отдела нового служащего. ° Операции, не связанные с изменением базы данных. В триггерах могут выполняться не только операции обновления базы данных. Стандарт Я;П позволяет определять хранимые процедуры (которые могут вызываться из триггеров), посылающие электронную почту, печатающие документы и т.

д. Синтаксис определения триггеров и типы триггеров Для более подробного обсуждения механизма триггеров в Я.)(.:(999 необходимо ввести набор синтаксических правил: тттддет де1тптт(оп СНЕАТЕ ТН16ОЕЕ Гг(ддег папе ( ВЕРОНЕ ] АРТЕК ( 1ИЯЕНТ ] РЕьЕТЕ ( ОРРАТЕ [ ОР со1плп сопеаа1(вг ] ) ОИ ГаЫе папе ( ЕЕРЕНЕИС1ИО о1с) ог пеи уа1цев а1(ав 1(вг Шддегес( асгусп ггуддегед асс(оп [ РОН ЕАСН ( ЕОХ [ ЯТАТЕМЕИТ ( ИНЕИ 1е(Г ратеп сопЫГ)опа1 ехргевв(оп т(д)тт рагеп ] Гттддетед ЯОЬ втатевепт гт(ддетед ЯОй вгаге~пепг ::= ЯОЬ ртосес)пге вгатевепг ВЕ61И АТОМТС ЯОЬ ртосес)цте втатеыепт вел(со1оп11вт ЕИР ' В примерах этой лекции мы будем считать, что в столбце парт тотдь вть таблицы рвут хранится суммарное значение заработной платы служатвнх соответствуввцето отдела.

399 Основы бвзданных Курс о1д ог пен уа1пеа а1(ав ::= ОЬО [ вОХ ) [ АЯ ) согге1ао(оп паве МЕХ [ ЕОХ ) [ АЯ ] согге1ао(оп паве Оьп тАВье [ АЯ ) Ыепс(г(ег ИЕХ ТАВЬЕ [ АЯ ) сепг(г(ег Естественно, в языке имеется и конструкция, отменяюшая определение триггера: РЕОР ТЕТССЕЕ Сх(ддег паве. (Конструкция АЬТЕЕ ТВТССЕН в языке ЯОЬ не поддерживается.) Как мы видим, синтаксические правила допускают несколько разновидностей определения триггера. Кратко обсудим эти разновидности. Триггеры вннонн и лнтнн Если в определении триггера указано ключевое слово ВееОее, то триггер будет срабатывать непосредственно до выполнения операции обновления базовой таблицы соответствуюшим инициируюшим оператором Я()Ь.

При задании ключевого слова АЕТЕН триггер будет вызываться немедленно после выполнения инициируюшего оператора. Триггеры тинннт, пнплтн и пньнтн Выбор одного из этих ключевых слов при определении триггера указывает на природу события, которое должно приводить к срабатыванию триггера. При задании ключевого слова 1ИЯЕВТ к срабатыванию триггера может привести только выполнение операции вставки строк в предметную таблицу. Если указываются ключевые слова ОВОАТЕ или ОЕЬЕТЕ, то число возможных событий„приводяших к срабатыванию триггера, возрастает.

Кроме явных операций модификации строк предметной таблицы или удаления из нее строк к срабатыванию триггера могут привести ссылочные действия (см. раздел Средства определения, изменения и ликвидации базовых таблиц» лекции ЬЗ). Заметим, что в стандарте Я()Ь: [999 отсутствует возможность определения триггеров, для которых событием было бы выполнение операции выборки из предметной таблицы.

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

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

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

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