Melvin Cowznofski: Tabellenstrukturen für Haushaltsbuch gesucht

Beitrag lesen

Hallo,

nachdem ich kürzlich meine Link-/Lesezeichensammlung erfolgreich auf eine Online Datenbank transferiert habe, will ich mich nun in meinem nächsten Projekt mit einem etwas komplexeren Thema beschäftigen: Ich möchte sowas wie ein Haushaltsbuch, eine privae Finanzverwaltung, basierend auf PHP und MySQL, verwirklichen.

Dazu habe ich mir überlegt, nach welcher Datenbank-/Verarbeitungslogik ich das anlege und welche Tabellen ich dazu benötige. Nach längerem Überlegen habe ich mich einstweilen für folgende Struktur entschlossen, zu der ich gerne Eure Meinung hören würde:

Für das komplette Projekt verwende ich insgesamt 7 Tabellen, welche folgendermaßen aufgebaut sind:

1.) Tabelle "Cashflows"

* ID ('1' oder '2')
* Cashflow ('Einnahme' oder 'Ausgabe')

2.) Tabelle "Eigene Konten"

* ID (zB. '3')
* Name (zB. 'Citybank Gehaltskonto', 'Hypo Bausparvertrag', ...)
* aktueller Kontostand (zB. '23.84')

3.) Tabelle "Finanzpartner"

* ID (zB. '21')
* Name (zB. 'Blumenhandlung HUBER', 'ALDI', 'HORNBACH Baumarkt', ...)

4.) Tabelle "Buchungskategorien"

* ID (zB. '3')
* Buchungskategorie (zB. 'Lebensmittel', 'Theaterkarten', 'Gehalt', 'Weihnachtsgeschenk', ...)
* Parent ID (Für die Verwendung von Haupt- und Unterkategorien)

5.) Tabelle "Transaktionen"

* ID (zB. '323')
* Datum (zB. '2013-11-25')
* Beteiligtes eigenes Konto (zB. '2')
* Beteiligter Finanzpartner (zB. '12')
* Cashflow (zB. '1')
* Gesamtbetrag (z. '231.12')

6.) Tabelle "Buchungen"

* ID (zB. '634')
* Transaktions ID (zB. '323')
* Cashflow (zB. '1')
* Buchungskategorie (zB. '12')
* Betrag (zB. '23.89')

7.) Tabelle "Interne Umbuchungen"

* ID (zB. '232')
* Datum (zB. '2013-11-25')
* von eigenem Konto (zB. '2')
* nach eigenes Konto (zB. '3')
* Betrag (z. '100.00')

Das System dahinter: Jeder Transfer von meinem Geld an wen anderen oder jede Einnahme von außerhalb ist _eine_ Transaktion. Jede Transaktion besteht aus einer oder mehrere Buchungen. Das Datum der Zahlung sowie die Information, an wen gezahlt wurde bzw. woher Geld egkommen ist, steht deshalb in der Tabelle "Transaktionen". In der Tabelle "Buchungen", in der ja jeder einzelne Rechnungspunkt ein neuer Datensatz ist, stehen dann nur die Kategorie und der Teilbetrag, also kein Datum und kein Empfänger/Sender.

Als praktisches Beispiel: Angenommen, ich komme vom 'ALDI' nach Hause und habe einen Kassenbon, auf dem 3 Rechnungspunkte stehen. Also zB. 2 Bananan, 1 Pck. Milch und 1 Korb Weintrauben. Dann würde das in der Tabelle "Transaktionen" zu 1 neuen Eintrag führen und in der Tabelle "Buchungen" zu 3 Einträgen. Bei einer Transaktion, die aus einem einzigen Posten besteht, kommt es zu 1 neuen Eintrag bei den Transaktionen sowie 1 neuen Eintrag bei den Buchungen.

Nur die Cashflowart, also ob es sich um eine Einnahme oder Ausgabe handelt, existiert in _beiden_ Tabellen. Denn es kann ja sein, dass man zB. im Supermarkt Flaschenpfand zurückbekommt, dann stünde das als Einnahme auf der Rechnung. Trotzdem ist die Gesamtrechnung, also hier die Transaktion, eine Ausgabe.

Von Euch würde ich jetzt gerne wissen, wie Ihr das lösen würdet. Wie gesagt, mir geht es nur um den logischen Aufbau und die Tabellenstruktur, noch nicht um irgendwelche MySQL Befehle. Bei meinen Überlegungen hatte ich Modelle mit mehr und mit weniger Tabellen, aber sp wie hier vorgestellt finde ich es persönlich momentan am Besten. Jetzt wäre ich halt auf Eure Meinung dazu gespannt.

Mit lieben Grüßen

Melvin Cowznofski

--

Melvin Cowznofski
What – me worry?