【问题标题】:ELO rating - mysql designELO 评级 - mysql 设计
【发布时间】:2014-11-20 12:10:27
【问题描述】:

我是一个全新的编程初学者。 我只是做了一个供个人使用的系统。 可以添加两名球员的体育比赛结果。

到目前为止一切正常。 现在我正在考虑添加一个 ELO 评级系统。

我不明白,我应该如何设计我的数据库。

问题是,我无法理解,如何保持正确的评分计算记录,以防任何游戏结果随时被删除。比如有人会添加错误的数据,游戏条目应该被删除。

那么,数据库应该如何设计,如果我从条目中间删除任何游戏,评分将正确重新计算?

我的问题的一个说明性示例,我无法解决(评级计算只是提供信息):

 Player1 (rating 1200), Player2 (1200)
 Game1 played, player1 wins.
 Rating after game: P1:1231, P2:1169
 Game2 played, Player1 wins.
 Rating: P1:1259, P2:1141
 Game3, Player2 wins
 Rating: P1:1220, P2:1180

所以,我意识到,游戏 2 有虚假数据,我想删除它。

应该发生什么? 我删除了game2,然后脚本应该改变评级,比如 从一场比赛之前和之后的比赛1中获取两名球员的评分。这将是 P1:1231,P2:1169 然后在删除游戏后重新计算所有评分。 所以Game3,玩家获胜,评分应该是P1:1198, P2:1202

我不能只删除 game2 和它的评分差异...评分必须从上一场比赛和所有比赛结束后重新计算。

如果有 3 名或更多玩家,并且他们在我要删除的游戏之后玩过游戏,那就更复杂了。 因为他们的收视率发生了变化。而如果一个游戏被删除,那么之后玩的游戏的所有评分变化都应该被一一重新计算。

我希望我的问题很清楚......

所以问题是,能否请您给我一个完整的 php/.mysql 入门者提示数据库的逻辑和计算我的情况的评分过程。

提前致谢。

【问题讨论】:

  • 马克,很抱歉我的问题并不完全清楚。问题是 - 你能帮助我提示我应该如何设计我的数据库吗?目前我有一张玩家桌和一张游戏桌。我应该如何实施收视率数据?它应该是一个新表还是任何其他方式......我无法弄清楚,我应该如何在数据库中组织我的数据......我对mysql / php可能性的了解太低了。我需要一些帮助。我认为这是一个寻求此类建议的地方。
  • @MarcB:他们不希望我们设计完整的系统。他们寻求提示和建议。这并没有错。

标签: php mysql database-design rating


【解决方案1】:

基本上会有两个表:players(name,whatever else,rating)games(player_id_white,player_id_black,result=1,0,-1,date)

删除游戏后,将所有玩家的评分重置为初始值并从头开始重新计算。只需读取按日期排序的游戏表,更新内存中的评分,最后将它们写回玩家表。

这是一种简单粗暴的解决方案,但应该对您有用,除非(直到)您拥有成千上万的玩家和数百万的游戏。

【讨论】:

  • 太好了,谢谢!我没有这样想!我会考虑的! :)
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 2020-03-31
  • 1970-01-01
  • 2014-07-19
  • 2021-04-03
  • 2019-03-08
  • 1970-01-01
  • 2015-01-04
相关资源
最近更新 更多