Модель «сущность-связь» можно представлять в виде графической схемы, что позволяет значительно облегчить анализ предметной области. Рассмотрим один из вариантов обозначений элементов диаграммы «сущность-связь»:
Между атрибутами и сущностями, а также сущностями и связями проводится прямая линия.
Построение диаграммы «сущность-связь»
При построении диаграммы выполняют несколько шагов:
- Идентифицируются представляющие интерес сущности и связи.
- Идентифицируется семантическая информация в наборах связей (к примеру, является ли какой-либо набор связей отображением n:1).
- Определяются кардинальности связей.
- Определяются атрибуты и наборы их значений (домены).
- Организовываются данные в виде отношений «сущность-связь».
Рассмотрим построение диаграммы, которая отображает связь данных, на примере учета персонала организации.
Пример построения диаграммы «сущность-связь»
Выделим сущности и связи:
-
Организация состоит из отделов. В отделах работают сотрудники. Оклад сотрудника зависит от его должности (уборщик, бухгалтер, инженер и т.д.). Пусть в организации допускается совмещение должностей, т.е. у сотрудника может быть больше одной должности работать не в одном отделе, при этом получать неполную ставку. К тому же одна и та же должность может быть занята одновременно несколькими сотрудниками. В таком случае должны быть введены наборы сущностей:
набор связей РАБОТАЕТ_В и атрибут СТАВКА между ними. Значением атрибута СТАВКА может быть значение из интервала (0,1], которое определяет часть должностного оклада, получаемую данным сотрудником.
ДОЛЖНОСТЬ ассоциируют фактически не с сущностями ОТДЕЛ и СОТРУДНИК, а со связью между ними. Обозначим данный факт, как показано на диаграмме (рисунок 2):
Сущности ОТДЕЛ, СОТРУДНИК и связь РАБОТАЕТ_В преобразуются в некоторую новую сущность, которая имеет связь n:1 с сущностью ДОЛЖНОСТЬ.
Отобразим ассоциации должностей, отделов и сотрудников при помощи бинарных связей.
Введем еще одну сущность ШТАТНАЯ_ЕДИНИЦА, которая фактически заменит связь РАБОТАЕТ_В в новой сущности и поэтому будет иметь атрибут ставка.
-
Перечислим объекты, которые полезны при моделировании данных организации, которым соответствуют сущности:
Атрибутом ПРОЦЕНТ_ВОЗНАГРАЖДЕНИЯ отражается та доля стоимости контракта, предназначенная для оплаты труда членов данной рабочей группы.
Пусть один сотрудник из рабочей группы будет руководителем, поэтому введем связь РУКОВОДИТ между сущностями РАБОЧАЯ_ГРУППА и СОТРУДНИК (сотрудник может быть руководителем в любом количестве рабочих групп, а каждая рабочая группа может иметь лишь одного руководителя).
-
Рассмотрим сущность ЗАКАЗЧИК. В практической деятельности зачастую необходимо указывать национальность юридического лица, с которым организация заключает договор. Это нужно, например, для сохранения сведений о валюте для расчетов, языке контракта и т.д. Для отечественных организаций нужно хранить сведения о форме собственности (государственная или частная), т.к. от этого, например, зависит порядок налогообложения средств, которые получены за работу по контракту.
Таким образом, очевидна необходимость введения еще двух непересекающихся множеств ЗАРУБЕЖНОЕ_ПРЕДПРИЯТИЕ (ВАЛЮТА, ЯЗЫК) и ОТЕЧЕСТВЕННОЕ_ПРЕДПРИЯТИЕ (ФОРМА_СОБСТВЕННОСТИ), при объединении которых получаем полное множество ЗАКАЗЧИК. Для определения подмножества, к которому относится конкретная сущность из набора ЗАКАЗЧИК нужно ввести атрибут НАЦИОНАЛЬНАЯ_ПРИНАДЛЕЖНОСТЬ, который называют дискриминантом. Данный тип связи отображают на диаграмме следующим образом:
Полученная диаграмма «сущность-связь» будет иметь следующий вид: