Sql-Server
預測審查的數據庫設計
我正在嘗試了解有關關係數據庫的更多資訊,並且我認為沒有更好的方法來學習然後實際做某事。我決定親自嘗試一下個人預算會計和預測。到目前為止,我已經做了一些研究,並希望對我目前的數據庫設計和規範化有所了解。
您對我目前的數據庫設計有什麼想法和建議?我在下面提供了一些資訊,以更好地幫助您幫助我:)
披露:這是一個個人項目。不是為了家庭作業或工作。
商業事實
- 一家銀行
ACCOUNT
可以有很多ENTRIES
- An
ENTRY
可以是 aCREDIT
或DEBIT
- 有
ENTRY
一個貸記或借記的日期- 一個
ENTRY
有一個PAYEE
- 一個
ENTRY
可以關聯到一個BUDGET CATEGORY
- A
CREDIT
的數量為ENTRY
- A
CREDIT
有一個描述ENTRY
- A
CREDIT
可以安排在未來- A
CREDIT
可以在頻率和/或數量上重複出現- A
DEBIT
的數量為ENTRY
- A
DEBIT
有一個描述ENTRY
- A
DEBIT
可以安排在未來- A
DEBIT
可以在頻率和/或數量上重複出現- A
PAYEE
有名字- A
BUDGET
有很多BUDGET CATEGORIES
- A
BUDGET
只能與單個日曆月相關聯- A
BUDGET CATEGORY
可以包含許多ENTRIES
- A
BUDGET CATEGORY
有名字- A
BUDGET CATEGORY
有一個BUDGET
數量- A
FORECAST
有一個開始日期- A
FORECAST
有一個結束日期- A
FORECAST
有期初餘額- A
FORECAST
有很多FORECASTED DAYS
- A
FORECAST
有一個FORECASTED BUDGET
- A
FORECASTED DAY
有一個日期- 一個
FORECASTED DAY
可以有很多FORECASTED DEBITS
- 一個
FORECASTED DAY
可以有很多FORECASTED CREDITS
- A
FORECASTED DEBIT
有一個數量- A
FORECASTED DEBIT
有描述- A
FORECASTED DEBIT
有一個FORECASTED BUDGET CATEGORY
- A
FORECASTED DEBIT
有一個PAYEE
- A
FORECASTED DEBIT
可以重複出現- A
FORECASTED CREDIT
有一個數量- A
FORECASTED CREDIT
有描述- A
FORECASTED CREDIT
有一個FORECASTED BUDGET CATEGORY
- A
FORECASTED CREDIT
有一個PAYEE
- A
FORECASTED CREDIT
可以重複出現- A
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 | +----------+-------------+--------------+---------------+-----------------+------------------+
目前的數據庫設計
我想知道我為什麼做某事會很有幫助,這樣你就可以理解我的邏輯和推理。
- 每個預算可以包含超過 1 個預算類別。我在兩者上都添加了一個
isActive
列Budgets
,BudgetCategories
以防我想重新啟動不同的預算或預算類別。- 我將事務分成兩個非常相似的拆分錶
Debits
,Credits
我看到有兩種類型的事務。- 為了允許和跟踪計劃或重複發生的交易,我創建了一個
ScheduledTransactions
表格,允許我有兩個不同的金額,一個是預期金額,一個ScheduledTransactions
是實際金額。Debits``Credits
- 我認為每個預測都需要開始和結束日期以及起始餘額。
- 每天都需要預測才能確定借方和貸方的總和。
- 我想我本可以使用其他表並添加一些 isForecasted 列,它的工作原理是一樣的。我決定不走那條路,以便將兩者分離,以防需要進行任何更改,以及如果這是一個大型應用程序,將大型預測讀取和寫入與實際交易相同的表中,我認為會導致性能問題日誌。
更一般地說:我會從我想回答的問題列表開始。像:
我付出最多的是誰?我這個月付清污費了嗎?我這個月的現金需求是多少?我需要出去殺東西來吃東西嗎?
這些問題的性質應該驅動模式的設計。
也就是說,這個模式看起來很不錯。
我同意借方和貸方可以在一個表中的想法。
我會根據預算和賬戶類型確定收款人。假設您需要列出或諮詢收款人。我也會有一個收款人的活動欄。很高興知道將來哪個帳戶支付了多少預算。