Модель сущность-связь
2.2.6 Связи в ERwin
Связи между сущностями обозначаются линиями, может быть, снабженными дополнительными символами на концах. Для создания связи необходимо подхватить ее в панели инструментов, а затем последовательно кликнуть левой кнопкой мыши на связываемых сущностях. Порядок обхода сущностей важен.
Существуют два типа связей — идентифицирующая и неидентифициру-ющая. Первая изображается сплошной линией (рисунок 2.12, сущности 3 и 4). Допустим, есть сущность, которая вне какой-то другой сущности не имеет смысла. Например, номер телефона без привязки к человеку практически бесполезен. В этом случае используют идентифицирующую связь. Обратите внимание на то, что изображение сущности 4 после связи с сущностью 3 изменилось. Появились скругленные углы. Это означает, что сущность 4 считается слабой. Чуть позже мы уточним смысл этого наименования.
Связь между сущностями 5 и 6 неидентифицирующая.
Связи именуются глаголами, которые показывают, как соотносятся сущности между собой. В простых схемах имена связей могут не назначаться и не проставляться.
В примере, изображенном на рисунке 2.13 на логическом уровне создаем две сущности "Работник" и "Отдел". Соединяем их идентифицирующей связью от отдела к работнику и обнаруживаем, что изображение сущности "Работник" поменялось.
Прямоугольником изображается сильная сущность. Предполагается, что отделы существуют сами по себе, а работники закреплены за отделами. Но в жизни могут быть и другие ситуации. Например, когда сотрудник закреплен за двумя отделами или директор не должен относиться ни к какому отделу.
В примере на рисунке 2.13 связь идентифицирующая. "Состоит из / работает в" — это роли сущностей в этой связи. Роль отдела — "состоит из", роль сотрудника — "работает в". Желательно именовать связи как можно проще и точнее, иначе легко запутаться.
Как вы знаете, связи вида "многие-ко-многим" в СУБД не реализуются. Поэтому необходимо их преобразовать в наборы связей "один-ко-многим". Достаточно создать ассоциированную сущность, у которой первичный ключ содержит только ключи соединяемых сущностей. Эти ключи будут еще и внешними ключами, обеспечивающими связи с сущностями, из которых они взяты.
Рассмотрим пример связи сущностей "Потребитель" и "Копия фильма" (рисунок 2.14). Один человек смотрит много фильмов и один фильм может просматриваться многими людьми.
На рисунке 2.15 показан первый шаг автоматического преобразования связи. В ERwin кликаем правой кнопкой мыши по связи. Появляется меню, в котором следует выбрать позицию "Create Association Entity" — создать ассоциированную сущность.
Появится сущность со странным названием составленным из кусков названий связываемых сущностей (рисунок 2.16). Получилось две связи один-ко-многим, которые реализуются в СУБД.
Название ассоциированной сущности можно (и часто нужно) исправить.