我正在尝试确定“跟随/取消关注用户”功能的最佳表格设计,类似于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
字段中的其他用户。订阅日期可能用于排序。
当用户取消关注时,我只删除相应的行。
为了防止重复的行,我将列follower
和following
设为唯一。如果用户已经关注了id并点击再次关注,则会收到数据库错误1062.例如
为'follow_unique'键重复输入'62 -88'
显然,当已经关注用户时,关注者会看到unfollow
按钮。这是通过检查2个用户之间是否存在跟随者跟随表行来实现的。如果rows > 0
我显示unfollow
,则follow
。
嗯,你觉得怎么样?
答案 0 :(得分:7)
我认为这是一个非常好的设计,应该很好地满足您的需求。一件事;你应该制作follower
和following
外键。哦,为了简单起见,我将subscribed
列TIMESTAMP DEFAULT CURRENT_TIMESTAMP
只是为了捕获用户订阅的日期时间。
答案 1 :(得分:3)
我建议你跟随并跟随主键。不需要单独的id
字段。