
- •Работа №6 Автоматизированное проектирование баз данных на основе метода er-диаграмм.
- •1. Общие сведения об AllFusion Erwin Data Modeler 4.1.
- •1.1. Структура процесса моделирования в Erwin.
- •1.2. Создание логической модели бд.
- •1.2.1. Сущности и атрибуты
- •1.2.2. Связи
- •1.3. Создание физической модели и генерация схемы бд.
- •1.4. Уровни отображения er-диаграммы.
- •1.5. Прямое и реверсное проектирование.
- •2. Примеры разработки модели бд с помощью eRwin
- •2.1. Прямое проектирование
- •2.1.1. Постановка задачи
- •2.1.2. Создание логической модели бд
- •2.1.3. Создание физической модели бд и генерация схемы бд
- •2.2. Реверсное проектирование.
- •Упражнение №1
- •Контрольное задание.
- •Требования к отчету:
- •Контрольные вопросы:
1.2.2. Связи
Связь в ERwin трактуется как функциональная зависимость между двумя сущностями (в частности, возможна связь сущности с самой собой − рекурсивная связь).
Если рассматривать диаграмму как графическое представление правил предметной области, то сущности именуются существительными, а связи − глаголами. Например, между сущностями ОТДЕЛ и СОТРУДНИК существует связь <состоит из> (ОТДЕЛ состоит из СОТРУДНИКОВ).
В ERwin связи определяются пятью основными элементами:
тип связи;
родительская и дочерняя (зависимая) сущности;
мощность связи;
допустимость NULL-значений;
требования по обеспечению ссылочной целостности.
В ERwin поддерживаются следующие основные типы связей:
идентифицирующая,
неидентифицирующая,
полная категория,
неполная категория,
многие-ко-многим.
Если экземпляры сущности могут быть уникально идентифицированы без определения ее связей с другими сущностями, то такая сущность называется независимой. В противном случае сущность называют зависимой. Зависимая сущность отображается в ERwin прямоугольником с закругленными углами.
Связь − идентифицирующая (Identifying Relationships) , если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь − неидентифицирующая (Non-Identifying Relationships), если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Идентифицирующая связь изображается сплошной линией; неидентифицирующая − пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности. Можно также ввести описания связи между сущностями (Verb Phrases for Relationships) как между родительской и дочерней (Parent-to-child verb phrase), так и дочерней и родительской (Child-to-parent verb phrase).
При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности и стают там внешними ключами, поэтому такие атрибуты не вводятся вручную.
На рис. 1 приведен пример неидентифицируюшей связи. Первичный ключ сущности ОТДЕЛ <номер отдела> мигрировал в область неключевых атрибутов (поскольку связь неидентифицирующая) сущности СОТРУДНИК. На диаграмме атрибуты, наследованные от родительской сущности, помечаются символами FK (внешний ключ), заключенными в скобки. Приведены также описания связи: ОТДЕЛ состоит из СОТУДНИКов, СОТУДНИК работает в ОТДЕЛе.
Рис. 1. Пример неидентифицирующей связи
Заметим, что дочерняя сущность может наследовать один и тот же атрибут от более чем одной родительской сущности или от одной и той же родительской сущности через несколько связей.
Роли
Поскольку атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами, ERwin считает, что в зависимой сущности атрибуты внешнего ключа появляются только один раз. Чтобы избежать этого ограничения, ERwin позволяет ввести для них роли (Attribute Rolenames), т.е. новые имена, под которыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо. Например, при создании модели сделки по обмену валюты сущность СДЕЛКА (рис. 2) должна иметь два различных атрибута для кодов проданной и купленной валюты. В данном случае первичный ключ сущности ВАЛЮТА <код валюты> имеет две роли в дочерней сущности.
Рис.
2. Пример использования ролей
Связь многие-ко-многим
Как
известо, ситуация, когда экземпляру
одной сущности соответствует один или
несколько экземпляров второй сущности,
а экземпляру второй сущности соответствует
один или несколько экземпляров первой
сущности, отражается в логической
модели связью многие-ко-многим
(Many-to-Many Relationships) между
данными сущностями. На диаграмме
такая связь изображается сплошной
линией с точками на концах. Например,
для заключения сделки в некоторой фирме
клиент обращается к любому из
свободных сотрудников этой фирмы. В то
же время сотрудник фирмы может обслуживать
нескольких клиентов. Поэтому тип связи
между сущностями К
ЛИЕНТ
и СОТРУДНИК должен быть многие-ко-многим:
Рис. 3. Пример связи многие-ко-многим
Заметим, что связь типа многие-ко-многим возможна только на логическом уровне. Преобразование связи данного типа на физическом уровне будет рассмотрено в следующем пункте. Однако добавим, что связей многие-ко-многим рекомендуется избегать. В рассмотренном примере этого можно добиться, если ввести дополнительную сущность СДЕЛКА:
Рис. 4. Трансформация связи «многие-ко-многим», изображенной на рис. 3.
Связь категоризации
Некоторые сущности определяют целую категорию объектов одного типа. В ERwin в таком случае создается сущность для определения категории и для каждого элемента категории, а затем вводится для них связь категоризации (Subtype Relationship). Родительская сущность категории называется супертипом, а дочерние − подтипами.
Общая часть атрибутов сущностей-подтипов, включая первичный ключ, помещается в сущность-супертип. Остальные атрибуты (например, данные о почасовой оплате для временных работников или данные о зарплате и отпуске для штатных работников) помещаются в сущности-подтипы. При этом в сущности-супертипе вводится атрибут-дискриминатор, позволяющий различать конкретные экземпляры сущности-подтипа.
В зависимости от того, все ли возможные сущности-подтипы включены в модель, категорийная связь является полной (Complete subtype relationship) или неполной (Incomplete subtype relationship). В ERwin полная категория изображается окружностью с двумя подчеркиваниями, а неполная − окружностью с одним подчеркиванием.
На рис. 5 категорийная связь между сущностью СОТРУДНИК и сущностями ПОСТОЯННЫЙ СОТРУДНИК и СОВМЕСТИТЕЛЬ является неполной, если предположить, что существует еще один тип сотрудников − стажер (или эксперт).
Рис. 5. Пример неполной категории
Включение в модель сущности КОНСУЛЬТАНТ приводит к тому, что категорийная связь становится полной.
Мощность связи
Мощность
связи (Relationship Cardinality)
представляет
собой отношение количества экземпляров
родительской сущности к соответствующему
количеству экземпляров дочерней
сущности. Мощность связи определяется
только для идентифицирующих и
неидентифицирующих связей и записывается
как 1:x.
В ERwin,
в соответствии с
методологией IDEF1X,
предоставляется 4 варианта для x,
которые изображаются
дополнительным
символом у дочерней сущности
(рис. 6)
Рис. 6. Обозначения кратности связи.
Допустимость пустых (NULL) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности:
На рис.7 приведены примеры изображения сущностей и связей между ними. Связь между сущностями ОТДЕЛ и МЕНЕДЖЕР может быть интерпретирована следующим образом:
Каждый отдел состоит из нескольких менеджеров.
Каждый менеджер является сотрудником только одного отдела.
Рекурсивная связь для сущности МЕНЕДЖЕР означает, что менеджер может быть совместителем (но может и не быть), но каждый совместитель является менеджером некоторого отдела.
Рис. 7. Пример изображения сущностей и связей между ними.
Rонтроль ссылочной целостности
Под ссылочной целостностью в ERwin понимается обеспечение требования, чтобы значения внешнего ключа экземпляра дочерней сущности соответствовали значениям первичного ключа в родительской сущности, В целях контроля ссылочной целостности (Referential Integrity) для каждой связи могут быть заданы требования по обработке операций INSERT/UPDATE/DELETE для родительской и дочерней сущности. ERwin предоставляет следующие варианты обработки этих событий:
отсутствие проверки (NONE);
запрет операции (RESTRICT);
каскадное выполнение операции (CASCADE);
установка NULL-значения (SET NULL);
установка заданного значения по умолчанию (SET DEFAULT).