Я хочу сделать список друзей в своей онлайн-игре. Я не уверен, как его настроить или с чего начать. Добавлять друзей и принимать часть друзей, которую я могу обработать, но я не знаю, как настроить ее в mysql и php. Список пользователей (друзей), подключенных к каждому пользователю или что-то еще?
Если ваши отношения дружбы симметричны, вы можете либо сохранить каждую пару в отдельной записи:
friend1 friend2 AB BA AC BD CB DB
и спросите всех друзей B
так:
SELECT friend2 FROM friends WHERE friend1 = 'B'
или сохранить пользователя с наименьшим id
в первом поле и с наибольшим id
во втором:
friend1 friend2 AB AC BD
и запросите друзей B
так:
SELECT friend1 FROM friends WHERE friend2 = 'B' UNION ALL SELECT friend2 FROM friends WHERE friend1 = 'B'
Первый вариант немного более эффективен в MySQL
, и это единственный вариант, если ваши отношения дружбы не симметричны (например, в LiveJournal
)
См. Эту статью:
Дружба – это, по сути, взаимные отношения между двумя людьми. В терминах базы данных это отношения «многие ко многим» между двумя пользователями.
Так что вам нужна таблица ссылок, в которой содержатся ссылки на двух пользователей по ID.
Таблица пользователей
ID Username 1 Bob 2 Jim 3 Alice
Таблица друзей
user1 user2 1 2 2 3
Это сделало бы друзей Боба Джим и Джим друзьями с Алисой.
Ознакомьтесь с ответами в этом другом сообщении здесь, в stackoverflow … несколько простых, но полезных объяснений для достижения того, что вам нужно.
Дизайн базы данных Facebook?
Альтернативой было бы установить столбец А следующим образом: $ checkfriend = (($ friend1 $ friend2) || ($ friend2 $ friend1))
Столбец B следующим образом: (принята дружба или дружба отвергнута) по выбору пользователя
В основном есть как user1, так и user2 в одном столбце.