Настройка списка друзей в 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... некоторые простые, но отличные объяснения для достижения того, что вам нужно.
Альтернативой может быть установка столбца A следующим образом: $checkfriend = (($friend1 $friend2) || ($friend2 $friend1))
Столбец B следующим образом: (дружба принята или дружба отклонена) в зависимости от выбора пользователя
Как правило, пользователь и пользователь1 находятся в одном столбце.