Основные понятия ER-модели

Приведем основные определения терминов, используемых для ER(Entity-Relationship)-модели или как еще ее называют модели «сущность-связь»:

Сущность (entity) – это объект, который может быть идентифицирован неким способом, отличающим его от других объектов. Примеры: конкретный человек, предприятие, событие и т.д.

Набор сущностей (entity set) − множество сущностей одного типа (обладающих одинаковыми свойствами). Примеры: все люди, предприятия, праздники и т.д. Наборы сущностей необязательно должны быть непересекающимися. Например, сущность, принадлежащая к набору Мужчины, также принадлежит набору Люди.

Связь (relationship) – это ассоциация, установленная между несколькими сущностями. Например:

· Поскольку каждый сотрудник работает в каком-либо отделе, между сущностями Сотрудник и Отдел существует связь "работает в …" или Отдел−Работник.

· Так как один из работников отдела является его руководителем, то между сущностями Сотрудник и Отдел имеется связь "руководит …" или Отдел−Руководитель.

· Могут существовать и связи между сущностями одного типа, например связь Родитель – Потомок между двумя сущностями Человек.

Связь также может иметь атрибуты. Например, для связи Отдел−Работник можно задать атрибут Стаж_работы_в_отделе.

Очень важным свойством модели «сущность-связь» является то, что она может быть представлена в виде графической схемы. Это значительно облегчает анализ предметной области. Рассмотрим в качестве примера использование нотации Чена-Мартина для создания семантической модели отображающей связь на предприятии сотрудников, отделов и должностей. В табл.8 приведен список принятых условных обозначений.

Таблица 8 – Условные обозначения нотации Чена-Мартина для построения ER-модели

Обозначение Значение
Набор независимых сущностей
Набор зависимых сущностей
Атрибут
Ключевой атрибут
Набор связей

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

· один к одному (обозначается 1: 1). Это означает, что в такой связи сущности с одной ролью всегда соответствует не более одной сущности с другой ролью. В рассматриваемом примере это связь «руководит», поскольку в каждом отделе может быть только один начальник, а сотрудник может руководить только в одном отделе. Так как степень связи для каждой сущности равна 1, то они соединяются одной линией.

Важной характеристикой является класс принадлежности входящих в нее сущностей или кардинальность связи. Так как в каждом отделе обязательно должен быть руководитель, то каждой сущности ОТДЕЛ непременно должна соответствовать сущность СОТРУДНИК. Однако не каждый сотрудник является руководителем отдела, следовательно, в данной связи не каждая сущность СОТРУДНИК имеет ассоциированную с ней сущность ОТДЕЛ (рис.5).

Рис. 5 – Пример связи «один к одному»

Таким образом, говорят, что сущность СОТРУДНИК имеет обязательный класс принадлежности – , а сущность ОТДЕЛ имеет необязательный класс принадлежности – .

· Много к одному (n: 1). Предположим, что предприятие строит свою деятельность на основании контрактов, заключаемых с заказчиками. Этот факт отображается в модели «сущность-связь» с помощью связи Контракт-Заказчик, объединяющей сущности Контракт (номер, срок исполнения, сумма) и Заказчик (наименование, адрес). Так как с одним заказчиком может быть заключено более одного контракта, то связь Контракт-заказчик между этими сущностями имеет степень n: 1 (рис. 6).

Рис. 6. – Пример связи «многие к одному»

· многие ко многим (n: n). В этом случае каждая из ассоциированных сущностей может быть представлена любым количеством экземпляров. Пусть на рассматриваемом предприятии для выполнения каждого контракта создается рабочая группа, в которую входят сотрудники разных отделов. Поскольку каждый сотрудник может входить в несколько (или ни в одну) рабочих групп, а каждая группа должна включать не менее одного сотрудника, то связь между сущностями СОТРУДНИК и РАБОЧАЯ ГРУППА имеет степень n: n (рис. 7).

Рис.7. – Пример связи «многие ко многим»

Сотрудник может иметь более чем одну должность (работать более чем в одном отделе), причем может занимать неполную ставку. В то же время одну и ту же должность могут занимать одновременно несколько сотрудников. В результате необходимо ввести наборы сущностей Сотрудник, Отдел, Должность с их атрибутами и набор связей «работает в». Также для связи «работает в» можно установить атрибут ставка (рис. 8). Тогда связь «работает в» будет являться тринарной (связывать три сущности). При реализации в большинстве СУБД, например в MicrosoftAccess, требуется, чтобы присутствовали только бинарные связи. Кроме того, атрибуты могут принадлежать только сущностям. Поэтому вводят дополнительные сущности, в рассматриваемом примере – Штатная единица с атрибутом ставка. В результате получим семантическую модель, представленную на рис.9.

Рис. 9. – Пример диаграммы «сущность-связь»

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: