Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс.doc
Скачиваний:
372
Добавлен:
02.05.2014
Размер:
4.3 Mб
Скачать

4.3.3. Процедуры, правила (триггеры) и события в базах данных

Рассмотренные выше способы обработки данных через зап­росы, фильтрацию, поискисортировкуданных реализуют до­статочнопростые информационные потребностипользовате­лей АИС либо являются лишь отдельными элементами в пос­ледовательности взаимоувязанных операций при решении сложных информационных задач в предметной области АИС. План последовательности таких операций, отражающий опре­деленный алгоритм реализации информационных задач, может быть достаточно сложным, и каждый раз при возникновении соответствующей информационной потребности должен создаваться (воспроизводиться) и реализовываться пользователем за­ново.

К примеру, одной из задач АИС по делопроизводству мо­гут быть функции организации, а также контроля за прохожде­нием и отработкой входящих документов. Реализация этой фун­кции может осуществляться по следующему алгоритму:

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

• известить пользователей АИС, имеющих полномочия на принятие резолюций по входящим документам (руководители организации или их секретариаты), и предоставить им доступ к сформированному набору данных;

• получить результаты резолюций на входящих докумен­тах, известить и предоставить соответствующие документы пользователям-исполнителям, включить контроль на исполне­ние документов;

• получить от пользователей-исполнителей данные по ис­полнению документа и снять соответствующие документы с контроля либо известить пользователей, наложивших соответ­ствующие резолюции, о не исполнении к установленному сро­ку их резолюций.

Реализация таких сложных алгоритмов обработки данных в ранних СУБД осуществлялась через создание и постоянное выполнение в АИС прикладных программ на языках высокого уровня (Фортран, Кобол, С), которыепостоянно опрашивали базу данных на предмет обнаружения соответствующих ситу­ацийи реализовывали сложные алгоритмы обработки. Как и в случае с простыми запросами до появления языков баз данных, такой подход требует квалифицированных посредников-про­граммистов между пользователем и базой данных и, кроме того, обусловливает значительные вычислительные затраты на фун­кционирование АИС.

Разработчиками известной СУБД SyBaseбыл предложен другой оригинальный подход, который можно проиллюстри­ровать следующей схемой:

Функционирование базы данных согласно приведенной схе­ме осуществляется следующим образом:

Рис. 4.26. Принцип механизма событий, правил и процедур в ба­зах данных

1. В базе данных определяются так называемые события (database events), связанные с изменениями данных —добав­ление новой записи (ей) в определенную таблицу, изменение записи(ей), удаление записи (ей).* Для реализации механизма событий в языке SQLвведены специальные конструкции (Create DBEvent«Имя» — создать событие, Exec SQL Get DBEvent— получить событие и т.д.);

2. Для каждого события в базеданных определяются пра­вила (triggers) по проверке определенных условий состояния данных.Соответственно в SQLвведены конструкции для опи­сания правил (Create Rule«Имя» — создать правило);

3. В зависимости от результатов проверки правилв базе данных запускаются на выполнение предварительно определен­ные процедуры.Процедуры представляют собойпоследова­тельности команд по обработке данных, имеющие отдельное смысловое значение,и могут реализовываться на упрощенном макроязыке (последовательность команд запуска запросов или выполнения других действий, например по открытию-закры­тию форм, таблиц и т. п.) или на языке 4GL,встроенном в СУБД.

* Событиями могут быть также и производные от перечисленных событии, на­пример, событие, заключающееся в том, что какая-либо транзакция (процесс, пользо­ватель) намеревается изменить запись (но еще не изменила)—так называемое собы­тие «До обновления». Аналогично, могут быть определены события «После обновле­ния», «До удаления», «После удаления» и т. п.

В последнем случае процедуры представляют собой подпрог­раммы для осуществления сложных операций обработки и ди­алога с пользователем. В язык SQLтакже введены специаль­ные конструкции описания процедур (Create Procedure«Имя» — создать процедуру).

Суть идеи механизма событий, правилипроцедурзаклю­чается в том, что они после определенияхранятся(!!!)*вмес­те с данными. Соответствующие конструкции введены в стан­дарт SQL — SQL2.Ядро СУБДпри любом изменении состоя­ния базы данных проверяет, не произошлили ранее «поставленные на учет»события,и, если они произошли, обес­печиваетпроверкусоответствующихправилизапусксоответ­ствующихпроцедуробработки.

* То есть зарегистрировать для автоматической обработки в БД.

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

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