Модель класса UML, как моделировать отношения многих ко многим - PullRequest
11 голосов
/ 20 августа 2009

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

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

Я запутался, что сейчас?!

Ответы [ 2 ]

30 голосов
/ 20 августа 2009

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

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

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

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

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

Вот основные отношения

Essential

Вот реализация отношения

Implemntation

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

12 голосов
/ 20 августа 2009

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

Сущность Enrollment join является хорошим примером этого в UML 2 Class Diagrams .

...