跟踪数据库中所有玩家之间得分的最佳方法是什么?一名球员赢得/输掉对方的次数。
我想过一个duel
表格,其中我会有3个列:duel_id
,winner_id
和loser_id
但我相信有更好的方法可以做到这一点,避免冗余。
编辑:我很抱歉不够清楚。实际上,玩家是从user
表中随机挑选的。我需要知道谁赢了/输了谁。我之所以不喜欢我的解决方案,是因为在进行统计时,必须扫描整个duel
表,以便返回两个玩家之间的赢/输金额。
答案 0 :(得分:1)
表格有自己的id
,两个外键 - player1_id
,player2_id
,以及两列胜利wins_player1
,wins_player2
。
--------------------------------
| id | p1_id | p2_id | w1 | w2 |
--------------------------------
| 1 | 1 | 2 | 2 | 0 |
--------------------------------
| 2 | 1 | 3 | 1 | 1 |
--------------------------------
| ...| | | | |
--------------------------------
这样,当两个玩家玩游戏时你没有在表格中插入新的元组,你只需更新他们的分数。
例如,如果玩家1和2玩过,而玩家1赢了,你会这样做:
UPDATE scores WHERE p1_id = 1 AND p2_id = 2 SET w1 = w1 + 1;
答案 1 :(得分:0)
如果您不介意不知道谁与谁对应,您可以在用户数据表中添加total_wins列,并在每次匹配后为每个用户增加。
它具有不占用太多空间的优点。
但是如果你有一个非常大的应用程序,你的数据库可能会锁定很多查询和写入