我正在尝试为Web应用程序实现钱包。我现在提出的数据库设计是一个钱包交易表,如下所示:
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:最终任何用户都不会有大量的交易。
答案 0 :(得分:4)
无需存储余额。按你说的那样计算:
select sum(case when tr_type = 'credit' then amount else -amount end) as balance
from transactions
where user_id = 12345;