首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中保存排名

问在MySQL中保存排名
EN

Stack Overflow用户
提问于 2013-04-19 19:53:46
回答 3查看 141关注 0票数 0

我计划每天计算一次地区和全球排名。将有多个排名,每个排名都基于评级或统计数据。

保存这些球员排名的最好方法是什么?是为每个单独的统计数据创建一个表,其中每一行都包含playerID、区域排名和全局排名,还是创建一个包含许多列的单一排名表?第二种选择将导致一些行具有空列,因为玩家可能没有该特定的状态。

另外,保存每日排名的最有效方法是什么,以便能够创建显示球员进度的图表?如果我决定不创建图表,我将在创建新表之前删除这些表。

EN

回答 3

Stack Overflow用户

发布于 2013-04-19 20:00:51

只需创建一个主键为playerId和date的表,并为每个状态添加一列。然后,YOu可以轻松地分析该表上的任何内容。

票数 0
EN

Stack Overflow用户

发布于 2013-04-19 20:35:10

或者,您可以创建两个表: 1-排名表(player_id,date,rank_id,rank) 2- Ranking_type (rank_id,description)

它基本上与前面的答案相同,但您可以添加或删除排名类型,而不必更改排名表,这取决于您的应用程序的动态程度

票数 0
EN

Stack Overflow用户

发布于 2013-04-19 21:33:20

问题的中心是如何使用数据和性能要求。

如果你有一种情况,几乎所有的玩家都拥有几乎所有的统计数据,而你的应用程序同时使用了所有的统计数据,那么从性能的角度来看,这是不需要动脑筋的。您希望将它们存储在单个表中,这样就不会产生每个统计数据额外的"playerid“开销,以及将数据组合在一起所需的连接。

在另一个极端,如果大多数统计数据都是空的,并且应用程序一次只使用一个统计数据,那么包含"playerid“、"statid”、"value“的单个表是一种很好的方法。

第二种方法是实体-属性-值( entity-attribute-value,EAV)模型的一个示例,当您需要添加新的统计信息时,它也非常有用。但是,您希望每天重新创建所有值一次,并且没有提到历史需求。在您的情况下,这一优势并不明显。

选择将不同的值存储在不同的表中可能不是最好的方法,特别是当所有统计数据都具有相同的表示形式(即一个数字)时。增殖表通常不是一个好主意。唯一的例外与访问控制有关。如果您对每个统计数据都有不同的安全需求,那么将它们存储在单独的表中可能会使安全性更易于实现。

基于你所说的,我会使用命名的,每个玩家一行多统计的方法。你可能想看看一个球员的样子,数据就在那里,没有额外的处理,除非你有很多很多的球员或者很多很多的统计数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16104025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档