Как реализовать подписчиков для пользователей, как в твиттере - PullRequest
3 голосов
/ 28 августа 2011

У меня есть социальная сеть, которую я создаю, используя php и mysql.Я пытаюсь выяснить, как сделать подписчиков для каждого пользователя.Должен ли я создать таблицу в MySQL со списком подписчиков для каждого человека и создать таблицу для всех, за кем они следуют?Как это должно работать?Как мне настроить мои структуры данных?Пожалуйста, помогите.

Ответы [ 3 ]

4 голосов
/ 28 августа 2011
Table `followers`

id
user_id
follows_id

Если пользователь следует за другим, добавьте свои идентификаторы в эту таблицу, где user_id - это пользователь, который следует, а follows_id - это пользователь, за которым он следует.

2 голосов
/ 28 августа 2011

Вы должны посмотреть на ERD .Вы правы, хотя.У вас есть таблица с пользователями.Пользователи имеют отношение «многие ко многим» с пользователями, поэтому создайте таблицу, содержащую это отношение.У него должно быть как минимум два поля;«user» и «follower», и вы сохраняете идентификаторы соответствующих сущностей.

0 голосов
/ 02 января 2014

Это, безусловно, отношение многих ко многим, и я бы использовал составной первичный ключ.

Вместо использования явного столбца идентификатора я бы сделал объединенные столбцы user_id и follower_id первичным ключом для таблицы последователей. Это позволит избежать дублирования записей.

Также я добавил ограничение внешнего ключа, чтобы в случае удаления пользователя из таблицы пользователей все записи пользователей были удалены из таблицы последователей;

create table followers
(
     user_id int unsigned not null, 
     follower_id int unsigned not null, 
     primary key(user_id,follower_id), 
     foreign key(user_id) references users(id) on delete cascade on update cascade
);
...