【问题标题】:Customer balance sheet in seperate table单独表格中的客户资产负债表
【发布时间】:2016-12-19 15:07:27
【问题描述】:

想询问为客户余额设置单独的表格是否可以接受。我不需要像银行账户资产负债表那样查看完整的资产负债表,那里有所有交易和余额。我只需要记录每次客户余额的变化,所以Client_balance_sheet表会得到每笔账单或交易的新记录,他的当前余额会更新,表只会有关系Clients 表。

我的逻辑是,要以编程方式执行此操作,我必须查询所有客户的订单和交易以获取他的余额,并且随着客户获得越来越多的订单和交易记录在数据库中,这将花费更长的时间。

因此,Client_balance_sheet 表会在每次客户被计费或付款时获得一条新记录。

我想到的另一件事是放弃余额的日期,只计算并记录每个订单或交易后的当前余额,在 的“余额”字段中客户表。

【问题讨论】:

    标签: database-design


    【解决方案1】:

    我对存储派生数据持谨慎态度,它似乎总是想办法变得不一致,除非您可以让 DBMS 为您管理它。它也不一定会提高性能 - 写入比读取慢并且会导致锁定和索引更新。谨慎的做法是在需要时仅对订单和交易进行计算,然后等待它随着数据库的填充而变慢。

    如果您决定存储余额,我建议您查看触发器来管理它。

    至于存储带有日期的余额:一次查询多个客户的最新记录很麻烦,最终可能比从订单和交易中计算要慢。仅存储当前余额将更易于使用。您仍然可以在需要时为任何给定日期计算它。

    您的任何想法都没有错,但它们会带来额外的复杂性和努力。我会等到情况需要再做这些。

    【讨论】:

    • 问题是,每当我在软件的主窗口中选择一个客户端时,我都希望显示总余额。我不断地从一个客户到另一个客户,并且认为每次我选择一个客户时计算客户的每笔交易都会过度杀戮。但是,如果您认为读取速度足够快可以处理这个问题,那也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    相关资源
    最近更新 更多