5. Композиция
5. Композиция
Связь классов сущностей типа композиция, так же как и две предыдущие, не принадлежит к виду рекурсивной связи.
Композиция (или, как ее еще иногда называют, композитная агрегация) – это взаимосвязь одного родительского класса сущностей с несколькими дочерними классами сущностей, так же как и предыдущая рассмотренная нами связь. Обобщение.
Но если обобщение определялось как взаимосвязь классов сущности, описывающаяся полностью идентифицирующимися связями, то композиция, в свою очередь, описывается не полностью идентифицирующими связями, т. е. при композиции каждый атрибут первичного ключа родительского класса сущностей мигрирует в ключевой атрибут дочернего класса сущностей. И при этом атрибуты мигрирующего ключа лишь частично формируют первичный ключ дочернего класса сущностей.
Итак, при композитной агрегации (при композиции) родительский класс сущностей (или агрегат) связывается с несколькими дочерними классами сущностей (или компонентами). При этом компоненты агрегата (т. е. компоненты родительского класса сущностей) ссылаются на агрегат посредством внешнего ключа, входящего в состав первичного ключа и, следовательно, не могут существовать вне агрегата.
Вообще композитная агрегация представляет собой усиленную форму простой агрегации (о которой мы поговорим чуть дальше). Композиция (или композитная агрегация) характеризуется тем, что:
1) ссылка на агрегат участвует в идентификации компонентов;
2) эти компоненты не могут существовать вне агрегата.
Агрегация (связь, которую мы будем рассматривать дальше) с обязательно не идентифицирующими связями также не позволяет компонентам существовать вне агрегата и поэтому близка по смыслу к описанной выше реализации композитной агрегации.
Построим ключевую диаграмму, описывающую взаимосвязь между одним родительским классом сущностей и несколькими дочерними классами сущностей, т. е. описывающую связь классов сущностей типа композитной агрегации.
Пусть это будет ключевая диаграмма, изображающая состав корпусов некого учебного городка, включающего в себя корпуса, их аудитории и лифты. Итак, эта диаграмма будет иметь следующий вид:
Итак, рассмотрим только что построенную диаграмму.
Что мы в ней видим?
Во-первых, мы видим, что связь, использованная в этой композитной агрегации, действительно идентифицирующая и действительно не полностью идентифицирующая. Ведь первичный ключ родительского класса сущностей «Корпуса» участвует в формировании первичного ключа дочерних классов сущностей «Аудитории» и «Лифты», но не определяет его полностью. Первичный ключ «№ корпуса» родительского класса сущностей мигрирует во внешние первичные ключи «№ корпуса» обоих дочерних классов, но, кроме этого мигрировавшего, ключа у обоих дочерних классов сущностей существует и свой собственный первичный ключ, соответственно «№ аудитории» и «№ лифта», т. е. составные первичные ключи дочерних классов сущностей лишь частично оказываются сформированными атрибутами первичного ключа родительского класса сущностей.
Теперь разберемся с кратностями связей, соединяющих родительский и оба дочерних класса. Так как мы имеем дело с не полностью идентифицирующими связями, то кратности присутствуют такие: «один» и «много». Кратность «один» присутствует на родительском конце обеих связей и символизирует то, что в списке всех имеющихся корпусов (а класс сущностей «Корпуса» является именно таким списком) каждый номер может встретиться только один, (и не более того) раз. А, в свою очередь, среди атрибутов классов «Аудитории» и «Лифты» каждый номер корпуса может встретиться много раз, так как аудиторий (или лифтов) больше, чем корпусов, и в каждом корпусе – несколько и аудиторий, и лифтов. Таким образом, при перечислении всех аудиторий и лифтов мы неминуемо будем повторять номера корпусов.
И, наконец, как и при рассмотрении предыдущего вида связи, запишем фрагменты операторов создания базовых отношений (или, что одно и то же, классов сущностей) «Аудитории» и «Лифты», причем сделаем это с определением правил поддержания ссылочной целостности типа 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, так как уже описали его как наиболее рациональный.
Теперь приведем пример в табличной форме всех только что рассмотренных нами классов сущностей. Опишем те базовые отношения, которые отразили при помощи диаграммы, в виде таблиц, и для наглядности введем туда некоторое количество показательных данных.
Корпуса – родительское отношение имеет следующий вид:
Аудитории – дочерний класс сущностей:
Лифты – второй дочерний класс сущностей родительского класса «Корпуса»:
Итак, мы можем видеть, каким образом организована информация по всем корпусам, их аудиториям и лифтам в этой базе данных, которую вполне может использовать любое реально существующее учебное заведение.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Моникеры и композиция
Моникеры и композиция Моникеры часто составляются из других моникеров, чтобы с помощью текстового описания пути можно было осуществлять навигацию по иерархиям объектов. Чтобы обеспечить простую поддержку этого типа управления, в СОМ предусмотрена стандартная
Композиция и стили в дизайне интерьеров
Композиция и стили в дизайне интерьеров Создание дизайна – непростое занятие. От идеи до готового интерьера – длинный и нелегкий путь. Главная задача, которую выполняет дизайнер, – разработка интерьера помещения, соответствующего индивидуальности хозяина, его
5. Композиция
5. Композиция Связь классов сущностей типа композиция, так же как и две предыдущие, не принадлежит к виду рекурсивной связи.Композиция (или, как ее еще иногда называют, композитная агрегация) – это взаимосвязь одного родительского класса сущностей с несколькими дочерними
18.3.1. Наследование и композиция
18.3.1. Наследование и композиция Реализация класса PeekbackStack с помощью закрытого наследования от IntArray работает, но необходимо ли это? Помогло ли нам наследование в данном случае? Нет.Открытое наследование – это мощный механизм для поддержки отношения "ЯВЛЯЕТСЯ". Однако
18.3.4. Композиция объектов
18.3.4. Композиция объектов * Есть две формы композиции объектов: композиция по значению, когда членом одного класса объявляется сам объект другого класса. Мы показывали это в исправленной реализации PeekbackStack;* композиция по ссылке, когда членом одного класса является
Композиция
Композиция По статистике, самый ненавистный предмет у учеников и студентов музыкальных учебных заведений – сольфеджио. Самый ненавистный комплекс упражнений в школе танца – у станка. А в рисунке, фотографии и прочих «изобразительных» предметах самым сложным моментом
5.3. Композиция кадра
5.3. Композиция кадра Громадная щука, сфотографированная рыболовом, может выглядеть грозным чудовищем, если заснять ее, бьющуюся в сетях, или безобидным полуфабрикатом для ухи, брошенным в корзину или ведро. Попробуйте сфотографировать человека в свете, льющемся из
Композиция
Композиция В большинстве случаев пейзажу традиционно свойственна горизонтальная компоновка кадра, но это вовсе не обязательно. Все зависит от выбранного вами сюжета: если главный элемент расположен вертикально, стоит, конечно, развернуть камеру.Первое правило —
Композиция
Композиция Необходимо определить, что именно вы хотите подчеркнуть, выделить в фотографии. Подумайте, нужно ли усилить резкость, контраст, чтобы показать на фото мужественное лицо, изношенное временем, дождем и жарой старое заброшенное судно, или, наоборот, смягчить