Я хочу разработать валютную систему на пользовательском форуме, над которым я работаю, но я не знаю, как лучше всего подойти.Валюта Структура данных SQL
Должен ли я добавить новое «золотое» поле в свою пользовательскую таблицу и увеличивать с помощью операторов sql?
id, user, pass, created_at, gold
Logic: пользователь создает новый форум пост; обновление пользовательского таблицы: gold + 1
ИЛИ
Должен ли я добавить таблицу транзакций, который записывает все и сделать count where user = x
?
id, user_id, amount
1 3 1 (new forum post)
2 3 1 (new forum post)
3 12 -5 (item purchase)
4 3 -1 (deleted post)
5 9 1 (new forum post)
ИЛИ есть еще лучший подход?
В чем именно используется валютная система? Как репутация здесь я принимаю на основе ваших примеров? Если дисковое пространство не является проблемой, я бы рекомендовал регистрировать каждую транзакцию, чтобы у вас был журнал всего. Пользователи могут быть разборчивы, когда вы не можете устранить проблему с репутацией/золотом/опытом/etc с их учетной записью. –
Ну, есть что-то известное как [Нормализация базы данных] (https://en.wikipedia.org/wiki/Database_normalization). Часть этого означает, что вы не должны создавать сумасшедшее количество столбцов на таблице. Но это также зависит от того, какие данные вы сохраняете, и что вы будете делать с ним в будущем. Планируете ли вы иметь дополнительные дни дохода? Золотые заработки? В этом случае предпочтительной является таблица транзакций. Но если нет, и это действительно просто золото, столбец в пользовательской таблице будет в порядке. – icecub
Я думаю, что это похоже на репутацию. Идея состоит в том, чтобы увеличить «золото» на величину X каждый раз, когда пользователь добавляет комментарий. Если у меня есть тысячи строк, 'count()' становится неэффективным? –