Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Work_6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
731.14 Кб
Скачать

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).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]