Настройка списка друзей в mysql

Я хочу сделать список друзей в моей онлайн-игре. Я не уверен, как его настроить или с чего начать. Часть "Добавить друзей и принять друзей", с которой я могу справиться, но я не знаю, как настроить ее в mysql и php. Список пользователей (друзей), подключенных к каждому пользователю или что-то?

4 ответа

Решение

Если ваши дружеские отношения симметричны, вы можете сохранить каждую пару в отдельной записи:

friend1 friend2
A       B
B       A
A       C
B       D
C       B
D       B

и запросить все Bвот такие друзья:

SELECT  friend2
FROM    friends
WHERE   friend1 = 'B'

или сохранить пользователя с наименьшим id в первом поле и что с наибольшим id во втором:

friend1  friend2
A        B
A        C
B        D

и запрос Bвот такие друзья:

SELECT  friend1
FROM    friends
WHERE   friend2 = 'B'
UNION ALL
SELECT  friend2
FROM    friends
WHERE   friend1 = 'B'

Первый вариант немного более эффективен в MySQL, и это единственный вариант, если ваши отношения дружбы не симметричны (как на LiveJournal)

Смотрите эту статью:

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

Так что вам нужна таблица ссылок, которая содержит ссылки на двух пользователей по идентификатору.

пример

Таблица пользователей

ID    Username
1     Bob
2     Jim
3     Alice

Стол друзей

user1    user2
1        2
2        3

Это сделало бы Боба друзьями Джима и Джима друзьями Алисы.

Проверьте ответы в этом другом посте здесь на stackru... некоторые простые, но отличные объяснения для достижения того, что вам нужно.

Дизайн базы данных Facebook?

Альтернативой может быть установка столбца A следующим образом: $checkfriend = (($friend1 $friend2) || ($friend2 $friend1))

Столбец B следующим образом: (дружба принята или дружба отклонена) в зависимости от выбора пользователя

Как правило, пользователь и пользователь1 находятся в одном столбце.

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