Подтвердить что ты не робот

Отслеживание пользовательских точек (например, SO)

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

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

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

Каков правильный способ его разработки?

РЕДАКТИРОВАТЬ: Принял совет. Использование обоих и recalcs. Я добавил столбец RecalcDate, и если он старше одного дня, он будет восстановлен. Сумма также пересчитывается каждый раз, когда пользователь делает что-то, что должно повлиять на общее количество баллов.

4b9b3361

Ответ 1

И

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

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

Ответ 2

Вероятно, вы должны сделать сочетание обоих.

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

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