Модель класса UML, как моделировать отношение многих к многим
Я прочитал несколько руководств о том, что должна содержать модель UML, а что нет. Как разработчик, я всегда думаю о реляционной модели данных, где у вас никогда не было бы много-много отношений между таблицами. Теперь с моделью класса UML я прочитал, что если они не предоставляют добавленную стоимость, вы можете просто пропустить ссылки.
Однако я также прочитал учебник, в котором приведены примеры, в которых данные используются внутри таблиц, и настоятельно предлагал отображать каждый класс в виде простой таблицы при моделировании модели класса.
Я смущен, что это теперь?!
Ответы
Ответ 1
Моделируйте это как отношение M: N. То же, что и в модели отношений, в коде будет ассоциированный класс (или класс ссылок). Не нужно размещать это на диаграмме, если у нее нет атрибутов поверх атрибутов соединения (так же, как вы, как правило, опускаете объект объединения из ERD, если только у него не были атрибуты, которые не были внешними ключами в связанных объектах). Класс link обычно рисуется как класс, связанный с отношением пунктирной линией.
Сущность присоединения регистрации является хорошим примером этого в диаграммах классов UML 2.
Ответ 2
"Таблица реляционных ссылок" - это метод реализации отношения "многие ко многим".
Отношения существуют независимо от того, как они реализованы.
В объектной модели у вас есть много вариантов реализации "многие ко многим", что может включать (или не включать) дополнительную постоянную таблицу. Это можно сделать множеством разных способов.
Смысл UML в том, чтобы уметь описывать основные черты модели.
Вы также можете описать реализацию. Это отдельные диаграммы с разными целями. Вы можете легко показать реляционную реализацию с помощью таблицы ссылок. Вы также можете показать основные модели без таблицы ссылок.
Здесь существенные отношения
![Essential]()
Здесь реализация отношений
![Implemntation]()
Оба действительны UML. На самом деле вопрос в том, что нужно показать другим людям? Основная правда или одна конкретная реализация?