Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование данных в ERWin.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
361 Кб
Скачать
☆

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

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

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

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

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

В ERwin поддерживаются два типа правил (проверок допустимости значений) и начальных (по умолчанию) значений. Правило и умолчание может быть указано для проверки со стороны клиента (например, в PowerBuilder) и со стороны сервера.

При задании правила или умолчания для клиентской части эти атрибуты переносятся в репозитарий средства 4GL.

На рис. 22 показан диалог для задания значений по умолчанию, устанавливаемых в PowerBuilder. Заметьте, что в одном и том же диалоге задаются умолчания, подставляемые как на стороне клиента, так и на стороне сервера (в данном случае - Sybase).

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

Домены

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

Пример определения домена показан на рис. 23.

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

Назначение доменов для сервера аналогично назначению доменов для клиента. Различие заключается в том, что правила и начальные значения для сервера определяются в генерации схемы базы данных, а аналогичные атрибуты для клиента - сохраняются в репозитарии средства 4GL.

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

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