database - 我如何为预算应用程序建模预算数据?

标签 database data-modeling finance financial

我想创建一个应用程序,允许用户在给定月份将他们已有的资金预算到不同类别。

我已经对处理有形数据进行了建模和原型(prototype)制作;例如银行账户、交易、转账。我遇到的问题是将这些“真实”数据(放在你银行里的东西,或者你口袋里的东西,或者你银行对账单上的东西)与这些虚假的预算概念(或者,正如我喜欢考虑的那样,信封)联系起来).

这是我汇总的需求的快速列表:

  • 用户可以管理他们的财务账户
  • 用户可以管理他们的财务交易
  • 用户可以将每笔交易与一个财务账户相关联
  • 用户可以在账户之间转账
  • 用户可以每月将可用资金分配给给定的预算类别
  • 用户可以修改现有的每月预算类别(减少或增加)
  • 用户可以查看给定每月预算类别的剩余金额
  • 用户可以查看预算的可用金额(可能为负数)
  • 预算类别中的剩余资金可以结转到下个月
  • 用户可以查看他们的财务账户总额(不应受预算影响)
  • 用户可以创建预算类别作为最终可以关闭的目标(例如,为新车节省开支)
  • (可能是我忘记的其他一些用例)

粗体 中的用例是我正在努力解决的问题。

我考虑过拥有一个“MonthlyBudget”对象的想法,每个交易都可以与之相关;但这在数据库中实现似乎过于复杂,因为我必须实现日期范围而不是简单的日期。

我的想法是将这些每月预算类别视为账户,并且只需对它们执行转账即可;但是这样一来,用户就无法将他们的银行对帐单与系统中的数据进行交叉检查。

我玩过“假钱”的想法,预算会以某种方式利用它,从而将“真钱”和“预算钱”分开——但我无法从逻辑上思考这个问题。

我有点不知所措,找不到一种清晰简洁的方法来实现它,特别是使用关系数据库进行存储。如果有人有任何建议或想法,我将不胜感激。

最佳答案

人们对预算封套法感到沮丧的原因是它将预算分配与实际存在的特定资金联系起来,而资金是可替代的并且可以计入预算,无论来源如何。此外,当您写支票或刷信用卡时,可能是为了购买包含多个预算项目的商品。

典型的商业预算数据模型按期间(在您的定义中为每月)设置预算,并设置带有金额的预算项目。拨付资金后,付款将部分或全部应用于适当的预算项目。要找出您的预算中还剩下多少支出,请减去所有应用的付款。

如果这是个人理财,人们是以现金为基础的。但是,同样的原则也适用。所以你会有 220 美元的杂货账单。也许其中 150 美元用于支付我们整个星期吃的常规食物,另外 70 美元用于圣诞派对。当您回到家并将杂货账单输入计算机时,您可能需要以下选项:

  • 将全部 220 美元用于杂货,因为它必须在某个地方弥补;
  • 将 150 美元用于食品杂货,将 70 美元用于季节性娱乐事件;
  • 将 150 美元用于杂货店,将 70 美元放在一边,因为我还没有设置季节性娱乐预算。我们不想让用户为了输入杂货帐单而停止整个过程来创建更多预算,否则很快他/她将不再忠实地输入杂货帐单,因为工作量太大了。

关于database - 我如何为预算应用程序建模预算数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404137/

相关文章:

python - 在 Python 中实现差分(非微分)方程

python - 您可以在列表上使用 Filter() 函数从更大的列表中创建新列表吗?

ruby-on-rails - 运行 heroku db :pull 时无法获取表信息

database - 在 DBIx::Class 中设置操作

database - Redis 存储历史数据

sql - 如何在记录更改时更新不同位置(表)的多个信息?

mysql - 在mysql数据库中创建一个默认值为null的列

python - 从多个 DataFrame Python 中收集重复的列名称

database - Cassandra 时间序列 : Allow Filtering, 桶或其他

python - Black Scholes 看跌期权,分析解决方案实现 - Python