【发布时间】:2011-06-13 23:29:59
【问题描述】:
我有一个人们记录游戏结果的网站。 95% 的游戏是单人玩的,但有 5% 的游戏没有脱离每个场景的双赢统计数据。
每场战斗有2个阵营,所有可能的结果是:
- 第一方获胜
- 第二方获胜
- 画
如果 2 个人互相比赛,并且都记录了一场比赛,那么在应该只有一方的情况下,你会为给定一方赢得 2 场胜利(有意义吗?)并且它会破坏平衡评级。当需要显示战斗的统计数据时,这些记录应该被合并。
我最初的计划是对 PHP 进行编程,以使 相同的播放日期 + 相同的结果 = 仅分组为一个结果,但是随着用户群的增长(人们在同一天玩并获得偶然的相同结果)变得更加频繁。
随着我的编程能力提高,我觉得已经准备好去除杂物并用适当的面对面处理程序替换它,但是在提出可接受的数据库结构时遇到了麻烦。
目前,所有记录都存储在一个表中,battle_results,其结构如下:
[play_id] [user_id] [battle_id] [play_date] [win_side]
000001 007 DeRa001 2010-01-01 1
000002 010 DeRa001 2010-01-01 1
我想让我的用户能够列出这是单人游戏还是面对面游戏,以及他们在玩哪一边,所以我打算像这样修改表格:
[play_id] [user_id] [battle_id] [play_date] [win_side] [play_type] [user_side]
000001 007 DeRa001 2010-01-01 1 multi 2
000002 010 DeRa001 2010-01-01 1 multi 1
这很容易。但是用户需要能够说出他们在和谁一起玩。起初我认为多对多表可以解决问题:
[play_id] [user_id] [opponent_id]
00001 007 010
但后来我意识到,当对手提交相同的记录时,你只是在反转列:
[play_id] [user_id] [opponent_id]
00001 007 010
00002 010 007
我真的不知道如何提取这些数据并构建一个可以识别出这些人都在一起玩的胜率胜率......
我说得有道理吗?我如何匹配这些记录?
【问题讨论】:
标签: php mysql database-design statistics many-to-many