2014-09-25 1 views
3

Я полный новый стартер в программировании. Я только что создал систему для личного использования. Есть возможность добавить результаты спортивного матча двух игроков.ELO рейтинг - mysql design

Пока все работает нормально. Теперь я собираюсь добавить систему рейтинга ELO.

Не могу понять, как мне создать свою базу данных.

Проблема в том, что я не могу понять, как правильно вести учет оценки рейтинга в случае, если какой-либо результат игры будет удален в любое время. Например, кто-то добавит ошибочные данные, и запись игры должна быть удалена.

Итак, как должен быть создан дизайн базы данных, чтобы, если я удалю любую игру из середины записей, рейтинг будет пересчитан правильно?

иллюстративный пример моей проблемы, я не могу решить (расчет рейтинга только информативный):

Player1 (rating 1200), Player2 (1200) 
Game1 played, player1 wins. 
Rating after game: P1:1231, P2:1169 
Game2 played, Player1 wins. 
Rating: P1:1259, P2:1141 
Game3, Player2 wins 
Rating: P1:1220, P2:1180 

Итак, тогда я понимаю, что игра 2 имеет ложные данные, я хочу, чтобы удалить его.

Что должно произойти? Я удаляю игру2, тогда скрипт должен изменить рейтинг, как Схватить рейтинг обоих игроков от одной игры до, после игры1. который будет P1: 1231, P2: 1169 И затем пересчитайте всю оценку после удаленной игры. Итак, Game3, победитель игрока, рейтинг должен быть P1: 1198, P2: 1202

Я не могу просто удалить игру2, и это разницы в рейтингах ... рейтинг должен быть пересчитан из предыдущей игры и для всех после игры.

Сложнее, если есть 3 или более игроков, и они играли в игры после того, что я хочу удалить. Из-за их рейтингов изменились. И если игра удалена, то все рейтинговые изменения игр, которые были сыграны после, должны быть пересчитаны один за другим.

Я надеюсь, что моя проблема ясна ...

Так таял вопрос, не могли бы вы дать мне полный стартер PHP/.mysql а намеки на то, что должно быть логика базы данных и процесс вычисления рейтинги моей ситуации.

Заранее спасибо.

+0

Марк, извините, я не совсем понял свой вопрос. Вопрос: можете ли вы мне помочь с каким-либо намеком на то, как я должен попытаться создать свою базу данных? В настоящее время у меня есть стол для игроков и игровой стол. Как мне применить данные рейтингов? Если это будет новый стол или любой другой способ ...Я не могу понять, как мне организовать данные в базе данных ... Мое знание возможностей mysql/php слишком низкое. Мне нужна помощь со стороны. Я думал, что это место, где можно попросить такие советы. – OGlv

+0

@MarcB: они не хотят, чтобы мы проектировали полную систему. Они попросили советов и советов. В этом нет ничего плохого. – georg

ответ

1

В принципе, будут две таблицы: players(name,whatever else,rating) и games(player_id_white,player_id_black,result=1,0,-1,date).

После того, как игра была удалена, сбросьте все рейтинги игроков до первоначального значения и пересчитайте их с нуля. Просто прочитайте таблицу игр, отсортированную по дате, обновите оценки в памяти и, наконец, напишите их обратно в таблицу игроков.

Это как-то прямое и грубое решение, но должно работать для вас, если только (до тех пор) у вас нет тысяч игроков и миллионов игр.

+0

Отлично, спасибо! Я так не думал! Я подумаю! :) – OGlv

 Смежные вопросы

  • Нет связанных вопросов^_^