预测审查的数据库设计


8

我试图学习更多有关关系数据库的知识,并且发现没有更好的方法来学习然后实际去做。我决定亲自尝试一下“个人预算会计和预测”。到目前为止,我已经进行了一些研究,并希望对当前的数据库设计和规范化有一些了解。

您对我当前的数据库设计有何想法和建议?我在下面提供了一些信息,以便更好地帮助您:)

披露:这是一个个人项目。不用于家庭作业或工作。

商业事实

  • 银行ACCOUNT可以有很多ENTRIES

  • An ENTRY可以是CREDITDEBIT

  • ENTRY日期已计入贷方或借方
  • ENTRY有一个PAYEE
  • 一个ENTRY可以被关联到BUDGET CATEGORY

  • A CREDIT的金额为ENTRY

  • A CREDIT的说明ENTRY
  • 一个CREDIT可以在未来计划
  • A的CREDIT频率和/或金额可能会重复出现

  • A DEBIT的金额为ENTRY

  • A DEBIT的说明ENTRY
  • 一个DEBIT可以在未来计划
  • A的DEBIT频率和/或金额可能会重复出现

  • A PAYEE有个名字

  • 一个BUDGET有很多BUDGET CATEGORIES

  • A BUDGET只能与一个日历月份关联

  • 一个BUDGET CATEGORY可以包含许多ENTRIES

  • A BUDGET CATEGORY有个名字
  • A BUDGET CATEGORYBUDGET金额

  • A FORECAST有开始日期

  • A FORECAST有结束日期
  • A FORECAST有期初余额
  • 一个FORECAST有很多FORECASTED DAYS
  • 一个FORECAST有一个FORECASTED BUDGET

  • A FORECASTED DAY有一个日期

  • 一个FORECASTED DAY可以有很多FORECASTED DEBITS
  • 一个FORECASTED DAY可以有很多FORECASTED CREDITS

  • A FORECASTED DEBIT有金额

  • 一个FORECASTED DEBIT有描述
  • A FORECASTED DEBIT有一个FORECASTED BUDGET CATEGORY
  • 一个FORECASTED DEBIT有一个PAYEE
  • 一个FORECASTED DEBIT可再次发生

  • A FORECASTED CREDIT有金额

  • 一个FORECASTED CREDIT有描述
  • A FORECASTED CREDIT有一个FORECASTED BUDGET CATEGORY
  • 一个FORECASTED CREDIT有一个PAYEE
  • 一个FORECASTED CREDIT可再次发生

  • 一个FORECASTED BUDGET有很多FORECASTED BUDGET CATEGORIES

  • 一个FORECASTED BUDGET CATEGORY可以有很多PAYEES

  • A PAYEE有个名字

样本数据

+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| Account Number |   Date   |   Description    |   Payee Name   | Credit Amount | Debit Amount | Budget Category  |
+----------------+----------+------------------+----------------+---------------+--------------+------------------+
|          25178 | 10/01/18 | Payroll          | My Work        | $1000.00      |              | Income           |
|          25178 | 10/02/18 | McRibs for Lunch | McDonalds      |               | $13.12       | Fast Food        |
|          25178 | 10/03/18 | Electric Bill    | FPL            |               | $133.68      | Electric         |
|          25178 | 10/04/18 | Water Bill       | City Water Co. |               | $58.12       | Water and Sewage |
|          25178 | 10/05/18 | Clothes for Work | Target         |               | $65.02       | Clothes          |
|          99875 | 10/28/18 | Bonus Check      | My Work        | $1300.00      |              | Income           |
+----------------+----------+------------------+----------------+---------------+--------------+------------------+

+----------+-------------+--------------+---------------+-----------------+------------------+
| Due Date |    Payee    | Debit Amount | Credit Amount | Budget Category | Re-Occurs On Day |
+----------+-------------+--------------+---------------+-----------------+------------------+
| 10/28/18 | Mortgage Co | $1500.00     |               | Mortgage        |               28 |
| 10/01/18 | My Work     |              | $990.00       | Income          |                1 |
| 10/03/18 | FPL         | $110.00      |               | Electric        |                3 |
+----------+-------------+--------------+---------------+-----------------+------------------+

当前数据库设计

我认为了解为什么做某件事会有所帮助,这样您就可以了解我的逻辑和推理。

修订4-预测

  • 每个预算可以包含1个以上的预算类别。我添加了isActive两个栏Budgets,并BudgetCategories在情况下,我想重新激活不同的预算或预算类别。
  • 我将事务分成两个非常相似的拆分表,Debits并且Credits看到有两种类型的事务。
  • 为了允许和跟踪预定或重复发生的事务,我创建了一个ScheduledTransactions表,该表允许我有两个不同的金额,一个为的预期金额ScheduledTransactions,一个为Debits或的实际金额Credits

修订版4-主要

  • 我认为每个预测都需要开始和结束日期以及开始余额。
  • 需要预测每一天,以便能够确定借方和贷方之和。
  • 我想我可以使用其他表并添加一些isForecasted Columns,它的工作原理相同。我决定不走这条路,以便在需要进行任何更改的情况下将两者分离,以及如果这是大型应用程序,并且将大型预测与实际交易写入同一表中,我认为这会导致性能问题日志。

只是想一想,您是否需要每个表中的元数据列,例如插入行的时间,插入行的人,上次更新的时间,更新的人,哪个进程等?
Biju jose

由于这是用于个人发展,所以我不需要任何这些。
乔恩H

1
模式和规范化规则取决于您选择对问题建模的方式。传统上,您会使用单独的表格来获取实际数据,预算和预测。但是您可以将它们全部放在一个带有属性或标志的表中,以表示差异。与DR / CR相同。表格相同,但使用+/-值表示I / O。一旦您进入了重复输入会计,您将需要方程的两端来平衡和创建帐户。你要走那么远吗?
Swears-a-lot爵士,

1
我认为这是一个非常雄心勃勃的项目,目的是要学习数据库。Db Schema的设计和规范化是一回事,准确的记录保存是另一回事,会计和预测再一次变得更加复杂。您优先考虑哪一个?
Swears-a-lot爵士,

@ SirSwears-a-lot是的,我没有走那么远。考虑一下是否能够将您的个人财务跟踪到各个预算组中,并且能够简单地进行预测,例如...如果我获得了新车付款并在4个月内度假了该怎么办?在一周到一周或一个月到一个月的频率下,我的收入与债务比率会是什么样子。或者,如果我将杂货预算从500更改为600,该怎么办?
乔恩H

Answers:


2

更笼统地说:我将首先列出我想回答的问题。喜欢:

我向谁付款最高?我这个月付了污水处理费吗?我这个月的现金需求是多少?我需要出去消磨食物吗?

这些问题的性质应驱动模式的设计。

就是说,这个架构看起来不错。

我同意借方和贷方可以在一个表中的想法。


1

我将根据预算和帐户类型确定收款人。说您需要列出或咨询收款人。我还将为收款人提供一个活跃的专栏。知道将来由哪个帐户支付什么预算可能会很高兴。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.