使用MySQL实现投票或“喜欢”

时间:2016-09-19 20:42:34

标签: php android mysql sql database

我正在创建一个系统,允许用户(由用户ID号识别)对帖子进行投票(想想Reddit,StackOverflow等)。

用户可以投票或不投票。

给定帖子的投票数可以轻松存储在包含帖子的表格中。

然而,跟踪谁投票是完全不同的任务,我不知道如何处理。

我在想我可以拥有一个包含两列的表:用户ID和帖子ID。

当他们对帖子投票时,我会将他们的用户ID和帖子ID添加到该表中。如果他们不投票,我会从表格中删除该条目。

EG:

User ID | Post ID
1       | 3949
1       | 4093 
2       | 3949
etc...

这是一个合理的解决方案吗?

3 个答案:

答案 0 :(得分:0)

在'之间使用'或者'加入'在这种情况下,table是完全可以接受的解决方案如果相关,您甚至可以为关系添加时间戳,并在用户对某些内容进行投票时向用户显示

同样重要的是要注意正确的索引和键,以便在数据集增长后使表结构也能正常运行。

答案 1 :(得分:0)

我不会从表中删除行。我理解你为什么要这样做,但为什么要丢失这些信息呢?相反,为每个条目保留一个+ 1 / -1值,然后总结一个帖子的值:

select sum(vote)
from uservotes
where postid = 1234;

而且,我同意Rick你还应该包括创建日期/时间。

答案 2 :(得分:0)

是的,这是一个相当简单且容易解决问题的方法。你可以对你的评论做同样的事情(如果你愿意)。在你的MAIN_POST表中分配一个post_id并在其他表中使用相同的post_id(评论(post_id,user_id,post_comment,comment_time)和投票(post_id,user_id,vote_status(你可以使用1表示投票,0表示投票))) 。它会使你的sql查询复杂化,检索数据,但你可以做到这一点。在android方面,有许多技巧可以处理并在应用程序中提供这些数据,你可以像facebook一样进行投票(如)和评论想法(你的评论和喜欢,以及其他人的NAMES)。