帖子的喜欢和不喜欢系统

时间:2011-08-24 01:25:21

标签: mysql database database-design

我想要包含类似于Facebook的喜欢/不喜欢系统,到目前为止,我已将喜欢/不喜欢的列设置为“文本”类型。这样我就可以为喜欢/不喜欢帖子的用户添加id。这是最好的方式吗?另外,除了上面的问题,我如何阻止用户再次按下喜欢和不喜欢的按钮?因为,一旦用户喜欢帖子,它应该显示一个不同/不相似的选项?一个概念/想法将是如何做到这一点的伟大。

2 个答案:

答案 0 :(得分:3)

虽然很难做出扶手椅决定,但这是我的想法:

首先,每个帖子都可以有一个'赞'整数列。当用户向上和向下单击时,请将该数字增加或减少。这样可以防止用户多次点击,但这很容易,也很快。

另一种方法是拥有一个'Like'表,其中包含post_id,user_id和score列。得分可以有两个值:'1'或'-1'。所有3列都是整数。当用户单击“喜欢”时,您可以使用user_id&amp ;;在行上执行INSERT / UPDATE命令。 post_id匹配。

然后,要查看帖子的最终得分,请执行SELECT SUM(得分)FROM that_table WHERE post_id = ?.

使用第二种方法,如果您想查看最新点击者的名称,可以添加时间戳列并搜索最近的条目。

答案 1 :(得分:0)

我会创建一个具有以下结构的表:

表:喜欢

  • PostId bigint
  • UserId bigint
  • 喜欢bit(true,false)

然后将PostId和UserId一起设置为主键。这将阻止数据库为同一帖子插入多个喜欢/不喜欢。

在您的代码中,检查是否存在用户/帖子组合,然后切换位值(如果存在)或将位值设置为true(如果不存在)。