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
ACCOUNT
kann viele habenENTRIES
Ein
ENTRY
kann entweder einCREDIT
oder seinDEBIT
- An
ENTRY
hat ein Datum, an dem es gutgeschrieben oder belastet wurde - An
ENTRY
hat eine SinglePAYEE
Ein
ENTRY
kann einem zugeordnet werdenBUDGET CATEGORY
A
CREDIT
hat einen Betrag vonENTRY
- A
CREDIT
hat eine Beschreibung derENTRY
- A
CREDIT
kann in Zukunft geplant werden A
CREDIT
kann in Häufigkeit und / oder Menge erneut auftretenA
DEBIT
hat einen Betrag vonENTRY
- A
DEBIT
hat eine Beschreibung derENTRY
- A
DEBIT
kann in Zukunft geplant werden A
DEBIT
kann in Häufigkeit und / oder Menge erneut auftretenA
PAYEE
hat einen NamenA
BUDGET
hat vieleBUDGET CATEGORIES
A
BUDGET
kann nur einem einzelnen Kalendermonat zugeordnet werdenA
BUDGET CATEGORY
kann viele enthaltenENTRIES
- A
BUDGET CATEGORY
hat einen Namen A
BUDGET CATEGORY
hat einenBUDGET
BetragA
FORECAST
hat ein Startdatum- A
FORECAST
hat ein Enddatum - A
FORECAST
hat ein Anfangsgleichgewicht - A
FORECAST
hat vieleFORECASTED DAYS
A
FORECAST
hat eine SingleFORECASTED BUDGET
A
FORECASTED DAY
hat ein einziges Datum- A
FORECASTED DAY
kann viele habenFORECASTED DEBITS
A
FORECASTED DAY
kann viele habenFORECASTED CREDITS
A
FORECASTED DEBIT
hat einen Betrag- A
FORECASTED DEBIT
hat eine Beschreibung - A
FORECASTED DEBIT
hat aFORECASTED BUDGET CATEGORY
- A
FORECASTED DEBIT
hat eine SinglePAYEE
A
FORECASTED DEBIT
kann wiederkehrenA
FORECASTED CREDIT
hat einen Betrag- A
FORECASTED CREDIT
hat eine Beschreibung - A
FORECASTED CREDIT
hat aFORECASTED BUDGET CATEGORY
- A
FORECASTED CREDIT
hat eine SinglePAYEE
A
FORECASTED CREDIT
kann wiederkehrenA
FORECASTED BUDGET
hat vieleFORECASTED BUDGET CATEGORIES
A
FORECASTED BUDGET CATEGORY
kann viele habenPAYEES
A
PAYEE
hat 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
isActive
Spalte zu beiden hinzugefügtBudgets
undBudgetCategories
fü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,
Debits
undCredits
wie ich sah, gab es zwei Arten von Transaktionen. - Um geplante oder wiederkehrende Transaktionen zuzulassen und zu verfolgen, habe ich eine
ScheduledTransactions
Tabelle erstellt, in der ich zwei verschiedene Beträge haben konnte, einen erwarteten Betrag inScheduledTransactions
und einen tatsächlichen Betrag in entwederDebits
oderCredits
.
- 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.