返回用户最佳分数的结果页面

时间:2012-11-19 00:35:52

标签: php mysql

我目前有一个MySQL表设置,只保存用户的最佳分数。如果他们得到更好的分数,则更新之前的分数。 我还希望有一个24小时排行榜,只显示最近24小时内发布的分数。

有两种选择:

1)每个排行榜都有2个单独的表格。 “最佳得分”排行榜,每位用户只能获得1分,而“24小时”排行榜可为每位用户节省1分,并带有时间戳。这意味着每次提交分数时,都需要将其发送到2个表而不是1个,但与下一个选项相比,数据占用空间最小。

2)有1个表允许每个用户发布重复分数,为分数添加时间戳,然后简单地用我需要的数据查询大分数表(整体评分最高,24小时内得分等)。

任何想法/建议?这是我第一次使用PHP / MySQL,因此我不确定最佳方法是设计/效率方面。

2 个答案:

答案 0 :(得分:2)

对于规范化数据库,您应该只有1个表用于所有分数。您应该只插入,而不是更新或删除。

然后,如果您想要查找最高分数,可以在查询中应用MAX

如果您想在过去24小时内找到分数,可以将其添加到WHERE条款中。

答案 1 :(得分:0)

我建议只有一张表能保持最佳分数。

为您的问题设置两个表的一些缺点是:

  • 要提供信息,您可能需要在表之间进行连接(不太符合规范化表)
  • 代码的可读性较差,维护较少。
  • 要保持一定的一致性,您应该使用事务来更新两者。

只使用一个表,您应该在您将在查询中使用的字段上创建索引,以显示24个排行榜。即:候选索引将是将在WHERE子句上使用的时间戳。