Круговые отношения на диаграмме классов UML

Круговые отношения на диаграмме классов UML

Я хочу знать, смогу ли я избежать круговых отношений в этом случае.

Объяснение : таблица сообщений имеет внешний ключ city_id для указания местоположения сообщения (продукта), а у пользователя также есть city_id для указания места его проживания. Теперь пользователь может указать город «А» и создать сообщение с городом «Б», и для меня это логично, потому что пользователи могут находиться в отпуске или находиться где-то далеко от его/ее собственного города. Для пользователя по умолчанию, когда он/она входит в систему в первый раз, для города установлено значение null, но он/она может назначить его своему профилю. Пост обязан иметь городское расположение.

Как вы думаете, есть ли способ избежать циклических отношений в этом случае?

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

  • Сообщение связано с городом
  • Пользователь может быть связан с городом
  • Сообщение также связано с пользователем
  • Ограничений нет, поэтому Post.User.City и Post.City могут отличаться в любой момент времени.

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

Проблема скорее поведенческая: как инициализировать город пользователя (множественность говорит нам, что это необязательно) и как определить город сообщения, если у пользователя нет города. Геолокализация может быть ответом. Другое ограничение, требующее, чтобы пользователь, связанный с публикацией, имел город при создании публикации. Так что речь больше идет об уточнении требований.

Спасибо за ваш ответ, да, вы правы. Сообщение и пользователь могут иметь разные города. и то же самое иногда. Итак, для более подробного объяснения, вот как мой веб-сайт работает в этом разделе: поэтому, когда пользователь регистрируется в первый раз, для города (столбец city_id) устанавливается значение null, как вы говорите, это необязательно, его можно установить или нет. город пользователя больше похож на профиль, а не на публикацию, с другой стороны, пользователь, когда он создает сообщение, он должен выбрать город, не имеет значения, установил ли он город в своем профиле или нет. Итак, идея в том, чтобы дать пользователям свободу выбирать разные города для своих постов. спасибо

YAS -SER 26.04.2024 22:05

@YAS-SER действительно, это то, что предполагает ваша модель. Эти два города не связаны, если вы не добавите некоторые ограничения. Поскольку это, по-видимому, важная функция, и если вы боитесь, что читатели могут запутаться, вы можете добавить комментарий, прикрепленный к ассоциации почтового города, в котором открытым текстом говорится: «Город сообщения не зависит от города пользователя».

Christophe 27.04.2024 08:37

Большое спасибо, сэр, я ценю ваш ответ

YAS -SER 27.04.2024 12:11

Другие вопросы по теме