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