- •Новосибирский государственный университет экономики и управления
- •«Проектирование информационных систем» Раздел «Моделирование и проектирование данных»
- •Новосибирск 2009
- •1. Концепции er-модели
- •Примеры сущностей с физическим и концептуальным существованием
- •Способы представления сущностей на диаграмме
- •Представление атрибутов на диаграммах
- •1.3. Типы связей
- •Представление связей на диаграммах
- •1.4. Атрибуты связей
- •Date_View и Comments
- •2. Структурные ограничения
- •2.1. Показатель кардинальности
- •Связи «один к одному»
- •Связь „один ко многим"
- •Связи "многие ко многим"
- •2.2. Степень участия
- •3. Проблемы er-моделирования
- •3.1. Ловушки разветвления
- •3.2. Ловушки разрыва
- •4. Eer-модель
- •4.1. Суперклассы и подклассы типов сущностей
- •4.2. Наследование атрибутов
- •4.3. Специализация
- •4.4. Генерализация
- •4.5. Ограничения, накладываемые на процедуры специализации и генерализации
- •4.6. Категоризация
Представление связей на диаграммах
Каждая связь изображается в виде ромбика с указанным на нем именем связи. Ромбик имеет двойной контур, если связь соединяет слабую сущность с сильной сущностью, от которой эта слабая сущность зависит. На рис. 1.5 взаимосвязь между сущностями Branch и Staff представлена с помощью связи IsAllocated, а между сущностями Next_of_Kin и Staff — с помощью связи RelatedTo. Связь RelatedTo показана в виде ромбика с двойным контуром, указывающим на то, что она установлена между слабой (Next_of_Kin) и сильной (Staff) сущностями.
Для снижения уровня детализации на отдельной ER-диаграмме часто указываются только те атрибуты, которые представляют первичные ключи изображенных сущностей, а в некоторых случаях атрибуты не отображаются совсем. Например, на рис. 5.5 представлены только те атрибуты, которые являются первичными ключами сильных сущностей, а именно: Staff_No и Branch_No.
Степень связи:количество сущностей, которые охвачены данной связью.
Охваченные некоторой связью сущности называются участниками этой связи. Количество участников некоторой связи называется степенью (degree) этой связи. Следовательно, степень связи указывает на количество типов сущностей, охваченных данной связью. Связь со степенью два называется бинарной (binary). Примером бинарной связи является связь Owns с двумя участниками: Owner и Property_for_Rent. Ее ER-диаграмма показана на рис. 1.6.
Рис. 1.6. Пример бинарной связи Owns
Связь со степенью три называется тернарной (ternary). Примером такой связи является связь SetsUp с тремя участниками: Client, Staff и Interview. Назначение этой связи состоит в представлении ситуации, когда сотрудник отвечает за организацию интервью с клиентом. Диаграмма тернарной связи SetsOp показана на рис. 1.7.
Рис. 1.7. Пример тернарной связи SetsUp
Связь со степенью четыре называется кватернарной (quaternary). Примером кватер-нарной связи является связь Arranges с четырьмя сущностями-участниками: Buyer (Покупатель), Solicitor (Доверенное лицо), Financial_Institution (Финансовый орган) и Bid (Предложение). Эта связь представляет ситуацию, когда покупатель с помощью доверенного лица и при поддержке финансового органа выражает свое намерение приобрести объект недвижимости. Диаграмма кватернарной связи Arranges показана на рис. 1.8.
Рис. 1.8. Пример кватернарной связи Arranges
Рекурсивная связь: связь, в которой одни и те же сущности участвуют несколько раз и в разных ролях.
Рассмотрим рекурсивную связь Supervises, которая представляет взаимосвязь персонала с управляющим, который также входит в состав персонала. Иначе говоря, сущность Staff дважды участвует в связи Supervises: первый раз — в качестве управляющего, а второй — в качестве сотрудника, которым управляют. Рекурсивные связи иногда называются унарными (unary).
Связям могут присваиваться ролевые имена— для указания назначения каждой сущности — участницы данной связи. Ролевые имена имеют большое значение в рекурсивных связях (при определении функций каждого участника). На рис. 1.9 показан пример использования ролевых имен в рекурсивной связи Supervises. Первое участие сущности Staff получило название Инспектор (Supervisor), а второе — Подчиненный (Supervisee).
Рис. 1.9. Пример рекурсивной связи Supervises с ролевыми именами Инспектор и Подчиненный
Ролевые имена могут также использоваться, когда две сущности связаны несколькими связями. Например, сущности Staff и Branch связаны двумя различными связями — Manages и IsAllocated. Как показано на рис. 1.10, использование ролевых имен существенно проясняет назначение каждой связи. Например, в случае, когда сущность Staff связана с сущностью Branch связью Manages, сотрудник (сущность Staff) с ролевым именем Руководитель (Manager) управляет (связь Manages) отделением компании с ролевым именем Отделение компании (Branch_Office). Аналогично, когда сущность Branch связана с сущностью Staff связью IsAllocated. то сотрудник с ролевым именем Работник (Member_of_Staff) является приписанным к отделению компании с ролевым именем Отделение компании (Branch_Office).
Рис. 1.10. Пример сущностей, связанных двумя различными связями Manages и IsAllocated, с указанием ролевых имен
Ролевые имена обычно не требуются, если функции сущностей — участниц данной связи определены недвусмысленно.