sql-server – 数据库设计:计算帐户余额

如何设计数据库来计算帐户余额?

1)目前我从交易表中计算帐户余额
在我的交易表中我有“描述”和“金额”等。

然后,我将所有“金额”值相加,并计算出用户的帐户余额。

我向我的朋友展示了这个,他说这不是一个好的解决方案,当我的数据库增长减慢???他说我应该创建单独的表来存储计算的帐户余额。如果是这样,我将不得不维护两个表,并且它的风险,帐户余额表可能会失去同步。

任何建议?

编辑:选项2:我应该添加一个额外的列到我的事务表“平衡”。
现在我不需要经过许多行数据来执行我的计算。


约翰买了100美元的信用,他的债务60美元,然后增加了200美元的信用。

金额$ 100,余额$ 100。

金额 – $ 60,余额$ 40。

金额$ 200,余额$ 240。

一个古老的问题,从来没有优雅地解决。

我已经使用的所有银行包存储与帐户实体的余额。从运动历史上飞快地计算它是不可想象的。

正确的方法是:

>运动表有一个开口
平衡“交易。你需要
这在几年的时间里你
需要移动旧的动作
主动移动表到历史
表。
>该帐户实体有余额
领域
>运动上有一个触发器
表更新帐户
贷记和借记帐户的余额。显然,它有承诺
控制。如果不能有触发器,则需要一个唯一的模块,它在承诺控制下写入运动
>你有一个’安全网’程序你
可以离线运行,进行重新计算
所有的余额和显示(和
可选校正)错误
余额。这是非常有用的
测试。

一些系统将所有运动存储为正数,并通过反转from / to字段或使用标志来表示信用/借记。就个人而言,我更喜欢信用字段,借记字段和签名金额,这使得逆转更容易遵循。

请注意,这些方法适用于现金和证券。

证券交易可能非常棘手,特别是对于公司行动,您需要适应一个交易,更新一个或多个买方和卖方现金余额,其安全头寸余额,可能还有经纪人/存托。

http://stackoverflow.com/questions/4373968/database-design-calculating-the-account-balance

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql-server – 数据库设计:计算帐户余额