On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Глава 10 Документирование Правил (Business Rules)

Cодержание главы

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

В этой главе Вы узнаете, как:

· Форсировать использование уникальных имен сущностей и атрибутов.

· Классифицировать и редактировать кардинальность связи.

· Демонстрировать и читать конструкции 'сущность-связь' как бизнес-утверждения.

· Задавать правила ссылочной целостности для связи.

Как гарантировать уникальность имен сущностей и атрибутов

С точки зрения бизнеса, при проектировании модели данных важно убедиться, что каждая физическая колонка содержит отдельный элемент данных для каждой строки таблицы. Например, в примере 'Video Store' каждая копия конкретного фильма должна быть уникальным образом идентифицирована для того, чтобы обеспечить нормальное управление учетом фильмов. Если Вы присвоите одно и то же имя двум или более сущностям, например назовете сущности MOVIE и MOVIE-COPY одинаково 'MOVIE', то вскоре возникнут проблемы. В общем, использование омонимов (одно слово служит для обозначения двух разных понятий в модели данных) приводит к серьезной путанице и может стать причиной ошибок, когда Вы даете запросы на считывание конкретных наборов данных.

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

Чтобы избежать путаницы на стадии проектирования и снизить вероятность появления некорректных запросов в будущем, когда база данных уже будет работать, ERwin может быть конфигурирован таким образом, чтобы автоматически предотвратить присваивание двойных имен сущностям и атрибутам. Если задан режим 'Disallow' для омонимов в окне ERwin 'Unique Name', то ERwin автоматически будет выдавать сообщение, если Вы попытаетесь выйти из редактора после того, как случайно введете двойное имя сущности или атрибута.

Вы должны решить, какой из режимов уникальности имен будет использован в Вашей диаграмме, на самой ранней стадии построения модели. Режим уникальности имен не имеет обратного действия и не отразится на двойных именах сущностей и атрибутах, которые были введены до этого.

Как управлять обработкой
двойных имен сущностей и атрибутов в ER
win

1. Дайте команду 'Unique Name...' в меню Option. Вы войдете в окно-диалог, в котором можно выбрать четыре разных режима. Тот, который Вы выберете, будет определять действия ERwin при вводе неуникального имени сущности или атрибута.

· 'Rename' (принимается по умолчанию для новой диаграммы) - двойное имя принимается, но к нему автоматически добавляется косая черта и номер (например, attribute-name/2). Косая черта говорит о том, что имя уже использовалось в диаграмме, а номер показывает, сколько раз оно использовалось (в примере оно использовалось 2 раза).

· 'Allow' - использование двойных имен разрешается. В этом случае ERwin НЕ предупреждает Вас о возможном дублировании.

· 'Disallow' - ввод двойных имен сущностей или атрибутов не разрешается. Если двойное имя обнаружено уже после закрытия редактора Entity- Attribute, то ERwin выдает на экран окно с сообщением, что ввод неуникальных имен запрещается. Когда Вы нажимаете 'ОК', чтобы закрыть окно сообщения, ERwin возвращает Вас в редактор Entity-Attribute, чтобы Вы могли ввести уникальное имя. Если найдено несколько двойных имен, то ERwin выдает сообщение- предупреждение для каждого, а затем удаляет новый двойной атрибут из сущности. Он не входит повторно в редактор Entity-Attribute для внесения изменений в имена атрибутов. Для того, чтобы заново ввести атрибуты с другими, уникальными именами, Вам нужно будет вновь открыть редактор Entity-Attribute.

· 'Ask' - ERwin будет показывать на экране окно- диалог Edit Unique Name каждый раз, когда Вы вводите неуникальное имя сущности или атрибута.

В диалоге Edit Unique Name Вы можете ввести другое имя или разрешить дублирование. Новое имя, которое Вы вводите, не проверяется на уникальность.

Если в этом окне Вы нажмете кнопку 'Cancel', ERwin сообщит Вам, разрешено ли использование неуникального имени.

2. Нажмите 'ОК' для сохранения заданного режима, выхода из диалога Unique Name Option и возвращения в диаграмму.

Когда Вы используете функции Copy и Paste для дублирования одного или нескольких объектов диаграммы, то ERwin не делает проверку на уникальность. Если же Вы затем просматриваете одну из вставленных сущностей, в редакторе Entity-Attribute, то при попытке выйти из редактора уникальность проверяется (только для имени сущности).

Использование кардинальности связи для выражения правил

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

Как прочитать связь в виде бизнес-утверждения

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

Существует несколько способов, как пересмотреть модель в свете бизнес-утверждений. Вы можете:

· Использовать Relationship Browser для просмотра правил, сформулированных в терминах сущностей и связей.

· Использовать Entity Report для просмотра всех родительских и дочерних правил (Business Rules).

· Использовать Relationship Report для просмотра правил, задаваемых в обоих направлениях.

См. Гл.4, Связи ERwin и соответствующие редакторы, разд. 'Задание кардинальности связи', а также Гл. 17, Отчеты в ERwin, разд. 'Использование Relationship Report'.

Как показать связи в виде бизнес-утверждений

1. Дайте команду 'Relationship Browser...' в меню Report. В Browser показаны все связи для текущей области. По умолчанию формат данных в Browser - PARENT ENTITY > VERB PHRASE > CHILD ENTITY > FOREIGN KEY (РОДИТЕЛЬСКАЯ СУЩНОСТЬ > ГЛАГОЛЬНАЯ ФРАЗА > ДОЧЕРНЯЯ СУЩНОСТЬ > ВНЕШНИЙ КЛЮЧ), что позволяет Вам легко прочитывать конструкции 'сущность-связь' как предложения языка.

Как показать правила (business rules) в терминах объединения сущностей

1. Дайте команду 'Entity Report...' в меню Report.

2. Поставьте метку в окне 'Parent Business Rules' или 'Child Business Rules'. Будьте внимательны, выбирайте только из окна 'Relationship Option', в противном случае Ваш отчет будет содержать много посторонней информации.

3. Нажмите кнопку 'Preview...' для демонстрации правил на Вашем экране, кнопку 'Report...' - для генерации их в файл, или кнопку 'Print...' - для распечатывания отчета на принтере.

4. Нажмите кнопку 'Close' для возвращения в окно-диалог Entity Report. Затем нажмите 'Close' для выхода из диаграммы.

Когда отчет будет запущен, данные business rules будут выглядеть по-разному, в зависимости от того, где Вы поставили метку в окне Relationship Options. Если Вы выбрали Parent Business Rules и Parent Relationships, у Вас получатся данные, напоминающие те, что приведены в таблице.

Отчет Entity Report с ограничениями Business Rule

Если Вы выбрали:

Отчет будет выглядеть так:

Parent Business Rules

Parent Business Rule: An ORGANIZATION contains many EMPLOYEEs.

Parent Business Rules+Referential Integrity

Parent Business Rule: An ORGANIZATION holds many OVERHEAD BUDGETs.

FK Referential Integ: U-Set Null I-Set Null D-Set Null CU-Set Null PI- CD-

Parent Relationships

Parent In Relationships: ORGANIZATION contains EMPLOYEE Cardinality: One-to-Zero-One-or-More No Null

Как показать родительские и дочерние business rules рядом

1. Дайте команду 'Relationship Report...' в меню Report.

2. Поставьте метку в check box 'Parent to Child Rule', затем - 'Child to Parent Rule'.

3. Нажмите кнопку 'Preview...' для просмотра business rules на экране, кнопку 'Report...' - для генерации их в файл или кнопку 'Print...' - для вывода отчета на принтер. Данные отчета должны выглядеть примерно так:

Parent to Child Rule: An ORGANIZATION contains many EMPLOYEEs.

Child to Parent Rule: An EMPLOYEE is associated with exactly one ORGANIZATION.

Чтобы удалить из отчета нежелательную информацию (например, глагольную фразу для каждой связи), убедитесь, что 'Parent to Child Rule' и 'Child to Parent Rule' - единственные режимы, заданные в редакторе Relationship Report.

Как быстро изменить кардинальность связи

1. Дайте команду 'Relationship Browser...' в меню Report.

2. Выделите бизнес-утверждение, которое Вы хотите отредактировать, и нажмите кнопку 'Edit...'. Вы войдете в редактор Relationship, который позволяет Вам изменить кардинальность связи и отношение к нулевым значениям.

3. Нажмите 'ОК' для выхода из редактора Relationship и возвращения в Relationship Browser. Нажмите 'ОК' для сохранения изменений, выхода из Browser и возвращения в диаграмму.

Использование ссылочной целостности для усиления business rules

ERwin позволяет Вам использовать набор встроенных режимов ссылочной целостности для усиления business rules (хотя вообще они используются для поддержания целостности данных). Эти триггер-функции поддержания ссылочной целостности (RI) сообщают СУБД, какое действие предпринять при вставке, изменении или удалении сроки в таблице. Обычно RI-триггер либо не дает изменению произойти (это называется RESTRICT - ОГРАНИЧЕНИЕМ), либо допускает изменение и распространяет его влияние на другие таблицы (CASCADE - КАСКАД). Как и в случае кардинальности связи, режимы ссылочной целостности ERwin также можно использовать для того, чтобы помочь Вам сформулировать бизнес-утверждения.

Например, на вопрос: 'Могу ли я сделать заказ, не задавая при этом никаких заказываемых товаров, т.е. список товаров пустой?' - можно ответить только с помощью правила, и усилить выполнение этого правила можно только с помощью соответствующего триггера ERwin. Если ответ для данного бизнеса: 'Нет, в списке товаров должен быть хотя бы один пункт' - то желаемое поведение может быть достигнуто следующими действиями:

1. Задать кардинальность связи между ЗАКАЗОМ и СПИСКОМ ТОВАРОВ, равную 'One or more' - 1 или более.

2. Сделать связь 'обязательной', независимо от того, какая это связь - идентифицирующая или неидентифицирующая.

3. Присвоить связи действие RI-триггера 'Parent Insert-CASCADE' для того, чтобы при создании новой строки в таблице ЗАКАЗ автоматически создавалась хотя бы одна строка в дочерней таблице СПИСОК ТОВАРОВ.

4. Присвоить связи действие RI-триггера 'Parent Delete-CASCADE' для того, чтобы при удалении строки из таблицы ЗАКАЗ соответствующая строка или строки из таблицы СПИСОК ТОВАРА тоже удалялись.

ERwin автоматически присваивает каждой связи режим ссылочной целостности, устанавливаемый по умолчанию, прежде чем добавить ее в диаграмму. Режимы RI, присваиваемые ERwin по умолчанию, могут быть изменены в редакторе Referential Integrity Default. Режим RI, применяемый к конкретной связи, может быть изменен в редакторе Referential Integrity. Ниже описано, как работать в этих редакторах. См. Гл.16, Триггеры и хранимые процедуры, разд. 'Что такое триггеры'.

Задание режимов ссылочной целостности, присваиваемых по умолчанию

Вы можете изменить режимы RI, присваиваемые по умолчанию, в редакторе Referential Integrity Default.

Как задать режимы RI по умолчанию

1. Дайте команду 'Target Server...' в меню Server для входа в окно-диалог Target Server.

2. Нажмите кнопку 'Referential Integrity Default...' для входа в редактор Referential Integrity Default.

3. Задайте нужный режим RI по умолчанию для каждого типа действия триггера для каждого из четырех типов связи в ERwin.

Для каждого случая имеется combo box, содержащий только допустимые RI-режимы для данного действия триггера и для данного типа связи.

4. Если Вы хотите изменить RI-режимы для уже существующих связей, заменив их на новые, нажмите кнопку 'Rebind'. ERwin попросит Вас подтвердить это. Нажмите 'Yes' для обновления существующих значений RI-триггеров и возвращения в редактор.

Нажмите кнопку 'Reset' для присвоения всем RI-режимам, присваиваемым по умолчанию, их системных значений. Как и большинство режимов, задаваемых ERwin по умолчанию, RI-режимы не имеют обратного действия. Они влияют только на новые связи, которые созданы после внесения изменений в RI-режимы.

5. Закончив работу, нажмите 'ОК' для выхода с сохранением изменений. После того как Вы задали режимы RI, присваиваемые по умолчанию каждому типу связи, выбранный RI-режим и связанный с ним RI-триггер автоматически присваиваются каждой новой связи, когда она добавляется на диаграмму.

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

Значения RI по умолчанию

 

Идентифици-рующая связь

Неидентифи-цирующая связь (Nulls Allowed)

Неидентифи-цирующая связь (No Nulls)

Cвязь подтипа

Сhild Delete
Возможные режимы

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE, SET DEFAULT

RESTRICT, CASCADE, NONE

Сhild Delete
Режимы по умолчанию

NONE

NONE

NONE

NONE

Сhild Insert
Возможные режимы

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE, SET DEFAULT

RESTRICT, CASCADE, NONE

Сhild Insert
Режимы по умолчанию

RESTRICT

SET NULL

RESTRICT

RESTRICT

Сhild Update
Возможные режимы

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE, SET DEFAULT

RESTRICT, CASCADE, NONE

Сhild Update
Режимы по умолчанию

RESTRICT

SET NULL

RESTRICT

RESTRICT

Parent Delete
Возможные режимы

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE, SET DEFAULT

RESTRICT, CASCADE, NONE

Parent Delete
Режимы по умолчанию

RESTRICT

SET NULL

RESTRICT

CASCADE

Parent Insert
Возможные режимы

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE, SET DEFAULT

RESTRICT, CASCADE, NONE

Parent Insert
Режимы по умолчанию

NONE

NONE

NONE

NONE

Parent Update
Возможные режимы

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE, SET DEFAULT

RESTRICT, CASCADE, NONE

Parent Update
Режимы по умолчанию

RESTRICT

SET NULL

RESTRICT

CASCADE

Рис. 11.7

Разные СУБД по-разному поддерживают ссылочную целостность. См. в документации по Вашей СУБД, какие режимы ссылочной целостности она поддерживает.

Работа в редакторе Referential Integrity

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

Как изменить правило ссылочной целостности для связи, присваиваемое по умолчанию

1. Дайте команду 'Referential Integrity' в меню Editor, чтобы сделать этот редактор активным.

2. Дважды щелкните по той связи, которую хотите редактировать
ИЛИ

Установите курсор на линию связи, щелкните правой кнопкой мыши для входа в сокращенное меню для связей. Дайте команду 'Referential Integrity' для входа в редактор.

3. В редакторе Referential Integrity щелкните по тому 'Trigger Action Type', который Вы хотите изменить.

4. Нажмите кнопку Referential Integrity Option, которая соответствует новому действию.

5. Нажмите 'ОК' для сохранения изменений и выхода из редактора. Для выхода без сохранения изменений нажмите 'Сancel'.

Краткое повторение главы 11

Как задать режим уникальности имен сущностей и атрибутов

Дайте команду 'Unique Name...' в меню Option и выберите режим 'Rename', 'Allow', 'Disallow' или 'Ask', чтобы задать реакцию ERwin на попытку дублирования имен сущностей и атрибутов. Нажмите кнопку 'ОК' для сохранения режима и возвращения в диаграмму.

Как показать связи в виде бизнес-утверждений

Дайте команду 'Relationship Browser...' в меню Report. По умолчанию принимается форма: PARENT ENTITY > VERB PHRASE > CHILD ENTITY > FOREIGN KEY.

Как показать business rules в терминах объединения сущностей

Дайте команду 'Entity Report...' в меню Report. Пометьте один из двух check box: 'Parent Business Rules' или 'Child Business Rules'. Нажмите кнопку 'Preview...' для того, чтобы показать отчет. Нажмите кнопку 'Close' для возвращения в окно-диалог Entity Report. Затем нажмите 'Close' для возвращения в диаграмму.

Как показать родительские и дочерние business rules рядом друг с другом

Дайте команду 'Relationship Report...' в меню Report. Поставьте метки в check box 'Parent to Child Rule' и 'Child to Parent Rule'. Нажмите кнопку 'Preview...' для того, чтобы показать отчет. Нажмите кнопку 'Close' для возвращения в окно-диалог Relationship Report. Затем cнова нажмите 'Close' для возвращения в диаграмму.

Как быстро изменить кардинальность связи

Дайте команду 'Relationship Browser...' в меню Report. Выделите бизнес-утверждение, для которого Вы хотите изменить ккардинальность, и нажмите кнопку 'Edit...'. Вы войдете в редактор Relationship Editor. Измените кардинальность, нажмите 'ОК' для выхода из редактора и возвращения в Relationship Browser. Снова нажмите 'ОК' для сохранения изменений, выхода из Browser и возвращения в диаграмму.

Как задать режимы ссылочной целостности, присваиваемые по умолчанию, для всех связей

Дайте команду 'Target Server' в меню Server и нажмите кнопку 'Referential Integrity Default...' для входа в редактор Referential Integrity Default. Используя combo box, задайте желаемое поведение по умолчанию для каждого типа RI. Нажмите 'ОК' для выхода из редактора с сохранением изменений, 'Cancel' - для отмены всех изменений, 'Reset' - для возвращения к системным значениям, 'Rebind' - для замены информации о ранее созданных связях на новую.

Как изменить правило ссылочной целостности, присваиваемое по умолчанию, для конкретной связи

Щелкните правой кнопкой мыши по той связи, которую Вы хотите изменить, и дайте команду 'Referential Integrity...' из сокращенного меню Relationship для входа в редактор Referential Integrity. Щелкните по 'Trigger Action Type', который Вы хотите изменить, а затем - по одной из кнопок 'Referential Integrity Options' для изменения RI-триггера, связанного со связью. Нажмите 'ОК' для сохранения изменений или 'Cancel' для отмены изменений и возвращения в диаграмму.

Назад       Содержание       Вперёд