Как отношение «многие ко многим» в одной таблице выглядит в UML

#database #database-design #many-to-many #uml

#База данных #база данных-дизайн #многие ко многим #uml

Вопрос:

У меня проблема с пониманием отношений «многие ко многим» в одной таблице в UML.

Пользователь в моей базе данных имеет разрешение, в котором указано, кто он (преподаватель или студент).

Моя проблема в том, что у меня есть преподаватель, у которого может быть 0 или более учеников, и студент, у которого может быть 0 или более преподавателей.

Моя идея заключается в следующем:

Моя диаграмма UML

Я не уверен, правильно ли это. Есть ли лучшее решение?

Спасибо всем за вашу помощь 🙂

Комментарии:

1. Вероятно, вам просто нужно добавить ограничения для этой цели.

Ответ №1:

Это зависит от того, чего вы хотите достичь.

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

Чтобы подчеркнуть взаимосвязь, вы можете использовать класс ассоциации, связывающий User с User. Это приносит ценность, только если ваш класс ассоциации приносит какое-либо дополнительное значение (атрибуты), в противном случае вы можете использовать простую ассоциацию.

Если вы фокусируетесь на отображении фактических зависимостей, а не того, что у вас есть в базе данных, вы можете рассмотреть возможность использования пользователя в качестве родителя для двух классов «Учитель» и «Ученик», а затем изобразить вашу связь как «вкл» между учителем и учеником, а не между пользователями.

Ответ №2:

вам действительно нужны 2 отношения / многие ко многим?

для меня существует только одно отношение к себе / один ко многим

 User --
  ^   |
 *|   |
  ----/
  
  • если пользователь является преподавателем, отношение обозначает студентов
  • если пользователь является студентом, отношение обозначает преподавателей