Программирование триггеров и процедур
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