Я ищу лучший способ обработки базы данных отношений многие ко многим в PHP и MySQL.
Сейчас у меня есть 2 таблицы:
Пользователи (идентификатор, имя пользователя, имя, фамилия)
Соединения (id_1, id_2)
В таблице User
id
автоматически увеличивается при добавлении, а user_name
уникально, но может быть изменено. К сожалению, у меня нет контроля над user_name
и возможностью его изменения, но я должен объяснить это.
Таблица Connections
, очевидно, является идентификатором user1 и user2.
Таблица соединений должна учитывать следующие возможные отношения:
user1 --> user2 (user 1 friends with user 2 but not user2 friends with user1)
user2 --> user1 (user 2 friends with user 1 but not user1 friends with user2)
user1 <--> user2 (user 1 and user 2 mutually friends)
user1 <-!-> user2 (user 1 and user 2 not friends)
Эта часть не является проблемой. Проблема, с которой я сталкиваюсь, заключается в том, чтобы сохранить эти отношения уникальными, когда и если они изменяются в пакетах.
Возможное решение 1: удалить все отношения пользователя 1 и прочитать их с обновленным списком. Я думаю, что это может быть слишком медленно для моих нужд.
Решение 2? Кто-нибудь еще сталкивался с этой проблемой? Как мне лучше всего справиться с этим?
обновление: отличительные отношения:
Я отношусь к таким отношениям:
user1, user2
user1, user3
user2, user1
в этом примере верно следующее:
пользователь1 следует за пользователем2 и пользователем3
user2 только следует за user1, но не следует за user3
user3 не следует ни user1, ни user2