我有一个关于设计簿记应用程序的问题。简而言之,该应用程序跟踪人们之间的费用分配。每笔费用都记录为交易,组中的每个人要么欠/从组中的另一个人那里得到钱。
我一直在决定将谁欠谁以及欠多少的总数保存在数据库中的位置。
策略 1:只需将最近的总数保留在数据库表中,如下所示(对于 3 个用户)
id user_from user_to money
1 1 2 23 //User 1 gets $23 to 2
2 1 3 -15 //User 1 owes $15 from 3
3 2 3 10 //User 2 gets $10 from 3
当新事务被添加到数据库中时,我会通过计算新的总数来更新这些表。所以我只为每个用户保留最新的可用负债。这样做的问题是,由于我没有为每笔交易保留余额(或快照),我将无法转到某个交易 x 并找出在该特定交易中谁欠/从其他人那里得到了多少。我只能获得所有交易的总余额。
策略 2:执行策略 1 加上以下 将每笔交易的交易总额/余额保存在另一个数据库表中(就像在每笔交易结束时显示余额的银行对账单一样)。我看到的问题是,如果旧交易值发生变化,我必须更新之后所有交易的余额(总计),因为旧交易的总数现在已经改变>
我尝试在 sourceforge 上浏览一些开源会计软件项目的源代码,但我也认为征求你们的意见可能是个好主意。
谢谢。