Как создать Facebook как систему друзей в php с помощью mysql - PullRequest
0 голосов
/ 02 августа 2010

Я хочу создать систему друзей, такую ​​как Facebook, что довольно странно.Когда пользователь добавляет кого-то, кто-то будет уведомлен, если он согласится, тогда они будут общими друзьями (в данном случае это означает, что обе стороны являются друзьями в буквальном смысле) или, если кто-то оставит запрос без ответа, он станет поклонникомкто то.Кто-то отклонит запрос, он больше не будет ни поклонником, ни другом.

Как это можно сделать в PHP с MYSQL.Вот мое первоначальное планирование, почему-то я не уверен, что это будет лучший способ сделать это.

MYSQL TABLE

user_id (request made by) | friend_id (request point towards) | status
--------------------------------
123     | 452       | 'waiting'
525     | 123       | 'waiting'

То есть у пользователя 123 есть 1 запрос на дружбу из 525, и1 запрос в друзья на 452. Проблема в том, как я собираюсь получить список друзей пользователя 123?если пользователь 123 принимает запрос 525, а пользователь 452 принимает запрос 123.А также, как получить список поклонников по MYSQL QUERY..и как найти друзей друга?

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Список друзей пользователя 123:

SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.user_id = 123 AND status = 'accepted';

Пользователь 123 является поклонником этих пользователей:

SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.friend_id = 123 AND status = 'waiting';

Не забудьте добавить индекс в столбце состояния.

Кроме того, я не уверен, что подобная таблица идеально подходит для этого.

РЕДАКТИРОВАТЬ:

Я бы, вероятно, выбрал схему, подобную этой:

friend_request
    request_from (foreign key to users.user_id)
    request_to (foreign key to users.user_id)
    resolved (boolean 1 or 0, default is 0)

friend_xref
    friend (foreign key to users.user_id)
    is_friend_with (foreign key to users_user_id)

fan_xref
    user (foreign key to users.user_id)
    is_fan_of (foreign key to users.user_id)

Когда кто-то делает запрос на добавление в друзья, добавьте новую строку в таблицу friend_request.Когда получатель запроса выбирает:

  • , чтобы принять запрос: добавьте новую строку в friend_xref и установите для него значение равным 1 в таблице friend_request
  • , чтобы отклонить запрос: добавьте новую строку вfan_xref и set resolved to 1 в таблице friend_request

Но было бы лучше задать этот вопрос в mysql, database-design или другом подобном теге, чтобы получить лучшие ответы.

1 голос
/ 02 августа 2010

Вероятно, лучше всего создать таблицу «status», а затем использовать внешний ключ в столбце состояния:)

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