2.2.Диаграмма "сущность-связь".
Очень важным свойством модели "сущность-связь" является то, что она может быть
представлена в виде графической схемы. Это значительно облегчает анализ предметной
области. Существует несколько вариантов обозначения элементов диаграммы "сущность-связь",
каждый из которых имеет свои положительные черты. Краткий обзор некоторых из этих
нотаций будет сделан в параграфе 2.4. Здесь мы будем использовать
некий гибрид нотаций Чена (обозначение сущностей,
связей и атрибутов) и Мартина (обозначение степеней и кардинальностей связей). В
таблице 2.1 приводится список используемых здесь обозначений.
Таблица 2.1
Обозначение | Значение |
| Набор независимых сущностей |
| Набор зависимых сущностей |
| Атрибут |
| Ключевой атрибут |
| Набор связей |
Атрибуты с сущностями и сущности со связями соединяются прямыми линиями. При этом
для указания кардинальностей связей используются обозначения, введенные в
предыдущем параграфе.
В процессе построения диаграммы можно выделить несколько очевидных этапов:
-
Идентификация представляющих интерес сущностей и связей.
-
Идентификация семантической информации в наборах связей (например, является
ли некоторый набор связей отображением 1:n).
-
Определение кардинальностей связей.
-
Определение атрибутов и наборов их значений (доменов).
-
Организация данных в виде отношений "сущность-связь".
В качестве примера построим диаграмму, отображающую связь данных для подсистемы
учета персонала предприятия.
Выделим интересующие нас сущности и связи:
- Прежде всего преприятие состоит из отделов, в которых работают сотрудники.
Оклад каждого сотрудника зависит от занимаемой им должности (инженер, ведущий инженер,
бухгалтер, уборщик и т.д.). Далее предположим, что на нашем предприятии допускается
совместительство должностей, т.е. каждый сотрудник может иметь более чем одну
должность (и работать более чем в одном отделе), причем может занимать неполную
ставку. В то же время, одну и ту же должность могут занимать одновременно несколько
сотрудников. В результате этих рассуждений мы должны ввести наборы сущностей
- ОТДЕЛ(ИМЯ_ОТДЕЛА),
- СОТРУДНИК(ТАБЕЛЬНЫЙ_НОМЕР, ИМЯ),
- ДОЛЖНОСТЬ(ИМЯ_ДОЛЖНОСТИ, ОКЛАД),
и и набор связей РАБОТАЕТ_В с атрибутом ставка между ними. Атрибут ставка
может принимать значения из интервала ]0,1] (больше нуля, но меньше или равен
единице), он определяет какую часть должностного оклада получает данный сотрудник.
Как уже отмечалось выше, каждый n-арный набор связей можно заменить несколькими
бинарными наборами. Сейчас как раз представляется удобный случай, чтобы оценить
преимущества каждого из этих способов представления связей.
- Тренарная связь, показанная здесь, безусловно несет более полную информацию
о предметной области. Действительно, она однозначно отображает тот факт, что оклад
сотрудника зависит от его должности, отдела, где он работает, и ставки. Однако, в этом
случае возникают некоторые проблемы с определением степени связи. Хотя, как было
сказано, каждый работник может занимать несколько должностей, а в штате каждого отдела
существуют вакансии с различными должностями, тем не менее класс принадлежности
сущности ДОЛЖНОСТЬ на приведенном рисунке установлен в (1,1). Это объясняется тем,
что ДОЛЖНОСТЬ ассоциируется фактически не с сущностями СОТРУДНИК и ОТДЕЛ, а со связью
между ними. Обозначать этот факт предлагается так, как это показано на следующей
диаграмме:
Здесь сущности СОТРУДНИК, ОТДЕЛ и связь РАБОТАЕТ_В аггрегируются в некую новую
абстрактную сущность, которая ассоциируется с сущностью ДОЛЖНОСТЬ с помощью связи
степени n:1. (Это обозначение заимствовано из книги
Silberschatz, Korth and Sudarshan Database System Concepts, 1997).
- Попытаемя отобразить ассоциации сотрудников, отделов и должностей с помощью бинарных
связей.
В этом случае для адекватного описания семантики предметной области необходимо ввести
еще одну сущность ШТАТНАЯ_ЕДИНИЦА, которая фактически заменяет собой связь РАБОТАЕТ_В
в абстрактной сущности и поэтому имеет атрибут ставка.
Переход от n-арной связи через аггрегацию сущностей к набору бинарных связей
можно рассматривать как последовательные этапы одного процесса, который приводит к
однозначному порождению реляционной модели данных. При построении диаграммы "сущность-
связь" можно использовать любой из этих трех способов представления данных.
- Перечисли ряд объектов, описанных в предыдущем праграфе, которые будут полезны при
моделировании данных рассматриваемого предприятия. Им соответствуют следующие сущности:
- ЗАКАЗЧИК(ИМЯ_ЗАКАЗЧИКА,АДРЕС)
- КОНТРАКТ(НОМЕР,СРОК_НАЧАЛА,СРОК_ОКОНЧАНИЯ,СУММА)
- РАБОЧАЯ ГРУППА(ПРОЦЕНТ_ВОЗНАГРАЖДЕНИЯ)
Атрибут "процент_вознаграждения" отражает ту долю стоимости контракта, которая
предназначена для оплаты труда членов соответствующей рабочей группы. Смысл остальных
атрибутов понятен без дополнительных пояснений. Связи между перечисленными сущностями
также описаны в предыдущем параграфе.
Как правило, один из членов рабочей группы является руководителем по отношению к другим
сотрудникам, входящим в ее состав. Для отражения этого факта мы должны ввести связь
"руководит" с кардинальностью 1,1:0,n между сущностями СОТРУДНИК и РАБОЧАЯ_ГРУППА
(сотрудник может руководить в произвольном числе рабочих групп, но каждая рабочая группа
имеет одного и только одного руководителя).
- Рассмотрим теперь более внимательно информационный объект "заказчик". На практике
очень часто возникает необходимость различать национальную прнадлежность юридических
лиц, с которыми предприятие вступает в договорные отношения. Это свзано с тем, что для
зарубежных фирм необходимо хранить, например, сведения о валюте, в которой
осуществляются расчеты, языке, на котором подписан котракт и т.д. В свою очередь, для
отечественных компаний необходимо иметь сведения о их форме собственности (частная
или государственная), поскольку от этого может зависеть порядок налогообложения средств,
полученных за выполнение работ по контракту.
Таким образом, мы приходим к выводу, что необходимо ввести в рассмотрение еще два
непересекающихся множества ЗАРУБЕЖНОЕ_ПРЕДПРИЯТИЕ(ВАЛЮТА, ЯЗЫК) и
ОТЕЧЕСТВЕННОЕ_ПРЕДПРИЯТИЕ(ФОРМА_СОБСТВЕННОСТИ), объединение которых составляет полное
множество ЗАКАЗЧИК. Ассоциацию между этими объектами называют отношением наследования
или иерархической связью, так как сущности ЗАРУБЕЖНОЕ_ПРЕДПРИЯТИЕ и
ОТЕЧЕСТВЕННОЕ_ПРЕДПРИЯТИЕ наследуют атрибуты сущности ЗАКАЗЧИК(ИМЯ_ЗАКАЗЧИКА, АДРЕС).
Для того, чтобы определить к какому подмножеству относится конкретная сущность из набора
ЗАКАЗЧИК (и, соответственно, какой набор атрибутов она имеет) необходимо ввести атрибут
"национальная принадлежность">, называемый дискриминантом. Этот тип связи
предлагается отображать на диаграмме следующим образом:
Обобщая все проведенные выше рассуждения, получим диаграму "сущность-связь",
показанную на слудющем рисунке.
В заключение этого раздела читателю предлагается несколько вопросов для самостоятельной
проработки:
- Как изменится диаграмма "сущность - связь" в том случае, если процент вознаграждения
по всем контрактам будет одинаков?
- Что изменится в диаграмме, если будет запрещено совместительство должностей, т.е.
каждый сотрудник будет иметь право занимать только одну должность со ставкой 1?
Ответы:
- В первом случае отпадает необходимость в сущности РАБОЧАЯ_ГРУППА. Все ее связи перейдут
к сущности КОНТРАКТ.
- Во втором случае связь "занимает" не будет иметь атрибутов. При декомпозиции ее на
бинарные связи получим сущность ШТАТНАЯ_ЕДИНИЦА, также не имеющую атрибутов.
Следующая глава: 2.3.Целостность данных
Введение в базы данных. (c) Зеленков
Ю.А. (yz@yars.free.net) 1997
г.
Центр Интернет ЯрГУ