Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Многосторонние связи






В E/R-моделях, в отличие от ODL, удобно определять связи между несколькими множествами. Однако на практике тернарные (трехсторонние) связи или связи еще более высокого порядка встречаются довольно редко. Многосторонние связи в E/R-моделях изображаются линиями, соединяющими ромб (связь) с каждым из участвующих в

 
 

данной связи множеств.

Пример 4.14. На рис. 49 изображена связь Договоры между цехом и мастером на изготовление изделия. Она означает, что цех заключает с мастером контракт на изготовление изделия. В общем случае значением E/R-связи можно считать множество кортежей, компонентами которых являются сущности, вовлеченные в данную связь. Например, связь Договоры можно описать трехмерными кортежами вида:

(цех, мастер, изделие).

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

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

4.2.3. Роли в связях

 

Некоторое множество сущностей может многократно фигурировать в одной и той же связи, от символа связи к множеству проводится столько линий, сколько раз это множество участвует в данной связи. Каждая из таких линий определяет роль, которую множество играет в связи.

Пример 4.15. На рис. 50 изображена связь Быть_учеником множества Мастера ссамим собой. Каждая связь – это связь между двумя мастерами, один из которых является учеником другого. Для различения этих двух мастеров, в рамках данной связи одна линия отмечена ролью Наставник, а другая ролью Ученик, которые обозначают мастера-наставника и его ученика соответственно. Предполагается, что у наставника может быть много учеников, но у каждого ученика есть только один наставник. Таким образом, стрелка E/R-диаграммы на рис. 50 показывает связь типа " многие-к-одному" множества Ученик с множеством Наставник.

Пример 4.16. В качестве примера, включающего в себя многостороннюю связь и множество сущностей со многими ролями, на рис. 51 дается более сложная версия связи Договоры, введенной в примере 4.5. Здесь показана связь Договоры между двумя цехами, мастером и изделием. Для иллюстрации предполагается, что цех, имеющий договор на пошив изделия с определенным мастером, может заключить со вторым цехом договор, позволяющий привлекать возможности другого цеха, например для получения каких-либо материалов или выполнения тонких работ. Такая связь описывается четверками вида:

(цех_1, цех_2, мастер, изделие),

причем цех_2 заключает с цехом_1 договор на привлечение мастера цеха1 для изделия цеха2.

На рис. 51 есть стрелки, указывающие на Цеха в двух ролях: как " владельца" мастера и как производителя изделия, но нет стрелок, указывающих на Мастера или Изделия. Это значит, что при наличии мастера, изделия и цеха, производящего изделие, только один цех может " владеть" мастером. (Предполагается, что мастер имеет договор только с одним цехом.) Аналогично, данное изделие производится единственным цехом, поэтому при наличии мастера, изделия и цеха, " владеющего" мастером, можно определить единственный производящий изделие цех. Заметим, что обоих случаях для определения уникальной сущности реально нужна только одна из остальных сущностей (например, для определения уникального производящего цеха необходимо знать только изделие), но этот факт не изменяет множественное определение многосторонней связи.

 
 

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

 

4.2.4. Атрибуты связей

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

(мастер, изделие, цех)

 
 

во множестве отношений для связи Договоры. На рис. 52 показана схема рис. 49 вместе с атрибутами. Связь имеет атрибут гонорар, а множества сущностей имеют те же атрибуты, которые были показаны на рис. 47.

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

Пример 4.17. Изменим E/R-диаграмму (рис. 52), на которой связь Договоры имеет атрибут гонорар.

 
 

Создадим множество Гонорары с атрибутом гонорар (рис. 53).

4.2.5. Конвертирование многосторонних связей в бинарные

 

В ODL допустимы только бинарные связи, в отличие от E/R-модели. Однако любую сложную связь, включающую в себя более двух компонентов, нетрудно конвертировать в множество бинарных связей типа " многие-к-одному" без потери какой-либо информации. В E/R-модели можно ввести новое множество сущностей, элементами которого являются кортежи множества отношений для многосторонней связи. Такое множество называется множеством связующих сущностей. Затем вводится связь типа " многие-к-одному" этого множества связующих сущностей с каждым множеством сущностей, предоставляющим элемент кортежей исходной многосторонней связи. Если какое-то множество сущностей играет несколько ролей, оно является целевым пунктом одной связи для каждой из ролей.

Пример 4.18. Четырехстороннюю связь (рис. 51) можно заменить множеством сущностей под названием Договоры. Как показано на рис. 54, это множество участвует в четырех связях. Если множество отношений для связи Договоры имеет четверку

(цех_1, цех_2, мастер, изделие)

то сущность множества Договоры соединена связью от_мастера с сущностью мастер из множества Мастера, связью изделие_от с сущностью изделие из множества Изделия, а также связями Цех_мастера и Выполняющий_цех соответственно с сущностями цех_1 и цех_2 из множества Цеха.

 

 
 

 

 


Предполагается, что у множества Договоры нет атрибутов, хотя другие множества сущностей на рис. 54 имеют невидимые атрибуты. Можно добавить атрибуты и множеству Договоры, например дату подписания договора, сведения о заказчике.

Многосторонняя связь, подобная показанной на рис. 51, в ODL изображалась бы способом, сходным с описанным выше преобразованием для E/R-модели. Однако в ODL нет многосторонних связей, поэтому данное преобразование не выбирается по желанию – оно обязательно.

Пример 4.19. Допустим, есть классы Мастер, Изделие и Цех, соответствующие каждому из трех множеств сущностей, показанных на рис. 52. Для представления четырехсторонней связи Договоры вводится новый класс Договор, не имеющий атрибутов, но имеющий четыре связи, соответствующие четырем компонентам E/R-связи. ODL-описание показано ниже; обратные связи пропущены. Каждая четверка в E/R-связи Договоры соответствует объекту ODL-класса Договор.

 

interface Договор{

relationship Цех владеет_мастером;

relationship Цех выполняющий_цех;

relationship Мастер мастер_;

relationship Изделие изделие_;

};

 

4.2.6. Проектирование E/R моделей

 

Как уже говорилось, проект должен быть правильным относительно описываемой предметной области. Сущности и их атрибуты, должны отражать реальные объекты.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.