想象一下,您需要实施一个记录您的支票账户交易的系统。通常,交易按您的对帐单按月分组。每个月都有一个期初余额和期末余额。开始日期和结束日期之间的每笔交易都会增加或减少余额。您希望能够告诉您当前的余额。
表示此数据的好方法是什么?我想出了这两个基本选择:
所有交易的一个大表。要确定当前余额,请汇总所有交易。大的缺点:交易列表越长,越慢。所以我怀疑这不是银行会做的事情,也不是任何实施此事的人。
与之前相同,但附加了“快照”信息,例如“月底的余额”表。这样,要确定当前余额,只需要将当前月份的事务添加到最新快照,这样会快得多。缺点是,如果交易进入较晚,或者过去记录不正确,则必须更新快照。 (对于银行而言,这种情况不应该发生 - 我希望 - 但如果您的会计期间 - 例如您的私人生活 - 可能会超过一个月,那么其他人可能会这样做)
我想知道现实系统是如何做到这一点的。
答案 0 :(得分:5)
大多数银行为交易和余额执行以下操作:
Transactions (acct,date,tran_code,amount....)
Balances (acct, date, ledger_Bal,avail_bal....)
通常每日捕获余额,通常反映当天的结束分类帐/可用余额(在一天结束时处理,使用交易总额和前一天余额来计算新余额)。每日余额大大减少了与每天需要运行的流程相关的开销(如计算透支费用)。
当然,还有许多其他表格用于其他相关信息。有趣的是,余额表通常比交易表大,因为大多数系统处理每日余额,无论当天是否有交易。
答案 1 :(得分:1)
你可能有三个主要表格,一个用于Account
,一个用于Transactions
,一个用于Corrections
。
所以你可能会将这些表格与字段一起显示如下:
Account (AcctNo, AcctName, Address, Street, State, Zip, AcctCreationDate, LastBalance)
Transactions (TransNo, AcctNo, TransDate, TransType, TransAmount, EndingBalance, AgentID)
TransactionCorrection (TransCorrID, RefTransNo, RefAcctNo, forTransDate, AgentID)
您可以添加进行交易和更正的用户。
Agent(AgentID, AgentLastname, AgentFirstname)