Как правильно управлять автогонками в MySQL?

Скорее всего, это бессмысленный вопрос, но я хотел бы начать с хорошей ноги: несмотря на все мои старания, я действительно никогда не учился программировать, и я вроде как "учусь на ходу", поэтому извините, если это кажется очевидно для вас... Это скорее вопрос предложения и обратной связи, а не просто программирование.

Моя ситуация такова: я создаю гоночную игру, которая будет получать различные входные данные от ряда пользователей (через веб-сайт php), я храню эту информацию в базе данных MySQL и раз в неделю я хочу обрабатывать все эта информация для генерации "времени прохождения круга", который затем создаст гонку (мой "вывод"). Не принимая во внимание различные методы расчета этого результата, мне нужно сделать две важные вещи, с которых я вообще не знаю, с чего начать:

1) Хранение информации о гонке для каждого пользователя (время круга на круге, самый быстрый круг, позиция гонки на круге, позиция гонки в конце гонки, призовые очки в зависимости от позиции). Где и как я должен оптимально хранить эту информацию? Я создал гоночную базу данных с уникальным идентификатором, который автоматически увеличивается, я думаю, что я буду генерировать 1 набор данных для каждой расы, поэтому я должен хранить там всю информацию, относящуюся к этой гонке? Затем я бы создал строку данных (с типом time?) Для информации о времени круга (1 строка для круга 1, 1 строка для самого быстрого и т. Д.??)? Но как мне узнать, какой пользователь (у меня есть уникальный идентификатор пользователя для каждого), какой круг (как бы я назначил идентификатор пользователя времени круга)?

2) В конце гонки мне нужно начислять очки в зависимости от положения гонки в конце. Должен ли я просто сравнить общее время круга (дополнительный ряд?) И сначала отсортировать по наименьшему? Данные точек будут храниться в пользовательской БД?

Я ценю любой вклад, который вы могли бы внести в моделирование этого проекта!

1 ответ

Решение

Отбросьте каждый круг: lap_round, lap_time и position в БД, добавьте user_id и race_id. После этого запрос кругов. Таким образом, вы можете определить, какой из них самый быстрый, самый быстрый на пользователя, время на круге и многое другое.

Чтобы получить позицию запросить БД для последнего круга. Он держит свою позицию.

Точки основаны на пользователях, поэтому поместите их в таблицу пользователей. Просто добавь. Но если вы хотите сказать, сколько очков было добавлено за гонку, то составьте отдельную таблицу очков (user_id, race_id, points)

Другие вопросы по тегам