3

想象一下,您需要实施一个系统来记录您的支票账户交易。通常,交易在您的对帐单上按月份分组。每个月都有期初余额和期末余额。开始日期和结束日期之间的每笔交易都会增加或减少余额。您希望能够告诉您当前的余额。

表示这些数据的好方法是什么?我想出了这两个基本选择:

  • 所有交易的一张大桌子。要确定当前余额,请汇总所有交易。最大的缺点:交易列表增长得越长,它变得越慢。所以我怀疑这不是银行会做的事情,也不是任何真正实现这一点的人。

  • 与之前相同,但带有额外的“快照”信息,例如“月末余额”表。这样,要确定当前余额,只需将当前月份的交易添加到最近的快照中,速度就会快得多。不利的一面是,如果交易迟到,或者过去记录不正确,则必须更新快照。(银行不应该经常发生这种情况——我希望——但如果你的会计期——比如你的私人生活——超过一个月的话,其他人可能会发生这种情况)

我想知道现实世界的系统是如何做到这一点的。

4

2 回答 2

7

大多数银行对交易和余额执行以下操作:

Transactions (acct,date,tran_code,amount....)
Balances (acct, date, ledger_Bal,avail_bal....) 

余额通常每天捕获,通常反映当天的期末分类账/可用余额(在一天结束时处理,使用交易总和和前一天余额来计算新余额)。每日余额大大减少了与需要每天运行的流程相关的开销(如计算透支费用)。

当然,还有许多其他表格可以获取其他相关信息。有趣的是,余额表通常比交易表大,因为大多数系统都会处理每日余额,而不管当天是否有交易。

于 2014-02-24T23:43:22.660 回答
1

您可能会在非常少的三个主要桌子上,即一张 for Account,一张 forTransactions和一张 for 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)
于 2014-02-24T23:53:00.390 回答