Опубликован: 24.12.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Кубанский государственный университет
Лекция 2:

Модель сущность-связь

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
2.2.6 Связи в ERwin

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

Существуют два типа связей — идентифицирующая и неидентифициру-ющая. Первая изображается сплошной линией (рисунок 2.12, сущности 3 и 4). Допустим, есть сущность, которая вне какой-то другой сущности не имеет смысла. Например, номер телефона без привязки к человеку практически бесполезен. В этом случае используют идентифицирующую связь. Обратите внимание на то, что изображение сущности 4 после связи с сущностью 3 изменилось. Появились скругленные углы. Это означает, что сущность 4 считается слабой. Чуть позже мы уточним смысл этого наименования.

 Связи сущностей

Рис. 2.12. Связи сущностей

Связь между сущностями 5 и 6 неидентифицирующая.

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

В примере, изображенном на рисунке 2.13 на логическом уровне создаем две сущности "Работник" и "Отдел". Соединяем их идентифицирующей связью от отдела к работнику и обнаруживаем, что изображение сущности "Работник" поменялось.

 Две сущности, соединенные идентифицирующей связью

Рис. 2.13. Две сущности, соединенные идентифицирующей связью

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

В примере на рисунке 2.13 связь идентифицирующая. "Состоит из / работает в" — это роли сущностей в этой связи. Роль отдела — "состоит из", роль сотрудника — "работает в". Желательно именовать связи как можно проще и точнее, иначе легко запутаться.

Как вы знаете, связи вида "многие-ко-многим" в СУБД не реализуются. Поэтому необходимо их преобразовать в наборы связей "один-ко-многим". Достаточно создать ассоциированную сущность, у которой первичный ключ содержит только ключи соединяемых сущностей. Эти ключи будут еще и внешними ключами, обеспечивающими связи с сущностями, из которых они взяты.

Рассмотрим пример связи сущностей "Потребитель" и "Копия фильма" (рисунок 2.14). Один человек смотрит много фильмов и один фильм может просматриваться многими людьми.

 Связь "многие-ко-многим"

Рис. 2.14. Связь "многие-ко-многим"

На рисунке 2.15 показан первый шаг автоматического преобразования связи. В ERwin кликаем правой кнопкой мыши по связи. Появляется меню, в котором следует выбрать позицию "Create Association Entity" — создать ассоциированную сущность.

 Преобразование связи "многие-ко-многим"

Рис. 2.15. Преобразование связи "многие-ко-многим"

Появится сущность со странным названием составленным из кусков названий связываемых сущностей (рисунок 2.16). Получилось две связи один-ко-многим, которые реализуются в СУБД.

 Преобразованная связь

Рис. 2.16. Преобразованная связь

Название ассоциированной сущности можно (и часто нужно) исправить.

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Alexander Vizelka
Alexander Vizelka
Россия
Всеволод Трофименко
Всеволод Трофименко
Россия