У меня есть социальная сеть, которую я создаю с помощью php и mysql. Я пытаюсь понять, как привлечь подписчиков для каждого пользователя. Должен ли я создать таблицу в mysql со списком последователей для каждого человека и создать таблицу для всех, на кого они подписаны? Как это должно работать? Как мне настроить свои структуры данных? Пожалуйста помоги.
3 ответа
Table `followers`
id
user_id
follows_id
Если пользователь следует за другим, добавьте их идентификаторы в эту таблицу, где user_id
- это пользователь, который подписан, а follows_id
- пользователь, на которого он подписан.
Вам следует изучить ERD. Но ты прав. У вас есть таблица с пользователями. Пользователи имеют отношение "многие ко многим" с пользователями, поэтому создайте таблицу, содержащую это отношение. В нем должно быть как минимум два поля; «пользователь» и «последователь», и вы сохраняете идентификаторы соответствующих объектов.
Это определенно отношение «многие ко многим», и я бы использовал составной первичный ключ.
Вместо использования явного столбца идентификатора я бы сделал объединенные столбцы 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
);
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.