Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
dbbook(2010.04.15).pdf
Скачиваний:
51
Добавлен:
09.06.2015
Размер:
2.14 Mб
Скачать

произведению номеров аудиторий. Поэтому для подобных атрибутов следует выбирать строковый тип данных (даже если нумерация числовая, а не буквенно-числовая)

5.9. Агрегация

5.9.1. Абстрактная схема

Агрегация реализуется как взаимосвязь одного родительского с несколькими дочерними классами, описываемая связями, необязательными на родительском конце. Это означает, что дочерние сущности (компоненты) могут существовать вне родительской сущности (агрегата).

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

На презентационных диаграммах связь «агрегат-компонент» удобно изображать в нотации UML (рис. 5.36).

Рис. 5.36.: Связь «агрегат-компонент» в нотации UML

Построим абстрактные диаграммы (рис. 5.37, 5.38), реализующие агрегацию в реляционной модели.

Рис. 5.37.: Агрегация. Абстрактная презентационная диаграмма

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

5.9.2. Пример реализации агрегации

Практическое задание. Построить реляционную модель, описывающую маркированные компоненты автомобиля (двигатель, шасси). При этом

1)Построить презентационную диаграмму.

2)Построить ключевую диаграмму. Привести маркеры атрибутов ключей и указать кратности связей. Списывание автомобиля предполагает списывание шасси, но не двигателя. Какие виды связей используются?

3)Сформулировать и записать на псевдокоде декларативные правила поддержания ссылочной целостности. Обосновать на содержательном уровне выбор правил.

Рис. 5.38.: Агрегация. Абстрактная ключевая диаграмма

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

Рис. 5.39.: Агрегация. Презентационная диаграмма (см. 5.9.2)

Ключевая диаграмма представлена на рис. 5.40.

Здесь в секцию атрибутов класса Двигатели введен виртуальный атрибут, формула вычисления которого указана в секции ограничений.

В классе Шасси внешний ключ, ссылающийся на номер автомобиля, объявлен кандидатным ключом. В результате тип устанавливаемой обязательной неидентифицирующей связи изменяется с один-ко-многим (1 : 0 : : : 1) на один-к-не-более-одному (1 : 0 : : : 1). Такой вариант установления связей часто полезен на практике.

Таким образом, связь с классом Двигатели является необязательной неидентифицирующей, а с классом Шасси – обязательной неидентифицирующей. Однако в последнем случае вследствие

Рис. 5.40.: Агрегация. Ключевая диаграмма (см. 5.9.2)

объявления внешнего ключа и в качестве кандидатного устанавливается требуемая связь типа 1 : 0 : : : 1.

Приведем фрагменты операторов создания базовых отношений Двигатели и Шасси с определением правил поддержания ссылочной целостности:

create table Двигатели [№ А] null

primary key(МаркерД)

foreign key(№ А) references Автомобили(№ А) on update cascade

on delete set null

create table Шасси [№ А] not null primary key(МаркерШ) candidate key(№ А)

foreign key(№ А) references Автомобили(№ А) on update cascade

on delete cascade

Примечание. Здесь квадратные скобки, в которые должен быть заключен идентификатор № А, опускаются в случаях, исключающих двусмысленность

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

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