Название: CASE-технология моделирования процессов с использованием средств BPWin и ERWin - учебное пособие (Похилько, И. В. Горбачев)

Жанр: Экономико-математический

Просмотров: 1663


6.4. описание методологии idef1x

 

Тип связи (идентифицирующая/неидентифицирующая)

В IDEF1X различают зависимые и независимые сущности. Тип сущности определяется

ее связью с другими сущностями. Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Когда рисуется идентифицирующая связь, ERWin автоматически преобразует дочернюю связь в зависимую. Зависимая сущность изображается прямоугольником со скругленными углами.

Экземпляр зависимой сущности определяется только через отношение к родительской сущности. При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешние ключи – (FK).

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

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

Для неидентифицирующей связи можно указать обязательность (Nulls в закладке General диалога Relationship Editor). В случае обязательной связи (No Nulls) при генерации схемы БД атрибут внешнего ключа получит признак NOT NULL, несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности. В случае необязательной связи (Nulls Allowed) внешний ключ может принимать значение NULL. Необязательная неидентифицирующая связь помечается прозрачным ромбом со стороны родительской сущности

Имя связи (Verb Phrase) – фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи один-ко-многим идентифицирующей или неидентифицирующей  достаточно  указать  имя,  характеризующее  отношение  от родительской к дочерней сущности (Parent-to-Child). Для связи многие-ко-многим следует

указывать имена как Parent-to-Child, так и Child-to-Parent. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Verb Phrase.

 

Создание ключей

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

Первичный ключ (primary key) – это атрибут или группа атрибутов, однозначно идентифицирующие экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения – это те атрибуты, которые находятся в списке атрибутов выше горизонтальной линии. При внесении нового атрибута в диалоге Attribute Editor для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в нижней части закладки General. На диаграмме ключевой атрибут можно внести в состав первичного ключа, воспользовавшись режимом переноса атрибутов.

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

Ключи  могут  быть  сложными,  т.  е.  содержащими  несколько  атрибутов.  Сложные

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

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

Альтернативный ключ (Alternative Key) – это потенциальный ключ, не ставший первичным.

Каждому ключу соответствует индекс, имя которого также присваивается автоматически. Имена ключа и индекса при желании можно изменить вручную.

На диаграмме атрибуты альтернативных ключей обозначаются как (Akn.m.), где n – порядковый номер ключа; m – порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, (Akn.m.) ставится после каждого.

Внешние ключи (Foreign Key) создаются автоматически, когда связь соединяет сущности: связи образуют ссылку на атрибуты первичного ключа в дочерней сущности и эти атрибуты  образуют  внешний  ключ  в  дочерней  сущности  (миграция  ключа).  Атрибуты

внешнего ключа обозначаются символом (FK) после своего имени (рис. 6.5). Атрибуты внешнего ключа «Где работает». Номер отдела («Где работает» – имя роли) сущности Сотрудник является атрибутом первичного ключа (PK) в сущности Отдел.

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

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

 

 

Рис. 6.5. Сущность «Сотрудник» с отображением ключей

 

Домены

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

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

В ERWin домен может быть определен только один раз и использоваться как в логической, так и в физической модели.

На логическом уровне домены можно описать без конкретных физических свойств. На физическом уровне они получают специфические свойства, которые можно изменить вручную. Так, домен «Возраст» может иметь на логическом уровне тип Number, на физическом уровне домену будет присвоен тип INTEGER.

Для создания домена в логической модели служит диалог Domain Dictionary Editor. Его можно вызвать из меню Edit/Domain Dictionary по кнопке, расположенной в верхней левой части закладки General диалога Attribute Editor. Для создания нового домена в диалоге Domain Dictionary Editor следует:

  щелкнуть по кнопке New. Появляется диалог New Domain;

  выбрать  родительский  домен  из  списка  Domain  Parent.  Новый  домен  можно создать на основе уже созданного пользователем домена либо на основе изначально существующего. По умолчанию ERWin имеет четыре предопределенных доменов (String, Number, Blob, Datetime). Новый домен наследует все свойства родительского домена. Эти свойства в дальнейшем можно переопределить;

  набрать имя домена в поле Logical Name. Можно также указать имя домена на физическом уровне в поле Physical Name. Если физическое имя не указано, по умолчанию оно принимает значение логического имени;

  щелкнуть по кнопке OK.

В диалоге Domain Dictionary Editor можно связать домен с иконкой, с которой он будет отображаться в списке доменов (Domain Icon); иконкой, с которой атрибут, определенный на домене будет отображаться в модели (Icon Inherited by Attribute).

Каждый домен может быть описан в закладке Definition, снабжен комментарием в закладке Note или свойством, определенным пользователем, в закладке UDP.

ERwin имеет специальный инструмент, который значительно облегчает создание новых атрибутов в модели, используя описание доменов, – Independent Attribute Browser. Этот диалог вызывается (и скрывается) по горячему ключу CTRL+B. С его помощью можно выбрать в списке домен и по методу drag&drop перенести его в какую-либо сущность. В ней

будет создан новый атрибут с именем, которое следует задать в окне Name Inherited by Attribute диалога Domain Dictionary Editor. Если значение поля не задано, по умолчанию принимается имя домена.

На физическом уровне диалог Domain Dictionary Editor позволяет редактировать физические свойства домена. Имя этой закладки зависит от выбранного сервера БД. На ней можно  задать  конкретный  тип  данных,  соответствующих  домену,  правила  присвоения NULL-значений, правила валидации (правила проверки допустимых значений) и задания значения по умолчанию. Правила валидации и значения по умолчанию должны быть предварительно  описаны  и  именованы.  Для  вызова  диалогов  редактирования  правил

валидации и значений по умолчанию служат кнопки  справа от соответствующего списка

выбора (Valid и Default).

 

Функции других закладок диалога Domain Dictionary Editor:

General.  Задание  родительского  домена  (Domain  Parent)  и  имени,  присваиваемого

колонке при ее создании с помощью Independent Column Browser. С помощью опции Phisical

Only домен можно определить только на уровне физической модели.

Comment. Внесение комментария к атрибуту.

UDP. Свойства, определяемые пользователем.

Visual Basic – PowerBuilder. Задание специальных свойств домена для кодогенерации клиентского приложения.

 

Прямое и обратное проектирование

Процесс генерации физической схемы БД из логической модели данных называется

прямым проектированием (Forward Engineering). При генерации физической схемы ERwin включает триггеры ссылочной целостности, хранимые процедуры, индексы, ограничения и другие возможности, доступные при определении таблиц в выбранной СУБД.

Процесс генерации логической модели из физической БД называется обратным проектированием (Reverse Engineering). ERwin позволяет создать модель данных путем обратного проектирования имеющейся БД. После того как модель создана, можно переключиться на другой сервер (модель будет конвертирована) и произвести прямое проектирование структуры БД для другой СУБД. Кроме режима прямого и обратного проектирования ERwin поддерживает синхронизацию между логической моделью и системным каталогом СУБД на протяжении всего жизненного цикла создания ИС.

Для генерации системного каталога БД следует выбрать пункт меню Tasks/Forward Engineer/Schema  Generation  или нажать  кнопку   на панели  инструментов. Появляется диалог Schema Generation .

Диалог Schema Generation имеет три закладки:

  Options. Служит для задания опций генерации объектов БД – триггеров, таблиц, представлений, колонок, индексов и т. д. Для задания опций генерации какого-либо объекта следует выбрать объект в левом списке закладки, после чего включить соответствующую опцию в правом списке.

  В  закладке  Summary  отображаются  все  опции,  заданные  в  закладке  Options. Список опций в Summary можно редактировать так же, как и в Options.

  Comment. Позволяет внести комментарий для каждого набора опций. Каждый набор опций может быть именован (окно Option Set, кнопки New, Rename и Delete) и использован многократно.

Кнопка Preview вызывает диалог Schema Generation Preview, в котором отображается SQL-скрипт, создаваемый ERwin для генерации системного каталога СУБД. Нажатие на кнопку Generate приведет к запуску процесса генерации схемы.

Кнопка Print предназначена для вывода на печать создаваемого ERwin SQL-скрипта. Кнопка Report сохраняет тот же скрипт в ERS или SQL текстовом файле. Эти команды

можно в дальнейшем редактировать любым текстовым редактором и выполнять при помощи соответствующей утилиты сервера.

Кнопка Generate запускает процесс генерации схемы. Возникает диалог связи с БД, устанавливается сеанс связи с сервером и начинает выполняться SQL-скрипт. При этом возникает диалог Generate Database Schema. Для выполнения обратного проектирования следует выбрать пункт меню Tasks/Reverse Engineer.

При этом возникает диалог ERwin Template Selection, в котором нужно выбрать шаблон диаграммы, затем диалог выбора СУБД и, наконец, диалог задания опций обратного проектирования Reverse Engineer – Set Options.

В диалоге Reverse Engineer – Set Options можно задать следующие опции.

Группа Reverse Engineer From позволяет задать источник обратного проектирования – БД или SQL(DDL)-скрипт. При помощи кнопки Browse можно выбрать текстовый файл, содержащий SQL-скрипт.

Группа Items to Reverse Engineer позволяет задать объекты БД, на основе которых

будет создана модель. При помощи списка выбора Option Set, a также кнопок New, Update и Delete можно создавать и редактировать именованные конфигурации объектов БД, которые могут быть использованы многократно при других сеансах обратного проектирования.

Группа  Reverse  Engineer  (доступна  только  при  обратном  проектировании  из  БД)

позволяет включить в модель системные объекты (окно выбора System Objects) и установить

фильтр на извлекаемые таблицы по их владельцу.

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

возникнуть расхождения между реальным состоянием системного каталога и моделью данных.

Для  синхронизации  системного  каталога  БД  и  текущей  модели  следует  выбрать

пункт  меню  Tasks/Complete  Compare  или  нажать  кнопку     на  панели  инструментов. Возникает  диалог  Complete  Compare  –  Set  Options,  который  во  многом  похож  на описанный выше диалог Reverse Engineer-Set Options. Разница заключается в том, что в отличие от обратного проектирования сравнивать текущую модель можно не только с БД или SQL-скриптом, но и с другой моделью ERwin, хранящейся в файле или репозитории ModelMart.