Дизайн таблицы базы данных «Подписка на пользователя»

Я пытаюсь определить лучший дизайн таблицы для функции «подписаться / отменить подписку», как в Twitter (редактировать: Я не сделать Twitter-подобный application.) Ниже представлен мой текущий дизайн таблицы и обработка 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 и , следующие за , уникальными. Если пользователь уже подписан на идентификатор и снова щелкает, чтобы подписаться, я получаю ошибку базы данных 1062. Например,

Повторяющаяся запись '62 -88 'для ключа' follow_unique '

Очевидно, когда уже подписан на пользователя, подписчик видит a кнопка отмены подписки . Это достигается путем проверки, существует ли строка таблицы с отслеживанием последователей между двумя пользователями. Если строк> 0 , я показываю отменить подписку , иначе следуют за .

Что вы думаете?

13
задан CyberJunkie 11 July 2011 в 17:06
поделиться