【问题标题】:Buzzfeed inspired voting systemBuzzfeed 启发的投票系统
【发布时间】:2011-04-02 08:23:05
【问题描述】:

Buzzfeed 允许您将某项评分为:

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

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

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

还要记录用户已经在名为 user_rating 的表上投票的帖子,该表包含 user_id,post_id,对吧?

【问题讨论】:

  • 一个主题可以有来自同一用户的多个评分吗?它们看起来并不相互排斥。有些东西可能是旧的和无用的,或者是旧的和令人讨厌的。或者是极客和垃圾。天哪!
  • 我认为您只能将其评价为一件事。我会/将保持简单。

标签: sql database-design language-agnostic


【解决方案1】:

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

另外,我不会使用枚举或列,两者都可能在某些时候给您带来麻烦。最好的设计是让一票占据一排(标明三列)。这样,您可以使用每个评分轻松计算每个帖子的投票数,甚至可以轻松计算每个 rating_id 评分的帖子数量。如果您将第四列添加到 Post_Rating 以包含投票的日期和时间,那么您可以更加灵活地报告和关联数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多