Теория и практика построения баз данных (1088289), страница 55
Текст из файла (страница 55)
7.12, а показан гибридный объект ЗАКАЗ и связанные с ппм объекты. Чтобы представить данный объект с помощью отношений, мы вводим одно отношение для самого объекта и по одному отношению для содержащихся в нем объектов ПОКУПАТЕЛЬ и СЛУЖАЩИЙ. Затем, как в случае композитного объекта, мы вводим отношение для многозначной группы, которой является СтрокаЗаказа. Поскольку эта группа содержит другой объект, ТОВАР, мы вводим отношение и для этого объекта.
Все связи «один ко многим» представляются путем помещения ключа родителя в дочернее отношение, как показано на рис. 7.12, б. Пример на рис. 7.12 обманчиво прост. Как отмечалось в главе 4, на самом деле есть четыре разновидности гибридных объектов. Эти разновидности приведены в табл. 7.1. Таблица 7.1. Четыре случая кардинальности гибридного обьекта ОБЬЕКТ2 связан с одним экземпляром ОБЪЕКТ1 и может появиться только в одном экземпляре группы, принадлежащей этому обьекту ОБЪЕКТ2 связан с одним экземпляром ОБЪЕКТ1 и мажет появиться в нескольких экземплярах группы, принадлежащей этому объекту ОБЪЕКТ2 может быть связан связан с несколькими экземплярами ОБЪЕКТ! и может появиться только в одном экземпляре группы, принадлежащей этому объекту ОБЪЕКТ2 может быть связан связан с несколькими экземплярами ОБЪЕКТ! и может появиться в нескольких экземплярах группы, принадлежащей этому объекту Случаи 3 и 4 встречаются чаще, чем случаи 1 и 2, поэтому их мы рассмотрим в первую очередь.
Объект ОБЪЕКТ1 на рис. 7.13 содержит две группы: Группа1 иллюстрирует случай 3, а Группа2 — случай 4. Группа1 иь|сет максимальное кардинальное число Х, что означает, что ОБЪЕКТ1 может содержать много экземпляров группы Группа1. Кроме того, поскольку ОБЪЕКТ2 помечен как уникальный идегпификатор, конкретный экземпляр объекта ОБЪЕКТ2 может появляться только в одном из экземпляров группы Группа1, содсржагцейся в объекте ОБЪЕКТ1. Такик! образом, ОБЪЕКТ1 действует как идентификатор группы Группа1 в объекте ОБЪЕКТ1. (Этот случай иллюстрируется объектом ЗАКАЗ на рис. 7.12.
Объект ТОВАР является идентификатором группы СтрокаЗаказа, поэтому данный товар может появиться только в одной строке конкретного заказа. Но олин и тот же товар может фигурировать в различных заказах.) Рассмотрим реляционное представление группы Группа1 на рис. 7.13. Отношение 01 представляет ОБЪЕКТ1, а отношение 02 представляет ОБЪЕКТ2. Кроме того, для группы Группа1 было создано третье отношение, 0-Г1. Связь между 01 и 0-Г1 Преобразования семантических обьектов в реляционные конструкции 255 имеет вид 1:Х, поэтому мы помегцаем ключ отноше!птя 02 (атрибут А2) в отноше- ние 0-Г1.
Поскольку объект ОБЪЕКТ2 может появляться с конкретным значением атрибута ОБЪЕКТ1 только один раз, комбинация (А1, А2) в отношении 0-Г1 явля- ется уникальной и может быть сделана ключом данного отношения. ЗАКАЗ (Номерзаквзэ, Дете, ПромвжуточныйИтог, Налог, Итог, Телефон, ИмяСлужэщево) ПОКУПАТЕЛЬ (ИмВПЛК(пвталв, АДРес, ГоРоД, Штет, ИнДекс, Твлафлн) СТРОКА ЗАКАЗА (НдмаДЗлкэзе, Коятоееде, количество, Стоимость) ТОВАР (КййТовайа, ОписвниеТовврв, Цена) Ограничения ссылочной целостности: Значение атрибутв ИмяСпужэщвго в отношении ЗАКАЗ должно существовать среди значений атрибута ИмяСлужащего в отношении СЛУЖАЩИЙ Значение атрибута Телефон в отношении ЗАКАЗ должно существовать среди значений атрибута Телефон в отношении ПОКУПАТЕЛЬ Значение атрибута Номврзвказа в отношении СТРОКА ЗАКАЗА должно существовать среди значений атрибута Номерзэказв в отношении ЗАКАЗ Значение атрибута КодТовврв в отношении СТРОКА ЗАКАЗА должно существовать среди значений атрибуте КцдТоввра в отношении ЗАКАЗ б Рис.
7.12. Пример реляционного представления гибридных обьектов: в — пример гибридного обьектв; б — реляционное представление обьекта ЗАКАЗ и связанных с ним объектов м — Случай 3 Случай 4 03 01 02 Ассоциативные объекты 256 Глава 7. Проектирование баз данных в рамках объектной модели Ограничения ссмлочной целостности: Значение атрибута А1 в отношении 0-Г1 должно существовать сойдя значений атрибута А1 в отношении 01 Значение атрибута А2 в отношении 0-Г1 должно существовать сржци значений атрибута А2 в отношении 02 Значение атрибута А1 в отношении 0-Г2 должно существовать среди значений атрибу|а А1 в отношении 01 Значение атрибута АЗ в отношении 0-Г2 должно существовать среди значений атрибута АЗ в отношении ОЗ Рис. 7.13. Общая схема преобразования гибридных объектов в отношения Теперь рассмотрим группу Группа2. Объект ОБЬЕКТЗ не определяет группу Группа2, поэтому он может появляться в различных акземплярах этой группы внутри одного экземпляра объекта ОБЬЕКТ1.
(Объект ЗАКАЗ на рис. 7.12 был бы подобен ОБЪЕКТЗ, если бы объектньш атрибут ТОВАР не был уникальным идентификатором в группе СтрокаЗаназа. Это означало бы, что конкретный товар может фигурировать много раз в одном и том же заказе.) Так как объект ОБЪЕКТЗ не является идентификатором группы Группа2, мы предполагаем, что идентификатором является какой-то другой атрибут, Г2. На рнс.
7.13 показано созданное нами для объекта ОБЪЕКТЗ отношение 03, а также отношение О-Г2, представляющее группу Группа2. Связь между 01 и 0-Г2 имеет вид 1:Н, поэтому мы помешаем ключ отношения 01 (атрибут А1) в отношение О-Г2. Связь между 03 и 0-Г2 имеет вид 1:1ч', поэтому мы помещаем ключ оп|ошения 03 (атрибут АЗ) в отношение О-Г2. Теперь, однако, в отличие от случая с группой Группа1, комбинация (А1, АЗ) не может быть ключом О-Г2, поскольку атрибут АЗ может быть спарен с данным Преобразования семантических объектов в реляционные конструкции 257 атрибутом А1 много раз. То есть комбинация (А1, АЗ) не является уникальной и О-Г2, поэтому ключом этого отношения должна быть комбинация (А1, Г2).
Случай 1 аналогичен случаю 3, с тем только ограничением, что объект ОБЪЕКТ2 может быть связан только с одним экземпляром объекта ОБЪЕКТ1. Отношения, н.ц|браженные на рис. 7.13, годятся н здесь, но мы должны добавить ключ отношения 01 (атрибут А1) в отношение 02 и установить ограничение, состоящее в том, |то комбинация (А1, А2) в отношении 0-Г1 должна совпадать с комбинацией (А1, А2) в отношении 02. Случай 2 аналогичен случаю 4, но с тем ограничением, что объект ОБЪЕКТЗ может быть связан только с одним экземпляром объекта ОБЪЕКТ1.
Опять-таки, отношения на рис. 7.13 остаются годными и для этого случая, но мы должны добавить ключ отношения 01 (атрибут А1) в отношение 03 и установить следующее ограничение: комбинация (А1, АЗ) в отношении 0-Г2 является подмножеством комбинации (А1, АЗ) в отношении 03 (см.
вопросы 3 и 8 в конце главы.) Ассоциативный объект — это объект, который связывает два других объекта. Он представляет собой частный случай составного объекта, возникавший чаще всего в ситуациях, связанных с каким-либо назначением. На рис. 7.14, и изображен объект РЕЙС, который связывает объекты САМОЛЕТ и ПИЛОТ. Для представления |шсоциативного объекта мы определяем отношение для каждого из трех объектов, а затем представляем связи между ними, используя одну из стратегий, описанных выше.
На рис. 7.14, б, например, изображены три отношения; одно опрелелено для объекта САМОЛЕТ, одно для объекта ПИЛОТ и одно для объекта РЕЙС. Связи между объектом РЕЙС и каждым из объектов САМОЛЕТ и ПИЛОТ пыеют внд 1:Ы; чтобы представить э и| связи, мы помещаем клк|ч родителя в дочернее отношение. В данном случае мы помещаем ключи отношений САМОЛЕТ и ПИЛОТ в отношение РЕЙС. Отношение РЕЙС имеет свой собственный ключ. Хотя оно содержит внешние ключи, эти ключи являются всего лишь атрибутами и не входят в ключ отношения. Однако это не всегда так. Если бы отношение РЕЙС не имело собственного ключа, его ключом была бы комбинация внешних ключей объектов, которые оно связывает. В данном случае это была бы комбинация (ХвостовойНояер, НомерПил эта„Дата).
В общем случае при преобразовании ассоциативных объектов в реляционные конструкции мы определяем по одному отношсншо на каждый объект, участвующий в связи. На рис. 7.15 объект ОБЪЕКТЗ связывает объекты ОБЪЕКТ1 и ОБЪЕКТ2. Для этих объектов мы определяем отношения 01, 02 и ОЗ, как показано на рисунке. Ключи обоих родительских отношений, 01 и 02, фигурируют в качестве внешних ключей в отношении 03, представляющем ассоциативный объект. Если бы ассоциативный объект не имел уникального идентифицирующего атрибута, для создания уникального идентификатора использовалась бы комбинация атрибутов отношений 01 и 02.