У меня есть сайт, где люди записывают результаты игр.95% игр проводятся в одиночку, но 5%, которые не отбрасывают статистику выигрыш-ничья-выигрыш для каждого сценария.
Каждое сражение имеет 2 стороны, и все возможные результаты:
- Сторона 1 выигрывает
- Сторона 2 выигрывает
- Ничья
Если 2 человека играют друг друга, и оба записывают игру, вы получаете2 победы для данной стороны, когда должна быть только одна (имеет смысл?), И это сбрасывает рейтинг баланса.Эти записи должны быть объединены, когда придет время отображать статистику битвы.
Мой первоначальный kludge заключался в том, чтобы программировать 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
и я действительно понятия не имею, как извлечь эти данные и построить соотношение выигрыша и выигрыша, которое признало бы, что все эти люди играют вместе ...
Имею ли я смысл?Как мне сопоставить эти записи?