Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab4.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
537.09 Кб
Скачать

5. Преобразование составных объектных множеств

Рассмотрим рис. 7, на котором представлена концептуальная модель отслеживания продаж фирмы International Product Distribution.

Рис. 7. Составное объектное множество

Отношение IS-SOLD-IN (ПРОДАН В), рассматриваемое как составное объектное множе­ство, имеет атрибут AMOUNT. Мы преобразуем эту модель в соответствии с изложенными выше правилами. Поскольку отношение имеет мощность много – ко - многим, мы создадим три таблицы:

PRODUCT (PRODUCT-#)

COUNTRY (COUNTRY-NAME)

IS-SOLD-IN (PRODUCT-#, COUNTRY-NAME, AMOUNT)

Внешние ключи:

PRODUCT-# ссылается на PRODUCT

COUNTRY-NAME ссылается на COUNTRY

Мы назвали ключевые атрибуты PRODUCT-# (№-ТОВАРА) и COUNTRY-NAME (НАИМЕНОВАНИЕ-СТРАНЫ), чтобы отличать их от имен соответст­вующих таблиц.

Мы также поместили в таблицу IS-SOLD-IN атрибут AMOUNT, так как этот атрибут относится к составному объекту.

Если бы отношение IS-SOLD-IN имело другие относящиеся к нему атрибуты, то мы точно так же добавили бы их в таблицу.

Рис. 8. Вложенные составные объекты

Таблицы PRODUCT и COUNTRY в нашем примере имеют по одному атрибуту, но, разумеется, они также могут иметь дополнительные атрибуты. Если в базе данных не требуются больше никакие атрибуты этих таблиц, то их (таблицы) можно удалить из схемы; тогда схема будет состоять из одной таблицы IS-SOLD-IN.

На рис. 8 представлено отношение между составным объектом IS-SOLD-IN и объектом DATE (ДАТА). В этом случае атрибут QUANTITY (КОЛИЧЕСТВО) относится к товару, проданному в данной стране в данный день. Мы можем следующим образом преобразовать эту концептуальную мо­дель в реляционную:

IS-SOLD-IN (PRODUCT-#, COUNTRY-NAME)

SOLD-ON (PRODUCT-#, COUNTRY-NAME, DATE, QUANTITY).

Рис. 9. Трехстороннее отношение

(Мы опустили состоящие из одного столбца таблицы, определяющие объектные множества.) Обратите внимание, однако, что вся информация, содержащаяся в таблице IS-SOLD-IN, содержится также в таблице SOLD-ON (ПРОДАН-ТОГДА-ТО). Таким образом, мы можем удалить из схемы таблицу IS-SOLD-IN. Если бы таблица IS-SOLD-IN имела неключевые атрибуты, ее нельзя было бы удалить. Удаляя таблицу IS-SOLD-IN из схемы, мы утвер­ждаем, что модель на рис. 8 на самом деле представляет трехстороннее отношение с атрибутом. Таким образом, она эквивалентна модели рис. 9. Реляционная модель для рис. 9 будет выглядеть так:

SOLD-ON (PRODUCT-#, COUNTRY-NAME, DATE, QUANTITY)

6. Преобразование рекурсивных отношений

На рис. 10 представлена модель, содержащая рекурсивное отношение.

Рис. 10. Рекурсивное отношение

Важно понимать, что объектное множество WORKER, дважды встречающееся на диаграмме, — это одно и то же объектное множество в обоих случаях. Обе копии объект­ного множества WORKER имеют одни и те же атрибуты, хотя эти атрибуты показаны только для правой копии. В этой модели два экземпляра объект­ного множества WORKER использованы для удобства, чтобы показать отно­шение SUPERVISES, существующее между объектами WORKER и WORKER. Это отношение называется рекурсивным, поскольку оно связывает объектное множество с ним самим. В нашем случае отношение мощности один – ко - многим означает, что одному работнику подчиняются несколько других работников.

Как преобразовать объектное множество WORKER вместе с его атрибу­тами и отношением SUPERVISES в реляционную таблицу? Используя ранее изученный подход, мы придем к следующему результату:

WORKER (WORKER-ID, NAME, HOURLY-RATE, WORKER-ID)

Это решение некорректно, поскольку реляционная таблица WORKER имеет два атрибута с именем WORKER-ID; но два атрибута одной таблицы не могут иметь одинаковые имена. Решение состоит в том, чтобы изменить имя второго атрибута WORKER-ID на имя, соответствующее отношению SUPERVISES, которое оно представляет. Таким образом, мы меняем его на SUPV-ID.

WORKER (WORKER-ID, NAME, HOURLY-RATE, SUPV-ID) Внешний ключ: SUPV-ID ссылается на WORKER

Обратите внимание, что SUPV-ID — это рекурсивный внешний ключ, поскольку он ссылается на WORKER-ID, то есть ключ своей собственной таблицы. Таким образом, в результате преобразования рекурсивных отношений появляются рекурсивные внешние ключи. Образец данных таблицы WORKER представлен на рис. 11.

Итак, мы продемонстрировали способы преобразования конструкций концептуальной модели — объектов, атрибутов, отношений, конкретизации и составных объектов — в реляционные таблицы. После того как преобразование всех конкретных конструкций закончено, полученную реляционную схему необходимо пересмотреть на предмет избавления от избыточности. Любые избыточные таблицы (то есть таблицы, информация которых полностью содержится в других таблицах схемы) необходимо удалить из схемы.

Рис.11. Таблица с рекурсивным внешним ключом

Кроме того, обратите внимание, что все полученные в результате таб­лицы имеют четвертую нормальную форму. Причина этого в следующем.

Функциональные зависимости, определенные для реляционной модели, являются атрибутами отношения один – к - одному или один – ко - многим.

Описанный нами процесс преобразования каждой из этих конструкций в атрибуты реляционных таблиц гарантирует, что они будут зависеть только от ключевых атрибутов. Таким образом, каждая полученная реляционная таблица будет иметь ЗНФ. Многозначные атрибуты реляционной модели встречаются только в отношениях много – ко - многим. Поскольку они преобразуются в реляционные таблицы, обладающие составными ключами из ключевых атрибутов отдельных объектных множеств, то они гарантированно имеют 4НФ.

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