Buzzfeed启发了投票系统

时间:2011-04-01 23:25:53

标签: sql database-design language-agnostic

Buzzfeed允许您对某些内容进行评分:

* LOL 
* Win 
* OMG 
* WTF 
* Cute 
* Fail
* Geeky 
* Trashy
* Old
* Ew 

假设您有一个名为Post的表,并且您创建了一个名为Post_Ratings(post_id,rate_id)的表和一个名为Rating for this的表。

实施此表的最佳方法是什么?每个评级的枚举或列?

还要记录用户已经在一个名为user_rating的表上投票的帖子,其中包含user_id,post_id,对吗?

1 个答案:

答案 0 :(得分:0)

如果你有一个评级表,那就是rating_id(int)和rating_text(string)。您的Post_Ratings表需要另一列。至少有三个关键列(除非您使用代理键)。这些将是post_id,rating_id,以及区分不同用户的多个评级的东西。如果您有用户表,则可以使用user_id。这样,如果用户想要更改他们的投票,他们可以,但您不会让用户在不同类别中多次投票。每个用户获胜的最后一个。

另外,我不会使用枚举或列,两者都可能在某些时候让你遇到麻烦。最好的设计是让一票占据一行(显示三列)。通过这种方式,您可以使用每个评级轻松统计每个帖子的投票数,甚至可以轻松计算每个rating_id评分的帖子数量。如果您向Post_Rating添加第四列以包含捕获投票的日期和时间,则可以更灵活地报告和关联数据。