简单银行账户的派生账户余额与存储账户余额?

2023-12-25

就像我们普通的银行账户一样,我们有大量的交易,导致资金流入或流出。账户余额始终可以通过简单地总结交易价值来得出。将更新后的账户余额存储在数据库中还是在需要时重新计算,哪一个更好?

每个账户的预期交易量:每日

预期检索账户余额:每当交易发生时,平均每天一次。


Preface

有一个客观事实:审计要求。此外,在处理公共资金时,必须遵守立法机关的规定。

您不必实现完整的会计要求,您可以仅实现您需要的部分。

相反,实施某些事情是不明智的以外标准会计要求(其中的一部分),因为这保证了当错误数量或负载超过某个阈值或系统扩展时,您将不得不重新实现。这种成本是可以而且应该避免的。

还需要说明的是:不要聘请不合格、未经认可的“审核员”。这将会产生后果,就像你雇佣了一个不合格的开发人员一样。如果税务局对您罚款,情况可能会更糟。

Method

不太原始国家的标准会计方法是这样的。如果你愿意的话,在其他方面也是“最佳实践”。

该方法适用于任何有类似操作的系统;需要;历史月度数据与当月需求的比较,例如库存控制等。

考虑

首先,考虑因素。

  1. 切勿重复数据。
    If the Current Balance可以导出(正如您所注意到的,这里很简单),不要将其与摘要列重复。

    • 这样的列是数据的重复。它违反了规范化规则。
    • 此外,它creates an Update Anomaly,否则不存在。
  2. 如果您确实使用摘要列,则当新AccountTransaction插入后,汇总栏Current Balance value已过时,因此必须始终更新。这就是结果Update Anomaly。这消除了拥有它的价值。

  3. 外部出版物。
    单独点。如果余额被公布,如每月的银行对账单,此类文件通常具有法律限制和影响,因此公布的当前余额值在公布后不得改变。

    • 在发布日期之后,数据库中对外发布的数据的任何更改都是不诚实行为、欺诈等的证据。

      • 这种试图改变已发表的历史的行为是新手的标志。新手和精神病人会坚持认为历史可以改变。但大家都应该知道,对法律的无知并不能构成有效的辩护。
    • 您不希望您的银行在 2015 年 4 月发生变化the他们在 2014 年 12 月向您提供的银行对账单中公布的当前余额。

    • 该数字必须被视为审计数字,已公布且不可更改。

  4. 为了纠正一个错误AccountTransaction过去所做的,现在正在纠正的,必要的纠正或调整,被作为新的AccountTransaction当月(即使它适用于前一个月或持续时间)。

    • 这是因为适用月份已关闭;已审核;并发表,因为历史一旦发生并被记录下来,就无法改变。唯一的有效的月份是当前月份。

    • 对于计息系统等,在不那么原始的国家,当发现错误时,它会产生历史性影响(例如,您在 2015 年 4 月发现证券每月计算的利息不正确,因为2014 年 12 月),今天根据错误天数计算更正利息支付/扣除的值,并将总和插入为AccountTransaction当月。同样,唯一有效的月份是当前月份。

      当然,证券的利率也必须得到纠正,这样错误就不会重复。

    • 同样的原则也适用于库存控制系统。它保持理智。

  5. 所有真实的会计系统(即那些由适用国家/地区审计机构认可的系统,而不是比比皆是的米老鼠“包”)都使用复式记账会计所有人的系统AccountTransactions,正是因为它可以防止大量错误,其中最重要的是,资金不会“丢失”。这需要总账和复式记账会计。

    • 你没有要求那个,你不需要那个,所以我不在这里描述它。但请记住这一点,以防钱“失踪”,因为这是你必须实施的,而不是一些创可贴解决方案;不是另一个未经认可的“一揽子计划”。

这个答案服务于所提出的问题,即not复式记账会计。
有关该主题的完整处理(详细数据模型、会计事务示例、受影响的行以及 SQL 代码示例),请参阅此问答:
复式记账会计的关系数据模型 https://stackoverflow.com/a/59465148/484814.

  1. The major issues that affect performance are outside the scope of this question, but to furnish a short and determinant answer: it is dependent on:
    • 无论您是否实现真正的关系数据库(例如 1960 年代的记录归档系统,其特点是Record IDs,为了方便起见部署在 SQL 容器中)。

    • 无论您使用的是真正的 SQL 平台(结构化、稳定、可靠、符合 SQL 标准、OLTP 等)还是假冒的 SQL 免费软件(大量程序、不断变化、没有抱怨、像鱼一样缩放)。

    • 无论表的数量如何,使用真正的关系键等都将保持高性能。

    • 相反,RFS 的性能会很差,他们根本无法执行。 “规模”在 RFS 上下文中使用时是一个欺诈性术语:它隐藏原因并寻求解决除原因之外的所有问题。最重要的是,这样的系统没有关系完整性;关系力;或关系 DBMS 的关系速度。

执行

关系数据模型 • 银行账户

关系数据模型 • 库存

Notation

  • 我所有的数据模型都呈现在IDEF1X https://www.idef.com/idef1x-data-modeling-method/,自 1993 年以来的关系数据库建模标准。

  • My IDEF1X简介 https://www.softwaregems.com.au/Documents/Documentary%20Examples/IDEF1X%20Introduction.pdf对于刚接触该领域的人来说是必读的关系模型,或其建模方法。请注意,IDEF1X 模型具有丰富的细节和精度,显示了所有所需的细节,而国产模型的细节却远远不够。这意味着,必须理解该符号。

Content

  1. 对于每个AccountNo,将会有一个AccountStatement每月行,其中ClosingBalance;陈述Date(通常是下个月的第一天)以及关闭月份的其他报表详细信息。

    • 这不是存储的“重复”值或可导出值,因为 (a) 该值仅适用于一个Date,(b) 出于审计和健全目的而需要,并且 (c) 提供显着的性能优势(消除 SUM(所有交易))。

      对于库存,对于每个PartCode,将会有一个PartAudit每月行,有QtyOnHand column.

    • 它还有一个附加值,因为它限制了需要查询的事务行的范围to当月

      • 同样,如果您的表是关系型表并且您有 SQL 平台,则主键AccountTransaction将 (AccountNo, 交易DateTime)它将以毫秒的速度检索交易。

      • 而对于记录归档系统,“主键”将是AccountTransactionID,您将按交易日期检索当前月份,该日期可能会也可能不会正确索引,并且所需的行将分布在整个文件中。无论如何,远低于 ClusteredIndex 的速度,并且由于分布,它将引发表扫描。

  2. The AccountTransaction表仍然很简单(银行账户交易的现实世界概念很简单)。它有一个单一的积极Amount column.

  3. 对于每个Account, the CurrentBalance is:

    • the AccountStatement.ClosingBalance上个月的日期,为方便起见,日期为下个月的第一天

      • 对于库存而言,PartAudit.QtyOnHand
    • 加上SUM( Transaction.Amounts )在当月,其中AccountTransactionType表示存款

      • 对于库存而言,PartMovement.Quantity
    • 减去SUM( Transaction.Amount )在当月,其中AccountTransactionType表示提款

    • (下面提供代码)。

  4. 在该方法中,AccountTransactions仅当月处于不断变化的状态,因此它们必须找回。之前的所有月份均已发布并关闭,因此审计数据AccountStatement.ClosingBalance必须使用.

  5. 中较旧的行AccountTransaction表可以被清除。公共资金超过十年,否则五年,爱好俱乐部系统一年。

  6. 当然,与会计系统相关的任何代码都必须使用真正的 OLTP 标准和真正的 SQL ACID 事务(在假装 SQL 免费软件中不可能)。

  7. 此设计包含所有范围级性能考虑因素(如果这不明显,请要求扩展)。数据库内部的扩展不是问题,任何剩余的扩展问题实际上都在数据库外部。


纠正建议

需要说明这些项目只是因为许多 SO 答案中提供了不正确的建议(当然,并由群众民主投票),并且互联网上充满了不正确的建议(业余爱好者喜欢发布他们的主观“真相”):

  1. 显然,有些人不明白我用技术术语给出了一种方法,用于针对清晰的数据模型进行操作。因此,它不是针对特定国家/地区的特定应用程序的伪代码。该方法适用于有能力的开发人员,对于需要手动引导的人员来说,它不够详细。

    • 他们也不明白一个月的截止期是一个example:如果税务局的截止日期是季度,那么请务必使用季度截止日期;如果您唯一的法律要求是年度,请使用年度。

    • 即使出于外部或合规目的,您的截止日期是每季度一次,公司也可能出于内部审计和理智目的而选择每月一次的截止日期(即,将变化状态的时间长度保持在最低限度) 。

      例如。在澳大利亚,税务局对企业的截止是每季度一次,但较大的公司每月都会取消库存控制(这样就不必在很长一段时间内追查错误)。

      例如。银行每月都有法律合规要求,因此他们每月对数据进行内部审计并结账。

    • 在原始国家和流氓国家,银行将其流动状态期保持在最长,显然是出于邪恶的目的。其中一些只每年制作合规报告。这就是澳大利亚银行不倒闭的原因之一。

  2. In the AccountTransaction表中,请勿在金额列中使用负数/正数。金钱总是有正值,不存在负二十美元(或者说负二十美元)这样的东西。你欠我五十美元),然后找出双重否定的含义。

  3. 移动方向,或者你打算用资金做什么,是一个独立且离散的事实(对于AccountTransaction.Amount)。这需要一个单独的列(一个数据中的两个事实违反了规范化规则,其结果是它给代码带来了复杂性)。

    • 实施一个AccountTransactionType参考表,其主键是( D, W)作为存款/取款的起点。随着系统的增长,只需​​添加 (A, a, F, w) 调整信用;调整借方;银行费用; ATM取款; ETC。

    • 无需更改代码。

  4. 在一些原始国家,诉讼要求规定,在列出交易的任何报告中,每一行都必须显示运行总计。 (请注意,这不是审计要求,因为这些要求优于[(参见上面的方法)法院要求;审计师比律师稍微不那么愚蠢;等等)

    显然,我不会反对法院的要求。问题是原始编码员将其翻译为:哦,哦,我们必须实施一个 AccountTransaction.CurrentBalance column。他们不明白:

    • 在报告上打印列的要求并不要求在数据库中存储值

    • 任何类型的运行总计都是派生值,并且很容易编码(如果这对您来说不容易,请提出问题)。只需实现报告中所需的代码即可。

    • 实施运行总计,例如AccountTransaction.CurrentBalance作为一个列会导致可怕的问题:

      • 引入重复列,因为它是可导出的。打破常态化。引入更新异常。

      • 更新异常:每当历史上插入交易,或者AccountTransaction.Amount被改变了,所有的AccountTransaction.CurrentBalances 从那个日期到现在必须重新计算和更新。

    • 在上述案例中,提交给法院使用的报告现已过时(每份在线数据报告在打印时即已过时)。 IE。打印;审查;更改交易;重印;重新审视,直到你满意为止。无论如何都是没有意义的。

    • 这就是为什么在不太原始的国家,法院不接受任何旧的印刷纸,他们只接受公布的数字,例如。银行对账单已符合审计要求(请参阅上述方法),并且不能撤回、更改和重新打印。


Comments

Alex:
是的,代码很好看,谢谢。即使是一个样本“投机商号”,让人们可以永远看到起始模式,也会让世界变得更加美好。

对于上面的数据模型。

代码 • 报告当前余额

SELECT  AccountNo,
        ClosingDate = DATEADD( DD, -1 Date ), -- show last day of previous
        ClosingBalance,
        CurrentBalance = ClosingBalance + (
            SELECT SUM( Amount )
                FROM AccountTransaction
                WHERE AccountNo = @AccountNo
                    AND TransactionTypeCode IN ( "A", "D" )
                    AND DateTime >= CONVERT( CHAR(6), GETDATE(), 2 ) + "01"
                ) - (
            SELECT SUM( Amount )
                FROM AccountTransaction
                WHERE AccountNo = @AccountNo
                    AND TransactionTypeCode NOT IN ( "A", "D" )
                    AND DateTime >= CONVERT( CHAR(6), GETDATE(), 2 ) + "01"
                )
    FROM AccountStatement
    WHERE AccountNo = @AccountNo
        AND Date = CONVERT( CHAR(6), GETDATE(), 2 ) + "01"

通过对交易日志进行非规范化,当我添加更多交易类型时,我可以用规范形式换取更方便的查询,并减少视图/物化视图的变化

神救救我。

  1. 当你违反标准时,你就把自己置于第三世界的位置,那些在第一世界国家不应该损坏、永远不会损坏的东西都会损坏。

    从权威那里寻求正确的答案,然后反对它,或者为你不合标准的方法辩护,这可能不是一个好主意。

  2. 非规范化(此处)会导致更新异常(可以从 TransactionTypeCode 派生的重复列)。您想要轻松编码,但您愿意在两个地方编码,而不是一个地方。这正是容易出错的代码。

    根据 E F Codd 博士的说法完全规范化的数据库关系模型提供最简单、最符合逻辑、最直接的代码。 (在我的工作中,我通过合同保证每份报告都可以由一个单一的服务提供SELECT.)

  3. ENUM不是 SQL。 (免费软件 NONsql 套件没有 SQL 合规性,但它们确实具有 SQL 中不需要的额外功能。)如果您的应用程序升级到商业 SQL 平台,您将不得不重新编写所有这些ENUMs与普通的查找表一样。与一个CHAR(1) or a INT作为PK。然后你就会体会到,这其实是一张有PK的桌子。

  4. 错误的值为零(它也会产生负面后果)。真理的价值为一。我不会用一换零。因此,这不是一种权衡。这只是你的发展决定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单银行账户的派生账户余额与存储账户余额? 的相关文章

  • 使用python shelve跨平台

    我希望得到关于 Python 中的书架 数据库的一些建议 问题 我在 Mac 上创建了一个数据库 我想在 Windows 7 上使用该数据库 我使用 Python 3 2 MacOS 10 7 和 win 7 当我在 Mac 上打开并保存我
  • JSON 值的模式匹配

    运行 Postgres 12 5 的本地 docker 实例 4MBwork mem 我正在实施这个图案 https dba stackexchange com q 108447 3684搜索 json 中的任意字段 目标是搜索并返回 JS
  • 在数据库中存储密码的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 ActiveAndroid 库存储 HashMap

    我有一堂课 Table name Control public class Control extends Model Column private String name Column private Map
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • 具有多个主键的 SQLAlchemy 不会自动设置任何

    我有一个简单的表 class test Base tablename test id Column Integer primary key True title Column String def init self title self
  • SQL 按计数排序

    如果我有一个表和这样的数据 ID Name Group 1 Apple A 2 Boy A 3 Cat B 4 Dog C 5 Elep C 6 Fish C 我希望根据 Group 的总和从小到大进行排序 例如 A 2条记录 B 1条记录
  • Hibernate saveOrUpdate 与更新与保存/持久

    我正在努力理解休眠方法之间的细微差别 saveOrUpdate update save persist 我知道网站上有一些类似的问题 Hibernate中不同的保存方式有什么区别 https stackoverflow com questi
  • 将数据从电子表格迁移到 RDBMS 的策略是什么?

    这与我的另一个问题相关何时从电子表格迁移到 RDBMS https stackoverflow com questions 2395607 when to switch from spreadsheet to rdbms 决定从 Excel
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • django AuditTrail 与还原

    我正在开发一个新的网络应用程序 我需要将数据库中的任何更改存储到审核表中 此类审计表的目的是 稍后在真正的物理审计中 我们可以确定在某种情况下发生了什么 谁编辑了什么以及数据库当时的状态是什么 复杂的计算 所以大多数审计表将被写入而不是读取
  • oursql 中的参数化查询

    如果有人能告诉我是否可以使用命名占位符进行参数化查询 我将不胜感激oursql 一个用于与 MySQL 数据库交互的 python 模块 例如 我尝试了一种可以与 sqlite3 一起使用的查询 c execute select from
  • PostgreSQL - 致命:用户“myuser”身份验证失败[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚在我的 Ubuntu Box 中安装了 PostGreSQL 我想做的第一件事就是创建一个数据库 我读了文档 http www postgres
  • 表与多个表具有一对一的关系

    1 一个表可以和多个表建立一对一的关系吗 为了更清楚地说明 如果我想做插入 第一个表将受到影响并且 只有一张其他表会受到影响 2 如果是这样 主键将如何 3 另外 如果我想检索多条记录 查询会是什么样子 从这些表中 谢谢 一个表可以和多个表
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • MySQL JOIN 滥用?情况会变得有多糟糕?

    我读了很多关于关系数据库的文章 在每个 SELECT 上使用许多 JOIN 语句 但是 我一直想知道滥用这种方法从长远来看是否会出现任何性能问题 例如 假设我们有一个users桌子 我通常会添加 最常用 的数据 而不是进行任何额外的联接 例
  • 如何迁移我的 Heroku 数据库?

    我试过了 heroku rake db migrate and heroku pg push 第一个给我一个 PGerror rake 中止错误 有没有办法用heroku完全重建 重置我的数据库 我似乎在他们的文档中找不到它 编辑 在此之前
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one

随机推荐

  • BLE血糖仪

    我正在尝试从血糖仪获取数据 但无法在互联网上找到有关实施的良好资源 这是我到目前为止能够实现的 我正在使用 BluetoothAdapter LeScanCallback 接口扫描设备 Override public void onLeSc
  • 如何下载地图选定部分的 OSM 图块

    我想使用 Openlayer OSM 图层以单个缩放级别离线下载地图的选定部分的地图 我有地图的四个角 即地图的显示部分 但需要获取所有图块图像或四个角之间的图块 我回顾了一些例子 Openlayers获取鼠标下图块的图片url https
  • 在.NET 4中使用await SemaphoreSlim.WaitAsync

    我的应用程序正在使用 NET 4 我正在使用等待异步努吉特包 https www nuget org packages Microsoft Bcl Async 在我的应用程序中 我想对信号量 WaitAsync 调用进行等待 如下所示 Se
  • 为什么 GHC 不能派生 Monoid 的实例?

    GHC 有一些语言标志 例如DeriveFunctor DeriveDataTypeable等等 这使得编译器能够为 Haskell 98 中允许的类型类之外的类型类生成派生实例 这对于类似的东西尤其有意义Functor 其中该类的定律规定
  • 绘制包含多个组件的图形时,节点大小不正确

    我有一个包含许多组件的图表 我想将其可视化 作为一个特殊特征 巨型组件中节点的节点点应随其特征向量中心性缩放 所有其他节点具有相同的大小 我使用以下脚本 import networkx as nx import pylab as py im
  • android recyclerview:如何以编程方式选择 TextView 背景颜色?

    我有一个 CardViews 的 RecyclerView 列表 在每个 CardView 上 用户事先从下拉对话框中选择 类型 类型选择有 工作 和 家庭 类型选择作为字符串存储在 SQLite 数据库中 当我运行应用程序时 没有显示 T
  • 角度单元测试:错误:无法匹配任何路由。 URL 段:“主页/顾问”

    我正在我的 Angular 4 0 0 应用程序下进行单元测试 我的真实组件中的某些方法是通过以下方式调用手动路由 method this navigateTo home advisor with 导航是一个调用此的自定义路由方法 publ
  • 使用不区分大小写的字符串访问 python 字典

    我正在努力查看是否存在一种方法来访问带有正确字符串但不区分大小写的字符串作为键的 python 字典 例如使用以下代码 dictionary one 1 two 2 three 3 list One second THree for ite
  • Firebase 仪表板设置电子邮件已验证

    我通过控制台创建了一个用户 并在我的客户端 iOS 应用程序 内创建了一个用户 我要求用户在使用之前验证其电子邮件 但是测试用户没有有效的电子邮件 它不存在 电子邮件是 email protected cdn cgi l email pro
  • 如何从SWT表中选择一个单元格

    table addSelectionListener new SelectionAdapter public void widgetSelected SelectionEvent e if table getSelectionIndex 1
  • SQL - 将 2 个外键左连接到 1 个主键

    我有两张桌子 游戏桌和团队桌 我的 sql 语句应该是什么样子来创建一个游戏列表 以提取链接到 TeamID1 和 TeamID2 字段的 TeamName 我相信我可以使用左连接 但我不确定如何处理链接到一个主键的两个外键 非常感谢您提供
  • 从审计记录构建快照表

    我有一个Customer表具有以下结构 CustomerId Name Address Phone 1 Joe 123 Main NULL 我也有一个Audit跟踪更改的表Customer table Id Entity EntityId
  • 我的选择如何正确地出现在我在 SwiftUI 中创建的列表中

    我创建了显示数字数组的列表 当您选择多个数字并点击下面的按钮时 它应该告诉您所选数字的总和 但是 当您在不同行中选择相同的数字时 它们会同时被检查 我知道这应该通过使用 UUID 来解决 但我想要的最终结果是数字之和 即 Int 因此 我迷
  • 我可以从 PriorityQueue 中获取一个项目而不将其删除吗?

    我想获取队列中的下一个项目 但不想将其出列 在Python中可以吗queue PriorityQueue 来自docs http docs python org py3k library queue html highlight prior
  • Firebase 存储的动态图像大小调整

    有没有一种有效的方法可以通过更改图像 URL 中的查询参数来提供存储在 firebase 存储中的动态尺寸图像 或者类似 Imgix 的东西 什么是最有效的方法 我建议您尝试使用 ImageMagick 调整 Firebase 存储大小的
  • 将 gulp.start 函数迁移到 Gulp v4

    我已经将所有 gulp v3 代码库迁移到 v4 中 然而 我陷入了一个困境 我有 gulp start 函数 当我在 gulp v4 中运行 gulp start 时 它会抛出一个错误 这是我在版本 3 中的功能 gulp task de
  • 批处理 for 循环内存泄漏?

    我正在编写一个批处理脚本 它会遍历目录中的每个文件 查找代码文件并以某种方式修改它们 完成该任务后 我尝试在包含大约 6 000 个文件的大目录上运行它 大约 40 分钟的脚本崩溃了 我从命令提示符处收到了很多内存不足的错误 运行脚本的同时
  • 无法将“...”类型的值添加到“UIElementCollection”类型的集合或字典中

    当我通过 XAML 添加自定义控件时 出现以下错误 可能的原因是什么 A value of type cannot be added to a collection or dictionary of type UIElementCollec
  • 如何正确管理屏幕上的精灵组

    我正在用 Swift 构建我的第一个游戏 我想知道如何同时处理多个屏幕精灵 我的游戏将精灵推到屏幕上addChild连续的 所以同时有很多活跃的 我意识到我没有同时影响所有敌人的正确方法 就像我想同时影响所有敌方精灵的物理属性一样 到目前为
  • 简单银行账户的派生账户余额与存储账户余额?

    就像我们普通的银行账户一样 我们有大量的交易 导致资金流入或流出 账户余额始终可以通过简单地总结交易价值来得出 将更新后的账户余额存储在数据库中还是在需要时重新计算 哪一个更好 每个账户的预期交易量 每日 预期检索账户余额 每当交易发生时