Извините, если это немного долго ...
Если вы пытаетесь смоделировать концепцию предметной области, я бы посоветовал вам забыть о композиции / агрегации и придерживаться простых ассоциаций.Зачем?Потому что решение о композиции / агрегации мешает важным вопросам.Это:
- Почему существует связь?В частности, какие правила / ограничения домена он фиксирует?
- Каково количество элементов на обоих концах?
- Что такое поведение создания и удаления?то есть кто создает / удаляет экземпляры ассоциации?
Имена отношений Вы достигнете (1), присвоив имена окончанию.Не с именами ролей (например, «Полеты» в вашем первом примере), потому что это ничего не говорит о , почему связь существует.Итак, в вашем примере 1: что представляют собой отношения?Это зарезервированное место на рейсе?Подтвержденный?Заплачено за?Невозможно сказать из диаграммы, как она есть.Существуют различные подходы к именованию на основе глаголов, см., Например, этот пост .Зачем это делать?Потому что он предлагает вам убедиться, что вы понимаете домен.Большой процент (вероятно, большинство, хотя я никогда не доказывал это) правил домена существует в отношениях.Поэтому понимание того, почему существуют отношения, является фундаментальным для понимания предметной области.
Количество элементов Вероятно, более очевидно, чем наименование.Вы должны определить на обоих концах - и верхний и нижний.На нижнем конце важно, является ли это необязательным (то есть 0 или 1).На верхнем торце 1 или много.Опять же, это выявляет важные правила из области.Возвращаясь к вашему примеру снова: сколько рейсов в бронировании авиабилетов?Может ли один рейс быть в нескольких заказах?(что бы ни означало «в» ...).
Создание / удаление поведения Кто создает экземпляры отношений?Кто удаляет?Если один конец удаляется, что происходит с другим концом?Опять же, все важные правила из проблемной области.
Они, надеюсь, ответят и на ваш второй вопрос.Не экономьте на отношениях.Потратьте время, чтобы понять их.Это секретный соус для понимания предметной области.Ответы на все вопросы, приведенные выше, дадут вам гораздо больше понимания, чем попытка выбора между композицией / агрегацией / ассоциацией.
Если вы действительно хотите показать композицию по сравнению с ассоциацией, однако это механично, если вы отвечаетевопросы выше:
- ЕСЛИ количество элементов на одном конце отношения равно 1: 1 (т. е. может быть только один), И
- этот же конец отвечает за создание иудаляя экземпляры другого конца, THEN
- Может отображаться как композиция.
В противном случае используйте простую связь.Что касается агрегации: игнорируйте это.Удалите это из своего словаря.Вызывает больше путаницы, чем оно того стоит.Все, что вы можете сказать с помощью агрегации, вы можете сказать гораздо яснее и точнее с помощью правильно определенной простой ассоциации.
hth.
PS: точка синтаксиса: в композиции используется заполненный ромб.То, что вы показали, это Агрегация.