【发布时间】:2021-03-28 22:42:18
【问题描述】:
我正在开发一个会计系统,其中有一种方法可以恢复错误进行的交易。 有些流程在生成交易的发票上运行。 一个流程可以为一张发票生成多笔交易。可以在一张发票上运行多个进程。
架构如下所示:
Transactions
========================================================
Id | InvoiceId | InvoiceProcessType | Amount | CreatedOn
1 1 23 10.00 Today
2 1 23 13.00 Today
3 1 23 17.00 Yesterday
4 1 23 32.00 Yesterday
现在 1 和 2 一起发生,3 和 4 一起发生,我想恢复后者 (3,4),将它们分组的可能解决方案是什么。
一种可能的解决方案是添加一个列ProcessCount,该列在每个进程中递增。
新架构如下所示。
Transactions
==============================================================================
Id | InvoiceId | InvoiceProcessType | Amount | CreatedOn | ProcessCount
1 1 23 10.00 Today 1
2 1 23 13.00 Today 1
3 1 23 17.00 Yesterday 2
4 1 23 32.00 Yesterday 2
还有其他方法可以实现吗? TIA
【问题讨论】:
-
你怎么知道“每个过程”是什么?
-
我非常怀疑 CreatedOn 的“Today”之类的值是否有用。我猜你实际上存储了一个日期时间值而不是一个字符串。但是,如果不具体了解哪个进程创建了哪些行,您的目标是不可能的。如果没有一些严肃和有问题的假设,就没有其他选择。并且列名“ProcessCount”非常容易误导 IMO - 这里没有“计数”
标签: sql sql-server database-design