|
Программирование >> Реляционные базы данных
Studio / \ Producing of star I / studio pHt. 2.12. Четырехсторонняя связь На рис. 2.12 есть стрелки, указывающие на Studios в двух ролях: как владельиа кинозвезды и как производителя фильма, но нет стрелок, указывающих на Stars или Movies. Это значит, что при наличии кинозвезды, фильма и студии, производящей фильм, только одна студия может владеть кинозвездой. (Предполагается, что кинозвезда имеет контракт в точности с одной студией.) Аналогично, данный фильм производтся единственной студией, [юэтому при наличии кинозвезды, фильма и студии, владеющей кинозвездой, можно определить единственную производящую фильм студию. Заметим, что обоих случаях для определения уникальной сущности реально нужна только одна из остальных сущностей (например, для определения уникальной производящей студии необходимо знать только фильм), но этот факт не изменяет множественное определение многосторонней связи. Стрелки не указывают на Stars Movies. При наличии кинозвезды, владеющей ею студии и студии, выпускающей фильм, может быть множество контрактов, позволяющих кинозвезде играть в различных фильмах Значгг. совсем не обязательно, что остальные три компонента в четверке данной связи определяют единственный фильм. Аналогично, производящая студия может заключать контракт с другими сгуд1И1Ми об участии нескольких их звезд в одном своем фильме. Таким образом, ктчо?11езда не определяется тремя остальными компонентами данной связи. □ 2.2.4 Атрибуты связей Иногда полезно приписывать атрибуты к связи, а не к одному из множеств сущностей, находящихся в данной связи. Рассмотрим связь, предст.тляющую Koirr-ракт КИИОЗИСЗЯ.Ы со студней иа участие в фильме (см рис. 2.10). Допустим, надо записать гонорар, указанный в этом контракте. Однако гонорар нельзя связать с кинозвездой, так как она может получать разные гонорары за участие в разных Пример 2,10, В качестве последнего примера, включающего в себя многостороннюю связь и множество сущностей со mhoihmh ролями, на рис. 2.12 дается более оюжная версия связи Contracts, введенной в примере 2 8. Здесь показана связь Contracts между двумя студиями, кинозвсааой и фильмом. Предполагается, что студня, имеющая контракт с кинозвездой, может заключить со второй студией контракт, позволяющий ей снимать кинозвезду d своем фильме. Такая связь описывается четверками вида (студия I, студия2. кинозвезда, фильм), причем студя2 заключает со студией! контракт на съемки кинозвезды студии! в фильме студпи2. фильмах. Не имеет смысла связывать контракт и со студией (различным звездам она может выплачивать разные гонорары) или с фильмом (разные кинозвезды получают за один фильм разные гонорары). Удобно связать гонорар с тройкой (кинозвезда, фильм, студия) во множестве отношений для связи Contracts. На рис. 2.13 показана схема рис. 2.10 вместе с атрибутами. Связь имеет атрибут salary, а множества сущностей имеют те же атрибуты, которые были показаны на рис. 2.8. Movies (name Рие. 2.13, Связь с отрибутоми (sala .Stars Studios -(dress Размешать атрибуты на самих связях нет необходимости. Вместо этого можно ввести новое множество сущностей с атрибутами, приписанными данной связи, и включить такое множество в связь. Пример 2.П. Изменим E/R-диаграмму (рис. 2.13), на которой связь Contracts имеет атрибут salary. Создадим множество Salaries с атрибутом salary, которое станет четвертым членом связи Contracts. Результат такого изменения показан на рис. 2.14. О
-(dress Рис. 2.14. Перемещение отрибуто в множество щщносгей 2.2.5 Конвертирование многосторонних связей в бинарные Напомним, что, в отличие от E/R модели, в ODL допустимы только бинарные связи. Однако любую связь, включающую в себя более двух компонентов нетрудно конвертировать в множество бинарных связей типа многие-к-одному без потери какой-либо информации. В Е/К.-модели можно ввести новое множество сущностей, элементами которого являются кортежи множества отношений дня многосторонней связи. Такое множество называется множеством связующих сущностей. Затем вводится связь типа многие-к-одному этого множества связующих сущностей с каждым множеством сущностей, предоставляющим элемент кортежей исходной многосторонней связи Если какое то множество сущностей играет несколько ролей, оно является целевым пунктом одной связи для каждой из ролей. Пример 2.12. Четырехстороннюю связь (см. рис. 2.12) можно заменить множеством сущностей под названием Coniracis. Как показано на рис. 2.15, это множество участвует в четырех связях. Если множество отиощещЙ для связи Contraas имеет четверку (студия 1, студня2, кинозвезда, фильм) то сущность е множества Coniracis соединена связью Star-of с сущностью siar из множества Stars, связью Movie-of с сущностью movie из множества Movies, а также связями Siudio of star и Producing-siudio соответственно с сущностями studio] и studio2 из множества Studios Movies Stars Contracts Studios pHt. 2.15. Замено многосторон.1ей связи множеством сущностей и бинарными сагвты Предполагается, что у множества Cmtracts нет атрибутов, хотя другие множества сущностей на рис. 2.15 имеют невидимые атрибуты. Можно добавить атрибуты и множеству Contracts, например дату подписания контракта. □ Многостороння связь, подобная показанной на рис. 2,12, в ODL изображалась бы способом, сходным с описанным выше преобразованием для E/R-модели. Однако в ODL нет многосторонних связей, поэтому данное преобразование не выбирается по желанию - оно обязательно. Пример 2.13. Допустим, ecTi. классы Star, Movie и Studio, соответствующие каждому из трех множеств сущностей, показанных на рис. 2.12. Для представления четырехсторонней связи Contracts вводится новый класс Contract, не имеющий атрибутов, но имеющий четыре связи, соответствующие четырем компонентам E/R-связи. ODL-описание дано на рис. 2.16; обратные связи пропущены. Каждая четверка в E/R-связи Contracts соответствует объекту ODL-класса Contract □
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |