2016-09-19 105 views
-2

我正在创建一个系统,允许用户(通过用户标识号进行标识)对帖子投票(认为是Reddit,StackOverflow等)。使用MySQL实现投票或“喜欢”

用户可以投票或不投票。

给定帖子上的投票数很容易存储在包含帖子的表格中。

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

我想我可以有一个表,将有两列:用户ID和帖子ID。

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

EG:

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

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

+2

“这是一个合理的解决方案吗?”是。 – nogad

回答

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一样进行此类投票(如)和评论意见(您的意见和喜欢,以及其他人的姓名)。

0

在这种情况下,使用'in between'或'joining'表格是完全可以接受的解决方案。如果相关,您甚至可以向关系添加时间戳,并在用户向上投票时向用户显示

此外,重要的是要妥善处理索引和关键字,以便在数据集增长后也可以正确执行表结构。

0

我不会删除表中的行。我明白你为什么想这样做,但为什么会丢失信息?相反,保持+ 1/-1值的每个条目,然后总结值后:

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

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