Hiho,
ich programmiere zur Zeit eine Abrechnungssoftware und nun frage ich mich, ob es evtl. eine bessere Lösung gibt als die meine bisherige Idee. Es dreht sich um den Punkt, wie ich den Kontostand aktuell halte.
Zur Anwendung:
- Es existieren verschiedene Konten mit verschiedenen Kontoständen
- Der Kontostand variert auf Grund der Abrechnungen und Zuzahlungen
- Es existieren mehrere Nutzer, welche Bestellungen aufgeben können in verschiedenen Kategorien. Die Kategorien besitzen unterschiedliche Tabellen
Zur den Tabellen der Datenbank ( Unwichtige Felder entfernt)
- user (id, username, passwort,...)
- account (id,...)
- accountvalue (id,accountid,value)
- order (id, userid,...)
- article_hardware (id,price,amount,...)
- article_software (id,price,amount,...)
- article_....
Zum Ablauf
- Konto wird in die Tabelle account eingetragen, damit verbunden wird der aktuelle Kontostand in die Tabelel accountvalue eingetragen.
- Bestellung werden in die Tabelle order eingetragen. Artikel, welche der Bestellung hinzugefügt werden, in die entsprechenden Tabellen.
- Wird die Bestellung genehmigt, so errechnet man den Gesamtwert der Bestellung und fügt in der Tabelle accountvalue eine neue Reihe mit dem akuellen Kontostand ein.
- Wird auf einem Konto ein Betrag eingezahlt, so wird ebenfalls in der Tabelle accountvalue in neuer Wert eingetragen.
Es werden immer die absoluten Zahlen in der Tabelle accountvalue eingetragen ( 1000,00, 788,45, 487,11, 905,54 ). So kann man jederzeit in einer Archivfunktion die Kontoumstze verfolgen.
Nun meine Frage an euch: Ist diese Strukturierung so sinnvoll? Ich überlege jetzt zwei Tagen, ob man vielleicht die Werte vielleicht auch relativ eintragen soll, sprich 1000,00, -211,55,... ) oder, was eigentlich in meinen Augen am sinnvollsten ist den Kontostand direkt aus den einzelnen Bestellung berechnen zu lassen - Damit müßte ich dann allerdings riesige Joins nutzen und daher frage ich mal lieber euch.
Es handelt sich im übrigen um eine Intranetanwendung, so dass Hardwareperformance keine große Rolle spielt.
Gruß
Reimer
ich programmiere zur Zeit eine Abrechnungssoftware und nun frage ich mich, ob es evtl. eine bessere Lösung gibt als die meine bisherige Idee. Es dreht sich um den Punkt, wie ich den Kontostand aktuell halte.
Zur Anwendung:
- Es existieren verschiedene Konten mit verschiedenen Kontoständen
- Der Kontostand variert auf Grund der Abrechnungen und Zuzahlungen
- Es existieren mehrere Nutzer, welche Bestellungen aufgeben können in verschiedenen Kategorien. Die Kategorien besitzen unterschiedliche Tabellen
Zur den Tabellen der Datenbank ( Unwichtige Felder entfernt)
- user (id, username, passwort,...)
- account (id,...)
- accountvalue (id,accountid,value)
- order (id, userid,...)
- article_hardware (id,price,amount,...)
- article_software (id,price,amount,...)
- article_....
Zum Ablauf
- Konto wird in die Tabelle account eingetragen, damit verbunden wird der aktuelle Kontostand in die Tabelel accountvalue eingetragen.
- Bestellung werden in die Tabelle order eingetragen. Artikel, welche der Bestellung hinzugefügt werden, in die entsprechenden Tabellen.
- Wird die Bestellung genehmigt, so errechnet man den Gesamtwert der Bestellung und fügt in der Tabelle accountvalue eine neue Reihe mit dem akuellen Kontostand ein.
- Wird auf einem Konto ein Betrag eingezahlt, so wird ebenfalls in der Tabelle accountvalue in neuer Wert eingetragen.
Es werden immer die absoluten Zahlen in der Tabelle accountvalue eingetragen ( 1000,00, 788,45, 487,11, 905,54 ). So kann man jederzeit in einer Archivfunktion die Kontoumstze verfolgen.
Nun meine Frage an euch: Ist diese Strukturierung so sinnvoll? Ich überlege jetzt zwei Tagen, ob man vielleicht die Werte vielleicht auch relativ eintragen soll, sprich 1000,00, -211,55,... ) oder, was eigentlich in meinen Augen am sinnvollsten ist den Kontostand direkt aus den einzelnen Bestellung berechnen zu lassen - Damit müßte ich dann allerdings riesige Joins nutzen und daher frage ich mal lieber euch.
Es handelt sich im übrigen um eine Intranetanwendung, so dass Hardwareperformance keine große Rolle spielt.
Gruß
Reimer