Я думаю, у вас есть некоторые общие проблемы с масштабируемостью в вашем дизайне. Когда вы добавляете игры и пользователей, то как вы подсчитываете их выигрыши / проигрыши, с точки зрения ввода-вывода станет значительно больше работы для вашей базы данных.
Я бы предложил создать таблицу с именем player_record
, которая будет просто ID игрока, WINS, LOSSES. Затем создайте хранимую процедуру, которая вызывается, когда игра заканчивается. (скажем, spGameFinished(game_id, winner,..);
) Эта хранимая процедура будет отвечать за выполнение любых задач, необходимых для завершившейся игры, и одна из этих задач - обновить таблицу player_record
, в зависимости от того, кто объявлен победителем. Я предполагаю, что когда игра начинается, вы вводите игру с идентификаторами для двух игроков, но если вы этого не сделаете, хранимая процедура должна будет принять их и по завершении игры.
Как только это будет сделано, запросы, необходимые для сбора информации о выигрышах / проигрышах, станут тривиальными. Это также позволяет вам управлять требованиями к хранению игр отдельно от записей игроков. (то есть вы можете отбрасывать действительно старые игры, не влияя на запись пользователя)