sql-server - 数据库设计 : Calculating the Account Balance

标签 sql-server database sql-server-2008 database-design

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

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

然后,我会将所有“金额”值相加,得出用户的账户余额。


我把这个给我的 friend 看了,他说这不是一个好的解决方案,当我的数据库增长时它会变慢吗????他说我应该创建单独的表来存储计算出的账户余额。如果这样做,我将不得不维护两个表,这有风险,账户余额表可能会不同步。

有什么建议吗?

编辑:选项 2:我是否应该在我的交易表“余额”中添加一个额外的列。 现在我不需要通过很多行数据来执行我的计算。

例子 约翰购买了 100 美元的信用额度,他欠了 60 美元,然后他增加了 200 美元的信用额度。

金额 $100,余额 $100。

金额 - 60 美元,余额 40 美元。

金额 $200,余额 $240。

最佳答案

一个从未被优雅解决的古老问题。

我使用过的所有银行业务包都将余额存储在帐户实体中。从运动历史中即时计算它是不可想象的。

正确的做法是:

  • 移动台有一个“开口” 每个账户的余额交易。你需要 几年后当你 需要将旧 Action 移出 主动运动表到历史 表。
  • 帐户实体有余额 领域
  • 运动有触发器 更新帐户的表 贷方和借方账户的余额。显然,它有 promise 控制。如果你不能有触发器,那么需要有一个独特的模块,它在 promise 控制下编写 Action
  • 你有一个“安全网”计划 可以离线运行,重新计算 所有天平和显示器(和 选择性纠正)错误 余额。这对 测试。

一些系统将所有移动存储为正数,并通过反转从/到字段或使用标志来表示贷方/借方。就个人而言,我更喜欢贷方字段、借方字段和签名金额,这使得冲销更容易跟踪。

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

证券交易可能会更加棘手,尤其是对于公司行为,您需要处理一个交易来更新一个或多个买卖双方的现金余额、他们的证券头寸余额以及可能的经纪人/托管人。

关于sql-server - 数据库设计 : Calculating the Account Balance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373968/

相关文章:

sql - 在 CASE 语句中使用 CAST 时出现数据转换错误

mysql - 如何在数据库设计中对属性单元建模?

database - 自适应数据库

mysql - 计划将 .MDB 文件从 ftp 服务器导入 MySQL

sql-server - 为什么 Intellisense 在 SQL Server Management Studio 2008 R2 中不起作用?

c# - 使用哈希作为主键?

sql-server - 获取数据并在同一张表上使用 subselect

c# - 如果使用 TOP,如何判断 SQL Server 是否正在修剪结果?

SQL 服务器 : Easiest way to copy users from dev -> prod

sql-server - 错误消息 : Incorrect Syntax near'. '.在 SQL Server 中