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

3
user891123 28 Авг 2011 в 07:59

3 ответа

Лучший ответ
Table `followers`

id
user_id
follows_id

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

4
deceze 28 Авг 2011 в 04:03

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

2
Jasper Kennis 28 Авг 2011 в 04:02

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

Вместо использования явного столбца идентификатора я бы сделал объединенные столбцы 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
);
0
Varun Nath 2 Янв 2014 в 18:12