想问一下是否有一个单独的客户平衡表是一个可以接受的设计实践。我不需要像你在银行账户资产负债表上那样看到一个完整的资产负债表,在那里你有所有的交易和余额。我只需要记录每次客户端余额发生变化时,因此Client_balance_sheet表将在每个票据或事务上获得一个新记录,他的当前余额将被更新,并且该表将只与客户端表有关系。
我的逻辑是,要以编程的方式完成这项工作,我必须查询所有客户端的订单和事务,以获得他的余额,这将花费更长的时间,因为客户端获得越来越多的订单和记录在数据库中的事务。
因此,每次客户端收到账单或付款时,Client_balance_sheet表都会得到一个新的记录。
我想到的另一件事是放弃余额的日期,在每个订单或事务之后,在客户端表中的" balance“字段中计算和记录当前余额。

发布于 2016-12-20 08:24:14
我对存储派生数据持谨慎态度,除非您能够让DBMS为您管理它,否则它总是会找到一种变得不一致的方法。它也不一定提高性能-写比读慢,并招致锁和索引更新。如果需要的话,只对订单和事务进行计算可能是谨慎的,并且等待数据库填充时慢下来。
如果您决定存储余额,我建议您查看触发器来管理它。
至于用日期存储余额:一次对多个客户端的最新记录查询是一个麻烦,最终可能会比从订单和事务中计算它的速度慢。只存储当前余额将更容易处理。您仍然可以在需要时为任何给定日期计算它。
你的想法没有一个是错误的,但它们会带来额外的复杂性和努力。我会等到形势要求它才做这些事情。
https://stackoverflow.com/questions/41225547
复制相似问题