- •Отображение логического и физического уровня модели данных в eRwin
- •Компоненты диаграммы eRwin и основные виды представлений диаграммы
- •Инструменты для создания модели в eRwin
- •Идентификация сущностей. Сущности в eRwin
- •Связи (relationships) в eRwin
- •Реализация ссылочной целостности с помощью eRwin
- •Графическое редактирование модели
- •Альтернативные ключи
- •Инвертированные индексы
- •Связи категоризации
- •Хранение информации в модели eRwin
- •2.2. Расширенные функции eRwin Обратное проектирование (Reverse engineering)
- •Синхронизация с базой данных
- •Интерфейсы к субд
- •Поддержка средств 4gl
- •Программирование триггеров и процедур
- •Правила и начальные значения
- •Генерация отчетов
- •Настройка режимов отображения
- •Заключение
- •1.2.Сравнительный анализ case-средств информационного моделирования. Общие выводы
Программирование триггеров и процедур
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"
