Я пытаюсь определить лучший дизайн таблицы для функции "follow/unfollow user", аналогичной Twitter (изменить: Я не делаю Twitter-подобного приложения.) Ниже мой текущий дизайн таблицы и обработка php. Я не уверен, что это лучший подход и будет очень признателен за ваши отзывы.
CREATE TABLE IF NOT EXISTS `user_follow` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`follower` int(11) NOT NULL,
`following` int(11) NOT NULL,
`subscribed` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `follow_unique` (`follower`,`following`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=76 ;
Далее, идентификатор последователей добавляется в поле follower
, а идентификатор пользователя, который будет следовать, добавляется к following
. Я также записываю дату, на которую пользователь подписался, чтобы следовать за другим пользователем в поле subscribed
. Дата сортировки может использоваться для сортировки.
Когда пользователь отказывается от подписки, я просто удаляю соответствующую строку.
Чтобы предотвратить дублирование строк, я сделал столбцы follower
и following
уникальными. Если пользователь уже выполнил идентификатор и снова щелкнул, чтобы получить следующий результат, я получаю ошибку базы данных 1062. Например
Повторяющаяся запись '62 -88 'для ключевого слова' follow_unique '
Очевидно, что, когда пользователь уже следит за пользователем, он видит кнопку unfollow
. Это достигается путем проверки наличия следующей строки таблицы между двумя пользователями. Если rows > 0
отображается unfollow
иначе follow
.
Ну, что вы думаете?