Лучший способ обработать отношения «многие ко многим» в PHP MySQL - PullRequest
1 голос
/ 27 апреля 2010

Я ищу лучший способ обработки базы данных отношений многие ко многим в 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

1 Ответ

4 голосов
/ 27 апреля 2010

Вы можете использовать составной первичный ключ в Connections, используя оба столбца (id_1, id_2), если у вас есть проблемы с уникальностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...