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

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).

Программирование триггеров и процедур - student2.ru

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

Домены

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

Программирование триггеров и процедур - student2.ru

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

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

sp_addtype person_name, "char(64)", "NOT NULL"

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

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

Программирование триггеров и процедур - student2.ru

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

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

Программирование триггеров и процедур - student2.ru

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

Наши рекомендации