予測レビューのためのデータベース設計


8

私はリレーショナルデータベースについてもっと学びたいと思っており、実際に何かをするために学ぶより良い方法はないと思いました。私は個人的な予算の会計と予測を見る個人的な試みをすることにしました。これまでにいくつかの調査を行ったので、現在のデータベースの設計と正規化について洞察を得たいと思います。

現在のデータベース設計に関するあなたの考えと提案は何ですか?私はあなたが私を助けるのをよりよく助けるためにいくつかの情報を以下に含めました:)

開示:これは個人的なプロジェクトです。宿題や仕事のためではありません。

ビジネスの事実

  • 銀行ACCOUNTは多くのことができますENTRIES

  • ENTRYCREDITまたはDEBIT

  • アンはENTRY、それは上の貸方かに引き落とされた日付を持っています
  • アンはENTRYシングルを持っていますPAYEE
  • ENTRYAに関連付けることができますBUDGET CATEGORY

  • A CREDITENTRY

  • CREDIT説明がありますENTRY
  • A CREDITは将来的にスケジュールできます
  • A CREDITは頻度や量で再発する可能性があります

  • A DEBITENTRY

  • 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は1つFORECASTED BUDGET

  • A FORECASTED DAYには単一の日付があります

  • A FORECASTED DAYFORECASTED DEBITS
  • A FORECASTED DAYFORECASTED CREDITS

  • A FORECASTED DEBITには金額があります

  • A FORECASTED DEBITには説明があります
  • A FORECASTED DEBITFORECASTED BUDGET CATEGORY
  • A FORECASTED DEBITは1つPAYEE
  • A FORECASTED DEBITは再発する可能性があります

  • A FORECASTED CREDITには金額があります

  • A FORECASTED CREDITには説明があります
  • A FORECASTED CREDITFORECASTED BUDGET CATEGORY
  • A FORECASTED CREDITは1つPAYEE
  • A FORECASTED CREDITは再発する可能性があります

  • AにFORECASTED BUDGETは多くのFORECASTED BUDGET CATEGORIES

  • A FORECASTED BUDGET CATEGORYPAYEES

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

現在のデータベース設計

私のロジックと推論を理解できるように、なぜ私が何かをしたのかを知ることが役立つと考えました。

Revision4-Forecast

  • 各予算には、複数の予算カテゴリを含めることができます。私は、追加isActiveの両方の列をBudgetsし、BudgetCategories場合に私は別の予算や予算のカテゴリを再活性化したかったです。
  • 私は2つの非常によく似スプリットテーブルにトランザクションを分離Debitsし、Credits私が見たように2つのタイプのトランザクションがありました。
  • スケジュールされたトランザクションまたは繰り返し発生するトランザクションを許可して追跡するために、ScheduledTransactions2つの異なる金額、つまりScheduledTransactionsとのどちらかでの予想金額と実際の金額を設定できるテーブルを作成しました。DebitsCredits

リビジョン4-メイン

  • 各予測には、開始日と終了日、および開始残高が必要になると考えました。
  • 借方と貸方の合計を決定できるようにするには、毎日を予測する必要があります。
  • 他のテーブルを使用して、いくつかのisForecasted列を追加することもできたと思いますが、同じように機能します。変更を加える必要がある場合や、これが大規模なアプリケーションで実際のトランザクションと同じテーブルに大きな予測を読み書きする場合に備えて、2つを分離するためにそのルートを使用しないことにしました。パフォーマンスの問題のログ。

行が挿入されたとき、誰が挿入したか、最後に更新されたとき、誰が更新したか、どのプロセスなどのように、各テーブルにメタデータ列が必要ですか?
Biju jose

これは個人的な開発のためのものなので、私はそれを必要としません。
Jon H

1
スキーマと正規化ルールは、問題のモデル化をどのように選択するかによって異なります。従来は、実績、予算、および予測用に個別のテーブルがありました。ただし、違いを示す属性またはフラグを使用して、これらすべてを1つのテーブルに含めることができます。DR / CRと同じです。同じテーブルですが、I / Oを示すために+/-値を使用します。複式簿記に移行すると、勘定科目のバランスを取り、作成するには、方程式の両側が必要になります。そこまで行くの?
Swears-a-lot卿2018

1
これは、データベースについて学ぶために取り組む非常に野心的なプロジェクトだと思います。Dbスキーマの設計と正規化は1つのことであり、正確な記録管理は別のものであり、会計と予測は再びさらに複雑になります。あなたの優先事項はどれですか?
Swears-a-lotサー2018

@ SirSwears-a-lotええ、私はそれほど遠くに行きません。個人の財政状況をさまざまな予算グループに追跡し、シナリオを簡単に予測できるようにすることを考えてみてください。新しい車の支払いを受けて4か月休暇を取った場合はどうなりますか?1週間から1週間、または1か月から1か月の頻度で収入に対する負債比率はどのように見えるでしょうか。または、食料品の予算を500から600に変更した場合はどうなりますか?
Jon H

回答:


2

より一般的には、まず、答えたい質問のリストから始めます。お気に入り:

私が一番払っているのは誰ですか?今月、下水道料金を支払いましたか?今月の現金の要件を教えてください。外に出て食べ物を殺す必要がありますか?

これらの質問の性質により、スキーマの設計が促進されます。

とは言っても、このスキーマはかなりよく見えます。

私は借方と貸方が単一のテーブルにある可能性があるという考えに同意します。


1

予算とアカウントの種類の観点から、受取人を特定します。受取人をリストまたは相談する必要があるとします。また、受取人のアクティブな列があります。今後、どのアカウントがどの予算を支払うかを知るのは良いことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.