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

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

ОтцыМатериДети(КодЧ-Отец: null, КодЧ-Мать: null,

 

КодЧ,

Атрибуты)

 

 

 

 

primary

key(КодЧ)

foreign

key(КодЧ-Отец) references ОтцыМатериДети(КодЧ)

foreign

key(КодЧ-Мать) references ОтцыМатериДети(КодЧ)

Дальнейшие обобщения могут быть связаны с введением нескольких разнотипных иерархий и установлением перекрестных ссылок между ними.

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

5.4.3. Пример реализации иерархической рекурсии

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

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

2)Построить ключевую диаграмму. Привести маркеры атрибутов ключей и указать кратности связей. Подразделения идентифицировать мнемокодами (обновление мнемокода является осмыс-

ленным). Какой вид связи устанавливается между подразделением и вышестоящим подразделением?

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

4)Привести пример в табличной форме для организации, имеющей 6 подразделений со следующей структурой подчиненности: 1(2(3,4),5(6)).

Решение. Презентационная и ключевая диаграммы представлены на рис. 5.8, 5.9 соответственно. Между подразделением и вышестоящим подразделением может быть установлена лишь необязательная неидентифицирующая связь.

Рис. 5.8.: Иерархическая рекурсия. Презентационная диаграмма (см. 5.4.3)

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

create table Подразделения МнемоП-Выше null

primary key(МнемоП)

Рис. 5.9.: Иерархическая рекурсия. Ключевая диаграмма (см. 5.4.3)

foreign key(МнемоП-Выше) references Подразделения(МнемоП) on update cascade

on delete set null

При обновлении мнемокода подразделения (МнемоП) здесь применяется правило каскадного обновления (on update cascade), так что все непосредственно нижестоящие подразделения (посредством мнемокода МнемоП-Выше) станут ссылаться на это новое значение мнемокода. В рассматриваемом ниже примере при изменении значения первичного ключа (МнемоП) c 2 на 20 значения внешнего ключа (МнемоП-Выше) также изменятся с 2 на 20.

При удалении подразделения применение правила присвоения null-значений (on delete set null) приведет к тому, что все непосредственно нижестоящие подразделения приобретут самостоятельный статус и станут корнями иерархий (например, при расформировании полка составляющие его батальоны станут отдельными). В рассматриваемом ниже примере при удалении данных о подразделении со значением первичного ключа (МнемоП), равным 2, значения внешнего ключа (МнемоП-Выше) изменятся с 2 на null-значение.

Пример в табличной форме для организации со структурой 1(2(3,4),5(6)) приведен на рис. 5.10

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