如何设计数据库来计算账户余额?
1)目前我从交易表计算账户余额
在我的交易表中,我有“描述”和“金额”等。
然后,我将所有“金额”值相加,从而计算出用户的帐户余额。
我向我的朋友展示了这个,他说这不是一个好的解决方案,当我的数据库增长时,它会变慢???他说我应该创建单独的表来存储计算出的帐户余额。如果这样做,我将不得不维护两个表,并且有风险,帐户余额表可能会不同步。
有什么建议吗?
EDIT:选项 2:我应该在交易表“余额”中添加一个额外的列吗?
现在我不需要遍历很多行数据来执行计算。
例子
约翰购买了 100 美元的信贷,他借了 60 美元,然后他增加了 200 美元的信贷。
金额 100 美元,余额 100 美元。
金额 - 60 美元,余额 40 美元。
金额 200 美元,余额 240 美元。
这是一个从未得到优雅解决的古老问题。
我使用过的所有银行软件包都将余额存储在帐户实体中。根据运动历史即时计算它是不可想象的。
正确的方法是:
- 机芯工作台有一个“开口”
每个账户的余额交易。你需要
几年后当你
需要将旧的机芯移出
活动运动表到历史记录
桌子。
- 账户实体有余额
场地
- 运动中有一个触发器
更新帐户的表
贷方和借方账户的余额。显然,它有承诺
控制。如果你没有触发器,那么就需要有一个unique在承诺控制下编写动作的模块
- 你有一个“安全网”计划
可以离线运行,重新计算
所有天平和显示屏(以及
(可选地更正)错误的
余额。这对于
测试。
某些系统将所有移动存储为正数,并通过反转“起始”/“终止”字段或使用标志来表示贷方/借方。就我个人而言,我更喜欢贷方字段、借方字段和签名金额,这使得冲销更容易遵循。
请注意,这些方法同时适用于现金和证券。
证券交易可能会更加棘手,特别是对于公司行为,您将需要适应一项更新一个或多个买方和卖方现金余额、他们的证券头寸余额以及可能的经纪人/存款人的交易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)