【发布时间】:2011-05-21 09:54:05
【问题描述】:
如何设计数据库来计算账户余额?
1) 目前我从交易表中计算账户余额 在我的交易表中,我有“描述”和“金额”等。
然后,我会将所有“金额”值相加,然后计算出用户的帐户余额。
我把这个给我的朋友看,他说这不是一个好的解决方案,当我的数据库增长时它会变慢????他说我应该创建单独的表来存储计算出的账户余额。如果这样做,我将不得不维护两个表,并且有风险,帐户余额表可能会不同步。
有什么建议吗?
编辑:选项 2:我是否应该在我的交易表“余额”中添加一个额外的列。 现在我不需要通过很多行数据来执行我的计算。
示例 约翰购买了 100 美元的信用,他借了 60 美元,然后又增加了 200 美元的信用。
金额 100 美元,余额 100 美元。
金额 - 60 美元,余额 40 美元。
金额 200 美元,余额 240 美元。
【问题讨论】:
-
您预期的交易量是多少?
-
wtf 是每个人都得到负分的问题吗??
-
不知道iDevelop,我没有给任何人正面或负面的观点:),现在我很困惑,一个人说是,另一个人说不是。到底是怎么回事! ??
-
Transactions 表中 Balance 字段的问题在于,您不仅在行级别构建了一个传递依赖项,这不是“正常”,而且您在列级别添加了一个传递依赖项,这将是如果您遇到问题(触发失败或其他),会很头疼。我的建议是写下你的规范化结构,然后写下你计划拥有的每个“用例”,与其他人讨论,然后根据你的用例检查你的结构,看看是否有一些非规范化是必须的。无论如何,设计阶段至关重要,在那个时候花点时间并不是“浪费”时间!
-
“前几年的交易永远不会被删除”......我会对此做两次。您可能会考虑在一段时间后将旧事务移至存档表,+ 在活动表中创建特殊类型的事务(initialBalance)。这可能是年度流程(或任何适当的时间框架)的一部分。你应该在你的“用例”中包含这一点;-)
标签: sql-server database sql-server-2008 database-design