2009-11-24 35 views
6

我正在创建应用程序,它将用户财务信息存储在sqlite数据库中。我想它来存储各种喜欢的账号,银行名称,利率等对于那些在金融部门,数据存储问题

我想问问怎么以下是真正的金融软件完成信息的。例如,有人通过软件从数据库请求数据时,软件是否会检索数据或软件是否会获取基本信息,然后当场计算所需数据。

如果我们想看到付款金额,我们知道这样是有一定的百分比,我们做存储在表中的付款金额还是我们只计算其当场。

如果我想查询总应计利息的数据库,做我该数据存储在表或做我计算它的位置。

我只是无法理解如果更好地保持数据库表简单,做当场大多数计算,或者保持在桌子上更多的数据,并有软件它填充的背景。

回答

4

一般而言,在所有行业中,我们不存储,可以计算的数据,因为否则的话,这是一个违反数据库范式。如果一条数据得到更新,它们都必须更新。

但要小心,因为数据可能是最初计算的,但可能不会随其他数据而改变。

就像可能存在当前的利率一样,但是在授予利息支付时,您​​可能需要存储他们赚取的利率,因为他们赚取的利率是固定的,但目前的利率并非如此。

+2

您不会存储可以计算的数据,除非它会导致其他地方的效率显着提高 – John 2009-11-24 17:23:28

+1

在财务应用程序中,打破一些规范化规则是非常常见的。财务应用程序的主要目标倾向于节省空间的历史有效性和可审计性。与我合作过的少数财务应用程序(我一开始并没有参与),所涉及的所有模式被插入并使用标识符来指示哪个记录是活动的,这使得它们变得缓慢并且从中进行查询很痛苦提供了完美的历史档案而且金融数据库通常最终会聚集非常大的数据集,从而使得即时计算变得不切实际。 – 2013-12-02 04:52:48

+0

@SamuelNeff我在金融领域工作过很多,而且这些规则通常适用,有时历史表/行中可能会有“重复”数据,但更高的标准表单仍然适用。 – McKay 2013-12-02 13:58:07

1

好吧,请记住,您需要记录大量与费率变化有关的历史记录,并将您的个人财务条目链接到潜在的许多不同费率。如果需要,我们保留从头开始生成所有计算的能力(并且定期协调),但通常我们有定期更新的历史汇总头寸(每周或每月新的入口),并且计算基于自此之后的变化。立即从头开始生成所有内容并不总是实用。

1

Usualy(并非总是显而易见)在处理财务数据时,几乎可以在所有ERP中找到某种预先计算好的数据。如果您必须移动数百万笔交易,并且您必须制作大量计算的列和汇总数据,则存储和保存计算出的数据的好处将会有所帮助。您可以将这些数据作为原始数据表格中的附加列,或者存储在聚合或中间操作的单独表格中。

4

Immutable Invoices”在某种程度上将是一个关于这个问题谨慎的故事。虽然可能不想存储额外的数据,但某些记录可能最好导出到某些存档中,以防价格变化等不应追溯地更改发票的情况。

3

我为银行编写财务软件。

我不能说什么是完全正确的答案,但这是我所看到的和有效的。

根据计算(,5S或2小时/记录)从数据库中查询当在运行中的代码可以计算结果或取从另一个表的已计算出的结果的复杂性。将需要回溯结果的所有变量分开存储是非常有用的。

在许多情况下,计算包括实时费率和财务信息,没有时间(计算复杂时)用适当计算的结果更新所有记录。这些通常是在一夜之间完成的,但缺乏实时更新。

0

在金融应用中,数据字段通常以一些标准格式打包。这些数据字段携带用户认证数据。打包数据命中采集服务器,并作为响应,正在生成响应代码。响应数据被打包成标​​准格式并发送到客户端,客户端定义的代码应该与成功事务的响应代码相匹配。通过这种方式,这些工作在财务软件中进行。