处理简单“帐户余额”分类帐的最佳实践

时间:2017-12-23 22:56:56

标签: accounting

我正在开发一个简单的应用来跟踪用户和公司的帐户余额。我有一个特定的利基用于此(无需深入了解其中的细节)。但是,当我开始考虑不同的方法来确保帐户始终正确且最新时,我有一些选择,我想知道最佳做法是什么。

首先,我们假设我们有一个表来跟踪所有交易(包括信用和借方)。

什么是更好的选择?

  1. 无论何时加载需要帐户余额的页面,都会查询该表并处理所有事务以计算最新余额。似乎资源密集......
  2. 所有功能都会添加到此“事务”表中,但也可以在创建/更新/删除时随时更新每个用户的运行余额。然后可以在必要时显示交易,但只有99%的时间查询余额。
  3. 也许#2带着CRON工作来隔夜验证这种平衡,只是为了确保没有错过任何东西?或者这可以每周运行一次,例如。
  4. 我要放弃的其他任何东西,或者可能需要的主要考虑因素?

    感谢您的帮助。对于它的价值,我使用的是PHP / MYSQL,但它与这个问题/回复无关。

1 个答案:

答案 0 :(得分:0)

除了借记或贷记金额外,您可以保留一个交易表,其中包含递增的recID和当前余额。这样你就可以做到这一点:

create table myTranstable ( recID IDType, customerID integer, acctBalance long, transactionAmount long)

begin a transaction

lock customerID

select max(recID),balance from myTransTable where customerID=thisCustomer

if(recID==NULL)
   createAZeroBalanceRecordFor(thisCustomer)
else
if( balance + thisTransactionAmount <0 )
  doSomethingAwfulTo(thisCustomer);
else
  insert into myTransTable values ( $newMaxId,customerID,balance+thisTransactionAmount,thisTransactionAmount )

unlock CustomerID 

end the transaction

这样您就不必扫描整个表格或执行cron作业等。抱歉,对于伪代码,我不了解PHP或您可以使用的数据库。