让我们玩两个玩家(或团队)玩的游戏,其中结果由两个玩家(例如足球)的分数表示。在关系数据库中存储这种游戏的结果是否有一种惯用的方式?双人游戏的数据库模式
我想出了两个可能的模式,其中没有一个似乎足够普遍。每场
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
- Unfotunately在表中的数据现在是多余的