Отслеживание пользовательских точек (как ТАК)

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

Я должен сохранить пользовательское общее количество в таблице User, или я должен просто вытянуть все транзакции, которые влияют на Пользователя в общем количестве очков вопросов, суммируют их и показывают общее количество очков?

Кажется, что последний является большим количеством работы, чем потребности, которые будут сделаны только для получения общего количества. Но с другой стороны я съеживаюсь в идее сохранить те же данные (более или менее) в двух различных местах.

Что правильный путь состоит в том, чтобы разработать это?

Править: Послушал совет. Используя обоих и recalcs. Я добавил столбец RecalcDate, и если более чем день, старый, это получает recalced. Общее количество также повторно вычисляется каждый раз, пользователь делает что-то, что должно влиять на их общее количество очков.

12
задан Jason 2 March 2010 в 23:57
поделиться

2 ответа

Оба

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

Вы храните не столько дублирующиеся данные, сколько историю аудита, единственный дубликат - это одно число в одном столбце в таблице User ... альтернативой является использование системы пользователем, нет возможности откатить обратно.То же самое происходило в первые дни SO, но у них была история, и они могли без труда пересчитывать итоги.

9
ответ дан 2 December 2019 в 21:43
поделиться

Вам, вероятно, следует смешать и то, и другое.

Храните промежуточную сумму в таблице «Пользователь», а также ведите журнал каждой транзакции, которая влияет на общую сумму пользователя, так что вам не нужно делать сумму всех записей, но они будут у вас на всякий случай. .

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

3
ответ дан 2 December 2019 в 21:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: