Модель класса UML, как моделировать отношение многих к многим

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

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

Я смущен, что это теперь?!

Ответ 1

Моделируйте это как отношение M: N. То же, что и в модели отношений, в коде будет ассоциированный класс (или класс ссылок). Не нужно размещать это на диаграмме, если у нее нет атрибутов поверх атрибутов соединения (так же, как вы, как правило, опускаете объект объединения из ERD, если только у него не были атрибуты, которые не были внешними ключами в связанных объектах). Класс link обычно рисуется как класс, связанный с отношением пунктирной линией.

Сущность присоединения регистрации является хорошим примером этого в диаграммах классов UML 2.

Ответ 2

"Таблица реляционных ссылок" - это метод реализации отношения "многие ко многим".

Отношения существуют независимо от того, как они реализованы.

В объектной модели у вас есть много вариантов реализации "многие ко многим", что может включать (или не включать) дополнительную постоянную таблицу. Это можно сделать множеством разных способов.

Смысл UML в том, чтобы уметь описывать основные черты модели.

Вы также можете описать реализацию. Это отдельные диаграммы с разными целями. Вы можете легко показать реляционную реализацию с помощью таблицы ссылок. Вы также можете показать основные модели без таблицы ссылок.

Здесь существенные отношения

Essential

Здесь реализация отношений

Implemntation

Оба действительны UML. На самом деле вопрос в том, что нужно показать другим людям? Основная правда или одна конкретная реализация?