Программирование триггеров и процедур

ERwin реализует собственный макроязык для подготовки прототипов триггеров и процедур. Схема использования прототипов заключается в подготовке шаблона для различных типов триггеров (например, триггер, реализующий логику каскадного удаления — ON DELETE CASCADE). Базовые шаблоны встроены в ERwin, но пользователь может определить свои собственные шаблоны и использовать их вместо стандартных.
Макроязык шаблонов реализует большое количество макросимволов, ссылающихся на различные объекты базы данных, например:

%Action — расширяется в UPDATE/INSERT/DELETE;

%ForEachAtt(,) {} — циклическое выполнение группы операторов над каждым атрибутом таблицы;

%ForEachEntity() { } — циклическое выполнение функций над всеми таблицами;

%If, %else — операторы условного управления. Например, шаблон триггера для реализации поддержки on delete cascade:

%Action /* ERwin Builtin %Datetime */

/* %Parent %VerbPhrase %Child ON PARENT DELETE CASCADE */

delete %Child

from %Child,deleted

where

/* %%JoinFKPK(%Child,deleted, = , and) */

%JoinFKPK(%Child,deleted, = , and)

В модели, приведенной выше для связи positions — salary_track будет сгенерирован следующий прототип триггера:

DELETE /* ERwin Builtin Fri Jun 02 17:12:09 1995 */

/* positions приносила доход salary_track ON PARENT DELETE CASCADE */

delete salary_track

from salary_track, deleted

where

/* %%JoinFKPK(%Child,deleted, = , and) */

salary_track.empl_id = deleted.empl_id

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

Правила и начальные значения

В ERwin поддерживаются два типа правил (проверок допустимости значений) и начальных (по умолчанию) значений. Правило и умолчание может быть указано для проверки со стороны клиента (например, в PowerBuilder) и со стороны сервера.
При задании правила или умолчания для клиентской части эти атрибуты переносятся в репозитарий средства 4GL.
На рис.10 показан диалог для задания значений по умолчанию, устанавливаемых в PowerBuilder. Заметьте, что в одном и том же диалоге задаются умолчания, подставляемые как на стороне клиента, так и на стороне сервера (в данном случае — Sybase).

Программирование триггеров и процедур

Рис. 10. Определение умолчания для PowerBuilder

Домены

Часто используемые комбинации свойств можно поименовать. Такая комбинация свойств, называемая доменом, может наследоваться. Например, можно определить домен Дата для отображения всех колонок с датами в приложении в одном стиле, домен Дата рождения ребенка наследует все атрибуты от домена Дата и вносит дополнительный атрибут — цвет отображения.
Пример определения домена показан на рис.11.

Программирование триггеров и процедур

Рис. 11. Определение домена

Назначение доменов для сервера аналогично назначению доменов для клиента. Различие заключается в том, что правила и начальные значения для сервера определяются в генерации схемы базы данных, а аналогичные атрибуты для клиента — сохраняются в репозитарии средства 4GL.
Другое назначение доменов для сервера — определение пользовательских типов данных. Пользовательскому типу данных ставится в соответствие тип, известный СУБД. При выполнении синхронизации с базой данных для СУБД, поддерживающих пользовательские типы, выполняется соответствующие команды. Например, для Sybase выполняется команда:

sp_addtype person_name, char(64), NOT NULL

Генерация отчетов

По завершении работы над информационной моделью, как правило, распечатываются логический и физический уровни диаграммы, а также отчет по соответствиям сущность-таблица, атрибут-имя колонки, сущность-атрибуты. Диаграмма физической модели является необходимым, почти достаточным и очень удобным материалом для разработчиков программ. Дополнительная информация для группы разработчиков прикладных программ содержится в отчете имена таблиц и колонок, который может быть легко построен с помощью ERwin. Выбор режима построения отчета показан на рис.12.

Программирование триггеров и процедур

Рис. 12. Варианты выдачи отчета

Сгенерированный отчет может быть сохранен на диск (колонки разделяются запятыми, выравниваются или разделяются табуляцией), или передан в текстовый процессор (или электронную таблицу) через интерфейс DDE.
Для подготовки развитых отчетов может быть использован специальный генератор отчетов фирмы Logic Works — RPTwin, который интегрирован с ERwin. Пример конструирования отчета в RPTwin приведен на рис.13.

Программирование триггеров и процедур

Рис. 13. Конструирование отчета в RPTwin

Случайные записи:

4. Базы данных. Транзакции. Триггеры и хранимые процедуры | Технострим


Похожие статьи:

Добавьте постоянную ссылку в закладки. Вы можете следить за комментариями через RSS-ленту этой статьи.
Комментарии и трекбеки сейчас закрыты.