Cyb*_*kie 13 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 ;
Run Code Online (Sandbox Code Playgroud)
在跟随时,将追随者ID添加到该follower
字段中,并添加将要遵循的用户的ID following
.我还记录用户订阅的日期跟随该subscribed
字段中的另一个用户.订阅日期可能用于排序.
当用户取消关注时,我只删除相应的行.
为了防止重复的行,我创建了列follower
并且是following
唯一的.如果用户已经关注了id并点击再次关注,则会收到数据库错误1062.例如
密钥'follow_unique'重复输入'62 -88'
显然,当已经跟随用户时,跟随者会看到一个unfollow
按钮.这是通过检查2个用户之间是否存在跟随者跟随表行来实现的.如果rows > 0
我显示unfollow
否则follow
.
那么你觉得呢?
我认为这是一个非常好的设计,应该很好地满足您的需求.一件事; 你应该做follower
和following
外键.哦,为了简单起见,我将subscribed
列TIMESTAMP DEFAULT CURRENT_TIMESTAMP
专门用于捕获用户订阅的日期时间.