Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование баз данных.doc
Скачиваний:
9
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

Начальник

Подчиненный

Рис. 33. Использование ролей в E-R модели.

Лучшее решение данной проблемы достигается, если рассмотреть всю проблему с иной точки зрения. Рассмотрим всех мастеров и рабочих (а заодно и начальников цехов, главных специалистов, директоров и другие уровни подчиненности, буде таковые существуют в данной организации) как служащих организации. Тогда должности и подчиненность – это роли, которые может играть данный служащий, более того – при такой постановке задачи один служащий может играть несколько ролей одновременно (например, рабочий, подчиненный мастеру может быть капитаном баскетбольной команды, в которую входит тот же мастер и т.д.). Графическая интерпретация представлена на рис 33 .

На приведенной E-R диаграмме Служащий представляет собой сущность с ключом «Табельный номер». Два ролевых набора – Начальник и Подчиненный, связанные с сущностью Служащий по этому ключу, описывают иерархические отношения в рамках организации. Характерно, что в этой модели данных нет ограничений на количество вхождений экземпляров сущности Служащий в ролевые наборы, следовательно, нет ограничений как на количество уровней иерархии, так и на количество наборов самих иерархий.

Отношение, полученное из исходной сущности (Служащий), содержит информацию, общую для всех служащих. Отношения, полученные из ролей, содержат специфичную для данных ролей информацию. Каждое порождаемое ролью отношение связано с источником порождения через атрибут, определенный на общем домене («Табельный номер»). Стоит обратить внимание, что связь Руководит соединяет две роли одной сущности. Такой тип связи называют рекурсивным. Эта связь рекурсивна в том смысле, что с точки зрения исходной сущности служащие руководят служащими.

Подведем итог :

Исходная сущность служит источником генерации одного отношения, причем ключ сущности является первичным ключом отношения. Ролевые элементы и их связи порождают число отношений, которое определяется количеством ролей, причем каждая роль трактуется как отдельная сущность.

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

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

Номенклатурный перечень

Рис. 34 . Е-R диаграмма для задачи о комплектации изделий.

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