我有关于设计簿记应用程序的问题。 简而言之,应用程序会记录人员之间分摊的费用。每笔费用都记录为一笔交易,并且该组中的每个人都要从该组中的另一个欠款/获得金钱。设计应用程序的问题
我一直在决定在哪里保存谁欠谁和数据库中的总数。
策略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上的一些开源会计软件项目源代码,但我也认为这可能是一个好主意,得到你们的意见。
谢谢。
交易应该包括*更改*余额,然后另一个表可以(出于效率原因)保持总计。每笔余额交易可以按需计算。或者出于效率原因,您可以保留余额的历史快照,并在早期交易发生变化时重新计算它们,但这会使您的应用逻辑更加复杂。老实说这取决于你的用例 - 你是否需要显示那么糟糕或很快的历史平衡? – millimoose
这有点复杂,因为您不显示单个帐户的余额,而是显示用户之间的关系,但实际上应该应用相同的原则,只需找出要更新哪个帐户就会变得更加复杂。 – millimoose