Я пытаюсь реализовать кошелек для веб-приложения. Дизайн БД, который я создал на данный момент, представляет собой таблицу транзакций кошелька, как показано ниже:
wallet_tr_id | user_id | amount | tr_type (debit/credit) | datetime | tr_id
Пользователи в приложении могут совершать сделки с помощью наличных или кошелька. Есть еще одно transactions
таблица, содержащая всю информацию о транзакциях, а также те, которые были оплачены / заработаны с помощью кредитов кошелька, заносится в вышеуказанную таблицу с помощью внешнего ключа tr_id
,
Каков наилучший способ показать пользователю текущий баланс кошелька?
Должен ли я рассчитать sum total of credits - sum total of debits
для этого пользователя, или я должен поддерживать current_balance
для пользователя в другой таблице?
PS: для любого пользователя не будет большого количества транзакций.
Нет необходимости хранить баланс. Просто посчитай как ты сказал:
select sum(case when tr_type = 'credit' then amount else -amount end) as balance
from transactions
where user_id = 12345;
Других решений пока нет …