私はリレーショナルデータベースについてもっと学びたいと思っており、実際に何かをするために学ぶより良い方法はないと思いました。私は個人的な予算の会計と予測を見る個人的な試みをすることにしました。これまでにいくつかの調査を行ったので、現在のデータベースの設計と正規化について洞察を得たいと思います。
現在のデータベース設計に関するあなたの考えと提案は何ですか?私はあなたが私を助けるのをよりよく助けるためにいくつかの情報を以下に含めました:)
開示:これは個人的なプロジェクトです。宿題や仕事のためではありません。
ビジネスの事実
銀行
ACCOUNTは多くのことができますENTRIESは
ENTRY、CREDITまたはDEBIT- アンは
ENTRY、それは上の貸方かに引き落とされた日付を持っています - アンは
ENTRYシングルを持っていますPAYEE ENTRYAに関連付けることができますBUDGET CATEGORYA
CREDITはENTRY- の
CREDIT説明がありますENTRY - A
CREDITは将来的にスケジュールできます A
CREDITは頻度や量で再発する可能性がありますA
DEBITはENTRY- の
DEBIT説明がありますENTRY - A
DEBITは将来的にスケジュールできます A
DEBITは頻度や量で再発する可能性がありますA
PAYEEには名前がありますAに
BUDGETは多くのBUDGET CATEGORIESA
BUDGETは単一のカレンダーにのみ関連付けることができますA
BUDGET CATEGORYは多くのENTRIES- A
BUDGET CATEGORYには名前があります A
BUDGET CATEGORYにはBUDGET金額がありますA
FORECASTには開始日があります- A
FORECASTには終了日があります - A
FORECASTには期首残高があります - Aに
FORECASTは多くのFORECASTED DAYS A
FORECASTは1つFORECASTED BUDGETA
FORECASTED DAYには単一の日付があります- A
FORECASTED DAYはFORECASTED DEBITS A
FORECASTED DAYはFORECASTED CREDITSA
FORECASTED DEBITには金額があります- A
FORECASTED DEBITには説明があります - A
FORECASTED DEBITはFORECASTED BUDGET CATEGORY - A
FORECASTED DEBITは1つPAYEE A
FORECASTED DEBITは再発する可能性がありますA
FORECASTED CREDITには金額があります- A
FORECASTED CREDITには説明があります - A
FORECASTED CREDITはFORECASTED BUDGET CATEGORY - A
FORECASTED CREDITは1つPAYEE A
FORECASTED CREDITは再発する可能性がありますAに
FORECASTED BUDGETは多くのFORECASTED BUDGET CATEGORIESA
FORECASTED BUDGET CATEGORYはPAYEESA
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 |
+----------+-------------+--------------+---------------+-----------------+------------------+
現在のデータベース設計
私のロジックと推論を理解できるように、なぜ私が何かをしたのかを知ることが役立つと考えました。
- 各予算には、複数の予算カテゴリを含めることができます。私は、追加
isActiveの両方の列をBudgetsし、BudgetCategories場合に私は別の予算や予算のカテゴリを再活性化したかったです。 - 私は2つの非常によく似スプリットテーブルにトランザクションを分離
Debitsし、Credits私が見たように2つのタイプのトランザクションがありました。 - スケジュールされたトランザクションまたは繰り返し発生するトランザクションを許可して追跡するために、
ScheduledTransactions2つの異なる金額、つまりScheduledTransactionsとのどちらかでの予想金額と実際の金額を設定できるテーブルを作成しました。DebitsCredits
- 各予測には、開始日と終了日、および開始残高が必要になると考えました。
- 借方と貸方の合計を決定できるようにするには、毎日を予測する必要があります。
- 他のテーブルを使用して、いくつかのisForecasted列を追加することもできたと思いますが、同じように機能します。変更を加える必要がある場合や、これが大規模なアプリケーションで実際のトランザクションと同じテーブルに大きな予測を読み書きする場合に備えて、2つを分離するためにそのルートを使用しないことにしました。パフォーマンスの問題のログ。

