Читаем BPwin и Erwin. CASE-средства для разработки информационных систем полностью

Клиент удаляется из таблицы CUSTOMER, и все соответствующие ему строки в таблице ORDER также автоматически удаляются. Правило ссылочной целостности, передающее изменение от одной таблицы к другой, называется CASCADE. При этом все заказы удаленного клиента теряются. Если эту информацию необходимо сохранить, можно переопределить триггер ссылочной целостности так, чтобы записать, например, эту информацию в архивную таблицу.

Клиент удаляется, но номеру клиента в таблице заказов автоматически присваивается нулевое значение. Правило ссылочной целостности, изменяющее текущее значение данных на нулевое, называется SET NULL.

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

Шаблоны триггеров ссылочной целостности связываются с сущностями в зависимости от типа связи и роли сущности в этой связи. Тип связи и роль сущности определяют, какое правило ссылочной целостности будет по умолчанию дополнено шаблоном триггера. Связи могут быть: идентифицирующими, неидентифицирующими (nulls allowed), неидентифицирующими (no nulls), связями подтипа.

Сущность в связи может быть родительская (Parent) или дочерняя (Child). Если сущность является родительской в данной связи, то ERwin присваивает ей шаблон триггера для родительской сущности. Если сущность является дочерней в данной связи, то ERwin присваивает ей шаблон триггера для дочерней сущности. Код триггера, который генерируется шаблоном триггера для родительской сущности, указывает СУБД, что нужно делать при вставке, изменении или удалении строки в родительской таблице связи. Код триггера, который генерируется шаблоном триггера для дочерней сущности, указывает СУБД, что нужно делать при вставке, изменении или удалении строки в дочерней таблице связи.

Ниже приведен текст шаблона триггера, соответствующего правилу ссылочной целостности ON PARENT DELETE RESTRICT.

/* ERwin Builtin %Datetime 7

/* %Parent %VerbPhrase %Child ON PARENT DELETE RESTRICT */ select count(*) into numrows

from %Child

where

/* %%JoinFKPK(%Child,:%%Old; ="," and") */

%JoinFKPK(%Child,:%Old," ="," and");

if (numrows > 0) then

raise_application_error(

-20001,

'Cannot DELETE %Parent because %Child exists.'

);

end if;

При генерации схемы СУБД для Oracle 7.2 будет сгенерирован триггер:

create trigger tD_CUSTOMER after DELETE on CUSTOMER for each row

- ERwin Builtin Tue Jan 26 21:55:13 1999

-DELETE trigger on CUSTOMER declare numrows INTEGER;

begin

/* ERwin Builtin Tue Jan 26 21:55:131999 7

/* CUSTOMER размещает ORDER ON PARENT DELETE RESTRICT */

select countf*) into numrows

from ORDER

where

/* %JoinFKPK(ORDER,:%Old," ="," and") */

ORDER.CustomerlD = :old.CustomerlD;

if (numrows > 0)

then

raise_application_error(

-20001,

'Cannot DELETE CUSTOMER because ORDER exists.'

):

end if;

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

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

Переопределение типа ссылочной целостности. Для каждой комбинации правил ссылочной целостности (например, Parent-Delete RESTRICT) ERwin позволяет создать переопределенный шаблон и использовать этот шаблон вместо шаблона, применяемого по умолчанию, для всех связей диаграммы, которым был присвоен этот тип правила ссылочной целостности. Используя в качестве основы встроенный код шаблона, можно изменить шаблоны ссылочной целостности во всей модели, изменяя коды триггера только в одном месте. Вновь определяемые шаблоны будут использоваться вместо стандартных шаблонов, если при генерации схемы включена опция RI Type Override.

Переопределение шаблона триггера для связи. Можно переопределить шаблон, задаваемый по умолчанию, для какой-то конкретной связи. Для этого используется диалог Relationship Template Editor, в котором можно описать шаблоны Relationship Override, применяемые вместо стандартных шаблонов (а также вместо шаблонов RI Type Override, если они есть). Шаблоны Relationship Override будут использоваться вместо стандартных шаблонов, если при генерации схемы включена опция Relationship Override.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных