Базы данных | страница 95
Теперь разберемся с кратностями связей, соединяющих родительский и оба дочерних класса. Так как мы имеем дело с не полностью идентифицирующими связями, то кратности присутствуют такие: «один» и «много». Кратность «один» присутствует на родительском конце обеих связей и символизирует то, что в списке всех имеющихся корпусов (а класс сущностей «Корпуса» является именно таким списком) каждый номер может встретиться только один, (и не более того) раз. А, в свою очередь, среди атрибутов классов «Аудитории» и «Лифты» каждый номер корпуса может встретиться много раз, так как аудиторий (или лифтов) больше, чем корпусов, и в каждом корпусе – несколько и аудиторий, и лифтов. Таким образом, при перечислении всех аудиторий и лифтов мы неминуемо будем повторять номера корпусов.
И, наконец, как и при рассмотрении предыдущего вида связи, запишем фрагменты операторов создания базовых отношений (или, что одно и то же, классов сущностей) «Аудитории» и «Лифты», причем сделаем это с определением правил поддержания ссылочной целостности типа cascade.
Итак, этот оператор будет выглядеть следующим образом:
Create table Аудитории
…
primary key (№ корпуса, № аудитории)
foreign key (№ корпуса) references Корпуса (№ корпуса)
on update cascade
on delete cascade
Create table Лифты
…
primary key (№ корпуса, № лифта)
foreign key (№ корпуса) references Корпуса (№ корпуса)
on update cascade
on delete cascade;
Таким образом, мы и задали все необходимые первичные и внешние ключи дочерних классов сущностей. Правило поддержания ссылочной целостности мы снова взяли cascade, так как уже описали его как наиболее рациональный.
Теперь приведем пример в табличной форме всех только что рассмотренных нами классов сущностей. Опишем те базовые отношения, которые отразили при помощи диаграммы, в виде таблиц, и для наглядности введем туда некоторое количество показательных данных.
Корпуса – родительское отношение имеет следующий вид:
Аудитории – дочерний класс сущностей:
Лифты – второй дочерний класс сущностей родительского класса «Корпуса»:
Итак, мы можем видеть, каким образом организована информация по всем корпусам, их аудиториям и лифтам в этой базе данных, которую вполне может использовать любое реально существующее учебное заведение.
6. Агрегация
Агрегация – это последний вид связи между классами сущностей, который подлежит рассмотрению в рамках нашего курса. Она также не является рекурсивной, и один из двух ее видов довольно близок по смыслу к уже рассмотренной ранее композитной агрегации.