Ich versuche, mehr über relationale Datenbanken zu erfahren, und ich dachte, es gibt keinen besseren Weg zu lernen, als tatsächlich etwas zu tun. Ich beschloss, einen persönlichen Versuch zu unternehmen, um die persönliche Budgetbuchhaltung und -prognose zu untersuchen. Ich habe bisher einige Nachforschungen angestellt und möchte einen Einblick in mein aktuelles Datenbankdesign und meine Normalisierung erhalten.
Was sind Ihre Gedanken und Vorschläge zu meinem aktuellen Datenbankdesign? Ich habe unten einige Informationen aufgenommen, um Ihnen zu helfen, mir zu helfen :)
Offenlegung: Dies ist ein persönliches Projekt. Nicht für Hausaufgaben oder für die Arbeit.
Geschäftsdaten
Eine Bank
ACCOUNTkann viele habenENTRIESEin
ENTRYkann entweder einCREDIToder seinDEBIT- An
ENTRYhat ein Datum, an dem es gutgeschrieben oder belastet wurde - An
ENTRYhat eine SinglePAYEE Ein
ENTRYkann einem zugeordnet werdenBUDGET CATEGORYA
CREDIThat einen Betrag vonENTRY- A
CREDIThat eine Beschreibung derENTRY - A
CREDITkann in Zukunft geplant werden A
CREDITkann in Häufigkeit und / oder Menge erneut auftretenA
DEBIThat einen Betrag vonENTRY- A
DEBIThat eine Beschreibung derENTRY - A
DEBITkann in Zukunft geplant werden A
DEBITkann in Häufigkeit und / oder Menge erneut auftretenA
PAYEEhat einen NamenA
BUDGEThat vieleBUDGET CATEGORIESA
BUDGETkann nur einem einzelnen Kalendermonat zugeordnet werdenA
BUDGET CATEGORYkann viele enthaltenENTRIES- A
BUDGET CATEGORYhat einen Namen A
BUDGET CATEGORYhat einenBUDGETBetragA
FORECASThat ein Startdatum- A
FORECASThat ein Enddatum - A
FORECASThat ein Anfangsgleichgewicht - A
FORECASThat vieleFORECASTED DAYS A
FORECASThat eine SingleFORECASTED BUDGETA
FORECASTED DAYhat ein einziges Datum- A
FORECASTED DAYkann viele habenFORECASTED DEBITS A
FORECASTED DAYkann viele habenFORECASTED CREDITSA
FORECASTED DEBIThat einen Betrag- A
FORECASTED DEBIThat eine Beschreibung - A
FORECASTED DEBIThat aFORECASTED BUDGET CATEGORY - A
FORECASTED DEBIThat eine SinglePAYEE A
FORECASTED DEBITkann wiederkehrenA
FORECASTED CREDIThat einen Betrag- A
FORECASTED CREDIThat eine Beschreibung - A
FORECASTED CREDIThat aFORECASTED BUDGET CATEGORY - A
FORECASTED CREDIThat eine SinglePAYEE A
FORECASTED CREDITkann wiederkehrenA
FORECASTED BUDGEThat vieleFORECASTED BUDGET CATEGORIESA
FORECASTED BUDGET CATEGORYkann viele habenPAYEESA
PAYEEhat einen Namen
Beispieldaten
+----------------+----------+------------------+----------------+---------------+--------------+------------------+
| 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 |
+----------+-------------+--------------+---------------+-----------------+------------------+
Aktuelles Datenbankdesign
Ich dachte, es wäre hilfreich zu wissen, WARUM ich etwas getan habe, damit Sie meine Logik und Argumentation verstehen können.
- Jedes Budget kann mehr als 1 Budgetkategorie enthalten. Ich habe eine
isActiveSpalte zu beiden hinzugefügtBudgetsundBudgetCategoriesfür den Fall, dass ich ein anderes Budget oder eine andere Budgetkategorie reaktivieren möchte. - Ich habe Transaktionen in zwei sehr ähnliche geteilte Tabellen aufgeteilt,
DebitsundCreditswie ich sah, gab es zwei Arten von Transaktionen. - Um geplante oder wiederkehrende Transaktionen zuzulassen und zu verfolgen, habe ich eine
ScheduledTransactionsTabelle erstellt, in der ich zwei verschiedene Beträge haben konnte, einen erwarteten Betrag inScheduledTransactionsund einen tatsächlichen Betrag in entwederDebitsoderCredits.
- Ich nahm an, dass jede Prognose ein Start- und Enddatum sowie eine Startbilanz benötigen würde.
- Jeder Tag müsste prognostiziert werden, um die Summe der Belastungen und Gutschriften bestimmen zu können.
- Ich denke, ich hätte die anderen Tabellen verwenden und ein paar isForecasted Columns hinzufügen können, und es hätte genauso funktioniert. Ich habe mich entschieden, diesen Weg nicht zu gehen, um die beiden zu entkoppeln, falls Änderungen vorgenommen werden müssten und wenn dies eine groß angelegte Anwendung wäre, die große Prognosen in dieselben Tabellen liest und schreibt wie tatsächliche Transaktionen, von denen ich denke, dass sie a verursachen würden Protokoll der Leistungsprobleme.

