Sql-Server

預測審查的數據庫設計

  • February 22, 2019

我正在嘗試了解有關關係數據庫的更多資訊,並且我認為沒有更好的方法來學習然後實際做某事。我決定親自嘗試一下個人預算會計和預測。到目前為止,我已經做了一些研究,並希望對我目前的數據庫設計和規範化有所了解。

您對我目前的數據庫設計有什麼想法和建議?我在下面提供了一些資訊,以更好地幫助您幫助我:)

披露:這是一個個人項目。不是為了家庭作業或工作。

商業事實

  • 一家銀行ACCOUNT可以有很多ENTRIES
  • AnENTRY可以是 aCREDITDEBIT
  • ENTRY一個貸記或借記的日期
  • 一個ENTRY有一個PAYEE
  • 一個ENTRY可以關聯到一個BUDGET CATEGORY
  • ACREDIT的數量為ENTRY
  • ACREDIT有一個描述ENTRY
  • ACREDIT可以安排在未來
  • ACREDIT可以在頻率和/或數量上重複出現
  • ADEBIT的數量為ENTRY
  • ADEBIT有一個描述ENTRY
  • ADEBIT可以安排在未來
  • ADEBIT可以在頻率和/或數量上重複出現
  • APAYEE有名字
  • ABUDGET有很多BUDGET CATEGORIES
  • ABUDGET只能與單個日曆月相關聯
  • ABUDGET CATEGORY可以包含許多ENTRIES
  • ABUDGET CATEGORY有名字
  • ABUDGET CATEGORY有一個BUDGET數量
  • AFORECAST有一個開始日期
  • AFORECAST有一個結束日期
  • AFORECAST有期初餘額
  • AFORECAST有很多FORECASTED DAYS
  • AFORECAST有一個FORECASTED BUDGET
  • AFORECASTED DAY有一個日期
  • 一個FORECASTED DAY可以有很多FORECASTED DEBITS
  • 一個FORECASTED DAY可以有很多FORECASTED CREDITS
  • AFORECASTED DEBIT有一個數量
  • AFORECASTED DEBIT有描述
  • AFORECASTED DEBIT有一個FORECASTED BUDGET CATEGORY
  • AFORECASTED DEBIT有一個PAYEE
  • AFORECASTED DEBIT可以重複出現
  • AFORECASTED CREDIT有一個數量
  • AFORECASTED CREDIT有描述
  • AFORECASTED CREDIT有一個FORECASTED BUDGET CATEGORY
  • AFORECASTED CREDIT有一個PAYEE
  • AFORECASTED CREDIT可以重複出現
  • AFORECASTED BUDGET有很多FORECASTED BUDGET CATEGORIES
  • 一個FORECASTED BUDGET CATEGORY可以有很多PAYEES
  • APAYEE有名字

樣本數據

+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| 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 |
+----------+-------------+--------------+---------------+-----------------+------------------+

目前的數據庫設計

我想知道我為什麼做某事會很有幫助,這樣你就可以理解我的邏輯和推理。

Revision4-預測

  • 每個預算可以包含超過 1 個預算類別。我在兩者上都添加了一個isActiveBudgetsBudgetCategories以防我想重新啟動不同的預算或預算類別。
  • 我將事務分成兩個非常相似的拆分錶DebitsCredits我看到有兩種類型的事務。
  • 為了允許和跟踪計劃或重複發生的交易,我創建了一個ScheduledTransactions表格,允許我有兩個不同的金額,一個是預期金額,一個ScheduledTransactions是實際金額。Debits``Credits

修訂版4-主要

  • 我認為每個預測都需要開始和結束日期以及起始餘額。
  • 每天都需要預測才能確定借方和貸方的總和。
  • 我想我本可以使用其他表並添加一些 isForecasted 列,它的工作原理是一樣的。我決定不走那條路,以便將兩者分離,以防需要進行任何更改,以及如果這是一個大型應用程序,將大型預測讀取和寫入與實際交易相同的表中,我認為會導致性能問題日誌。

更一般地說:我會從我想回答的問題列表開始。像:

我付出最多的是誰?我這個月付清污費了嗎?我這個月的現金需求是多少?我需要出去殺東西來吃東西嗎?

這些問題的性質應該驅動模式的設計。

也就是說,這個模式看起來很不錯。

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

我會根據預算和賬戶類型確定收款人。假設您需要列出或諮詢收款人。我也會有一個收款人的活動欄。很高興知道將來哪個帳戶支付了多少預算。

引用自:https://dba.stackexchange.com/questions/221752