我想出了两种可能的模式,其中没有一种似乎足够通用。
1。每场一排
会有一个表games
,其中包含game_id, winner, loser, winner_points, loser_points
列,每个游戏都会存储在表格的一行中。
2。每场比赛两行
games
表格中包含game_id, player, opponent, player_points, opponent_points
列。每个游戏将存储在表格的两行中,它们将具有相同的game_id
。
SELECT AVG(player_points) FROM games WHERE player = some_player
答案 0 :(得分:4)
我建议使用游戏桌,玩家桌和第三桌来建立更好的关系模型,以处理玩家与游戏的多对多关系。类似的东西:
game( game_id, date, description, .... )
player( player_id, name, .... )
player_game( player_id, game_id, score )
现在您有一个非常灵活的规范化(非冗余等)架构。
游戏的赢家是:
select max(score), player_id from player_game where game_id = 'somegame'
玩家的总分数为:
select sum(score) from player where player_id = 'someplayer'
等等......
答案 1 :(得分:0)
我肯定会为每个分数做一行(即每场比赛2行)。我会存储玩家和积分,如果我想要对手玩家/积分,我会分开查看。我几乎肯定会为每个游戏都有一个单独的表格,它会提到比赛时的内容等等。
没有冗余数据,一切都很容易收集等。