Joh*_*nst 1 sql database database-design bank
假设您需要实施一个系统,该系统可以记录您的支票账户交易记录。通常,交易按月在您的对帐单上分组。每个月都有期初余额和期末余额。开始日期和结束日期之间的每笔交易都会增加或减少余额。您希望能够告诉您当前的余额。
表示此数据的好方法是什么?我提出了以下两个基本选择:
所有交易的一张大桌子。要确定当前余额,请汇总所有交易。缺点很大:交易清单增长的时间越长,交易速度就越慢。因此,我怀疑这不是银行会做的事情,还是真正实现这一目标的人。
与上一个相同,但带有其他“快照”信息,例如“月末余额”表。这样,确定当前余额时,只需将当月的交易添加到最近的快照中,这会更快。缺点是,如果事务迟到或过去记录不正确,则必须更新快照。(我希望这对银行来说不会太频繁发生,但如果您的会计期间(例如您的私人生活)超过一个月,则对其他人可能会发生)
我想知道现实世界中的系统是如何做到的。
大多数银行对交易和余额执行以下操作:
Transactions (acct,date,tran_code,amount....)
Balances (acct, date, ledger_Bal,avail_bal....)
Run Code Online (Sandbox Code Playgroud)
余额通常每天捕获一次,通常反映当天的期末分类帐/可用余额(在一天结束时处理,使用交易总额和前一天的余额来计算新余额)。每日余额大大减少了与每天需要运行的流程相关的开销(例如透支费用的计算)。
当然,还有许多其他表格供其他相关信息使用。有趣的是,余额表通常大于事务表,因为大多数系统都会处理每日余额,而不管当天是否有事务。