我正在创建的应用程序,存储用户的财务信息在sqlite数据库中。我想要它存储各种信息,如账号,银行名称,利率等。
我想问一下,在真实的金融软件中,以下内容是如何实现的。例如,当有人通过软件从数据库请求数据时,软件是直接去检索数据,还是软件去获取基本信息,然后在现场计算所需的数据。
如果我们想要查看付款金额,并且我们知道这是一个特定的百分比,我们是将付款金额存储在表中还是仅在现场计算它。
如果我想要查询数据库中的总应计利息,我是将此数据存储在表中还是当场计算。
我只是有困难理解是否更好地保持数据库表简单,并在现场做大多数计算,或保留更多的数据在表上,并有软件在后台填充它。
发布于 2009-11-25 01:21:54
一般来说,在所有行业中,我们都不存储可以计算的数据,因为否则,这是违反数据库范式的。如果一条数据被更新,它们都必须被更新。
不过要小心,因为数据可能是最初计算出来的,但可能不会随着其他数据的变化而改变。
比如可能存在当前利率,但在支付利息时,您可能希望存储他们赚取的利率,因为他们赚取的利率是恒定的,但当前利率不是。
发布于 2009-11-25 01:36:04
在某种程度上,"Immutable Invoices“在这个问题上是一个值得注意的故事。虽然人们可能不想存储额外的数据,但最好将一些记录导出到某个存档中,以防价格变化等不应追溯更改发票的情况。
发布于 2013-02-02 00:28:29
我为银行写财务软件。
我不能说什么是完全正确的答案,但这是我所看到的和有效的。
根据计算的复杂性(.5s或2小时/记录),代码可以在从数据库查询时即时计算结果,也可以从另一个表获取已经计算的结果。单独存储所有进入计算的变量是非常有用的,以防需要回溯结果。
在许多情况下,计算包括实时汇率和财务信息,并且没有时间(当计算复杂时)使用正确计算的结果更新所有记录。这些通常是隔夜批量完成的,但缺乏实时更新。
https://stackoverflow.com/questions/1791571
复制相似问题