Материал: Методы и модели проектирования соврем. ИС(ЛР, 09.05.01)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

т.е. они имеют одну и ту же область значений, но разный смысл.

На рис.8 сущность Продажа валюты содержит информацию об акте обмена валюты, в котором участвуют две валюты – проданная и купленная. Инфор-

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

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

ласть значений). В примере на рис. 22 атрибуты получили имена ролей Про-

данная и Купленная. Другим примером обязательного применения имен ро-

лей являются рекурсивные связи, когда одна и та же сущность является и ро-

дительской и дочерней одновременно.

Правила ссылочной целостности (Referential Integrity (RI)) – логи-

ческие конструкции, которые выражают бизнес–правила использования дан-

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

вила ссылочной целостности можно в закладке Rolename/RI Actions диалога

Relationship Editor.

Рисунок 22 - Миграция имен ролей При генерации схемы БД на основе опций логической модели будут

сгенерированы правила декларативной ссылочной целостности, которые

51

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

На рис.9 существует идентифицирующая связь между сущностями Ко-

манда и Игрок. Что будет, если удалить команду? Экземпляр сущности Иг-

рок не может существовать без команды (атрибут первичного ключа В какой команде играет. Номер команды не может принимать значение NULL), сле-

довательно, нужно либо запретить удаление команды, пока в ней числится хотя бы один игрок, либо удалять вместе с командой и всех ее игроков. Такие правила удаления (Parent Delete) называются Parent Restrict (ограничение) и Parent Cascade (каскад). Сущности Игрок и Гол, в свою очередь, тоже связа-

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

дут удалены все игроки команды и все голы, забитые этими игроками.

Связь многие-ко-многим возможна только на уровне логической моде-

ли данных. Такая связь обозначается сплошной линией с двумя точками на концах. Для внесения связи следует сначала нажать на кнопку в палитре инструментов (ERwin Toolbox), а затем по очереди щелкнуть по обеим свя-

занным сущностям. Связь многие-ко-многим должна именоваться (Verb Phrase) двумя фразами – в обе стороны. Это облегчает чтение диаграммы.

Создание ключей Каждый экземпляр сущности должен быть уника-

лен. Первичный ключ (primary key) – это атрибут или группа атрибутов,

однозначно идентифицирующие экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения – это те атрибу-

ты, которые находятся в списке атрибутов выше горизонтальной линии. При внесении нового атрибута в диалоге Attribute Editor для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в

нижней части закладки General. На диаграмме ключевой атрибут можно вне-

сти в состав первичного ключа, воспользовавшись режимом переноса атри-

бутов (кнопка в палитре инструментов). В одной сущности может ока-

заться несколько атрибутов или наборов атрибутов, претендующих на роль

52

первичного ключа. Такие претенденты называютсяпотенциальными клю-

чами (candidate key). Ключи могут быть сложными, т.е. содержащими не-

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

ре первичного ключа предпочтение должно отдаваться более простым клю-

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

Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные – альтернативными ключами. Альтернативный ключ (Alternative Key) – это потенциальный ключ, не ставший первичным. Каждому ключу соответству-

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

Рисунок 23 - Сущность «сотрудник» с отображением ключей На диаграмме атрибуты альтернативных ключей обозначаются как

(Akn.m.), где n – порядковый номер ключа, m – порядковый номер атрибута в ключе.

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

53

в дочерней сущности и эти атрибуты образуют внешний ключ в дочерней сущности (миграция ключа). Атрибуты внешнего ключа обозначаются сим-

волом (FK) после своего имени (рис.23). Атрибут внешнего ключа Где рабо-

тает. Номер отдела (“Где работает” – имя роли) сущности Сотрудник являет-

ся атрибутом первичного ключа (PK) в сущности Отдел. Зависимая сущность может иметь один и тот же ключ из нескольких родительских сущностей.

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

обнаруживает одно из этих событий, он распознает, что два атрибута одина-

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

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

вать имена ролей внешнего ключа.

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

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

жество атрибутов. В понятие домена входит не только тип данных, но и об-

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

В ERwin домен может быть определен только один раз и использовать-

ся как в логической, так и в физической модели.

На логическом уровне домены можно описать без конкретных физиче-

ских свойств. На физическом уровне они получают специфические свойства,

которые можно изменить вручную. Так, домен “Возраст” может иметь на ло-

гическом уровне тип Number, на физическом уровне домену будет присвоен тип INTEGER. Для создания домена в логической модели служит диалог

Domain Dictionary Editor. Его можно вызвать из меню Edit/Domain Dictionary.

Для создания нового домена в диалоге Domain Dictionary Editor следует:

54

щелкнуть по кнопке 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 –

значений, правила валидации (правила проверки допустимых значений) и за-

55

Источник: https://studfile.net/preview/16408801/