Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uch_pos.docx
Скачиваний:
213
Добавлен:
20.03.2016
Размер:
423.96 Кб
Скачать

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 моделей

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

Простота

Не стоит вводить в проект больше элементов, чем это необходимо.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]