“关注用户”数据库表设计

时间:2011-07-11 16:59:57

标签: php mysql database database-design

我正在尝试确定“跟随/取消关注用户”功能的最佳表格设计,类似于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 ;

在关注后,关注者ID会添加到follower字段,并且将跟随的用户ID会添加到following。我还记录用户订阅的日期跟随subscribed字段中的其他用户。订阅日期可能用于排序。

当用户取消关注时,我只删除相应的行。

为了防止重复的行,我将列followerfollowing设为唯一。如果用户已经关注了id并点击再次关注,则会收到数据库错误1062.例如

  

为'follow_unique'键重复输入'62 -88'

显然,当已经关注用户时,关注者会看到unfollow按钮。这是通过检查2个用户之间是否存在跟随者跟随表行来实现的。如果rows > 0我显示unfollow,则follow

嗯,你觉得怎么样?

2 个答案:

答案 0 :(得分:7)

我认为这是一个非常好的设计,应该很好地满足您的需求。一件事;你应该制作followerfollowing外键。哦,为了简单起见,我将subscribedTIMESTAMP DEFAULT CURRENT_TIMESTAMP只是为了捕获用户订阅的日期时间。

答案 1 :(得分:3)

我建议你跟随并跟随主键。不需要单独的id字段。