SQL Datenbankprojekt Geldtransaktion - Wie DB strukturieren?

Shalom,

es geht um die Erstellung einer kleinen virtuellen Bank. Eine Tabelle mit Usern, die sich dann gegenseitig Geld schicken koennen. An sich trivial, die Frage die sich mir gerade stellt ist: Wie speichere ich den tatsaechlichen Kontostand und behalte dabei eine kongruente Datenbank?

Die Transaktionen halte ich natuerlich fest, daraus koennte ich dann bei jedem Abruf den Kontostand errechnen. Ist aber unelegant. Oder ich speichere den Kontostand nach jeder Transaktion fest in die Usertabelle. Gibt mir erheblich weniger Last beim Konostand abfragen, macht den ganzen Spass aber anfaellig fuer lustige Inkongruenzen.

Welche Methode ist eurer Meinung nach das kleinere Uebel? Oder uebersehe ich einen eleganten dritten Weg?

Ist natuerlich eher ne theoretische Ueberlegung, das Projekt laeuft in so kleinem Massstab dass beides nicht so schlimm waere ;)

Peace,
K
 
Hallo,

ich würde deine zweite Variante nehmen mir fällt spontan nur das Stichwort ACID ein (ACID). Kurz eine Transaktion in deiner Bank ist auch eine Transaktion in der Datenbank, damit mein ich Schreiben der Transaktion in die Tabelle Berechnen und Schreiben der neue Kontostände geschiet in einer Aktion wird diese durch irgend etwas unterbrochen muss man auf den Zustand zuvor zurück setzen. Ich den unter dem Stichwort ACID findet man im Netz bessere Erklärungen und sicherlich nachvollziehbare Beispiele.

MfG
 
Du kannst es vllt auch auch so machen das du alle Kontobewegungen in einer Tabelle festhälst. Also was kommt an, was geht weg. Und nach einer bestimmten Zeit sammelst du alle Datensätze eines Benutzers zusammen und rechnest den neuen Kontostand aus und schreibst ihn in die Usertabelle und danach kannst du die Transaktionen des Users löschen. Ein Nachteil ist dann vllt das du genau auspassen musst welche DS du löscht. Nicht das während du die Daten verarbeitest neue Buchungen reinkommen und du dann sagst "lösche alle Datensätze des Kunden mit ID x". Dann würde natürlich die neue Transaktion auch verschwinden.
Du kannst auch statt das nach ner bestimmten Zeit zu machen, auch machen wenn der User seinen Kontostand ansehen will. So kannst du auch sowas wie einen Kontoauszug realisieren, der nur die Aktionen festhält die seit dem letzen Kontoauszug passiert sind.
 
Hallo,

ich würde deine zweite Variante nehmen mir fällt spontan nur das Stichwort ACID ein (ACID). Kurz eine Transaktion in deiner Bank ist auch eine Transaktion in der Datenbank, damit mein ich Schreiben der Transaktion in die Tabelle Berechnen und Schreiben der neue Kontostände geschiet in einer Aktion wird diese durch irgend etwas unterbrochen muss man auf den Zustand zuvor zurück setzen. Ich den unter dem Stichwort ACID findet man im Netz bessere Erklärungen und sicherlich nachvollziehbare Beispiele.

MfG

Sehe ich genauso. Das ist sicherlich die einfachste Variante und wenn du dazu Transaktionen verwendest bist du auch sicher vor Inkonsistenzen.
 
Zurück
Oben