Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Datenstruktur für Bankkonto (https://www.delphipraxis.net/171798-datenstruktur-fuer-bankkonto.html)

NormanNG 26. Nov 2012 08:06

Datenstruktur für Bankkonto
 
Hallo

ich bin unsicher, wie ich eine klassische Bankkonto-Struktur elegant abbilden kann.

Konto
o alKonto
o Bezeichnung

Buchung
o alBuchung
o alKonto
o Flag Soll/Haben
o Betrag

Zu jedem Buchungssatz gehören immer mindestens zwei Buchungen.

Mein Problem: der Konto-Saldo
Soll ich den immer wieder neu berechen, oder in einem Feld am Konto mitführen?
Wie soll ich einen Periodenwechsel (z.B. Jahresende) darstellen?

Kann mir bitte jemand auf die Sprünge helfen?

Union 26. Nov 2012 08:13

AW: Datenstruktur für Bankkonto
 
Ich würd mal das Flag Soll/Haben weglassen und stattdessen positive oder negative Zahlen verwenden. Was S/H ist hängt nämlich von der Sichtweise ab (Sicht Bank/Kunde).

In echten Bankanwendungen werden die Rechenwerte immer mitgeführt (Performance), und auch um Abweichungen und damit potentielle Fehler finden zu können.

Beim Jahreswechsel buchst Du den Saldo erst aus und dann wieder ein. Am besten über dafür vorgesehene Abschluss- und Eröffnungskonten.

NormanNG 26. Nov 2012 08:25

AW: Datenstruktur für Bankkonto
 
Dank für die schnelle Antwort.

Das mit dem S/H muss ich dann nochmal überdenken.

Mein eigendliches Problem ist aber, wohin mit dem Konto-Saldo?

Nersgatt 26. Nov 2012 08:33

AW: Datenstruktur für Bankkonto
 
Wenn Du es machst, wie vorgeschlagen (also negativ/positiv buchen), dann ist der Saldo immer ganz einfach
Code:
SELECT SUM(BETRAG) AS SALDO FROM BUCHUNGEN
Also einfacher kann die Saldoberechnung gar nicht sein. Daher würde ich ihn immer live berechnen, sonst hast Du ja eine Redundanz drin.
Nur wenn Du wirklich Performanceprobleme hast (unwarscheinlich), könntest Du den Saldo per Trigger in den Kopf schreiben.

NormanNG 26. Nov 2012 08:43

AW: Datenstruktur für Bankkonto
 
OK, dann darf eine "Archivierung" der Daten z.B. am Jahresanfang nie stattfinden. Es bleibt also immer alles "drin".

Wie machen das die Banken?
Dort müssen doch irgendwann mal alte Daten zur Seite gelegt (sprich archiviert) werden, oder nicht?

Union 26. Nov 2012 08:49

AW: Datenstruktur für Bankkonto
 
Ja, es wird natürlich immer archiviert. Und es werden bestimmte Werte (u.a. der Saldo) immer redundant mitgeführt. Dadurch kann man Probleme und Fehler im Tagesabschluss erkennen, wenn man das Ergebnis der SUM() mit dem gespeicherten Saldo vergleicht.

Blup 26. Nov 2012 09:47

AW: Datenstruktur für Bankkonto
 
Zwischen Soll- und Habenbuchung würde ich unabhängig vom Vorzeichen des Betrages unterscheiden.
So kann man Buchung und Storno besser darstellen z.B.:
- Soll Debitor, Haben Erlöskonto, positiver Betrag -> Rechnungsausgang
- Soll Debitor, Haben Erlöskonto, negativer Betrag -> Storno Rechnungsausgang
- Soll Sachkonto-Bank, Haben Debitor, positiver Betrag -> Zahlungseingang Lastschrift
- Soll Sachkonto-Bank, Haben Debitor, negativer Betrag -> Storno Zahlungseingang Lastschrift

Zusätzliche Saldentabellen bringen auch die Möglichkeit für zusätzliche Fehler.
Wenn nicht tausende Buchungen je Konto zu erwarten zu erwarten sind, den Saldo immer neu berechnen.

Periodenwechsel/Archivierung
- ein Konto "Saldo 2012" einrichten
- zum Jahreswechsel Saldo jedes Kontos auf "Saldo 2012" buchen
(diese und alle im Saldo berücksichtigten Buchungen wandern später ins Archiv)
- zum Jahresanfang von "Saldo 2012" wieder auf die einzelne Konten
(diese und alle neueren Buchungen bleiben im aktuellen Datenbestand)

Sir Rufo 26. Nov 2012 09:52

AW: Datenstruktur für Bankkonto
 
Bei den Buchungen fehlt mindestens ein Feld: das Buchungsdatum
(Banken haben normalerweise 2 Felder: Buchungsdatum, Valutadatum)

Weiterhin gibt es noch mindestens eine Tabelle mit den Salden pro Konto und Buch-Jahr und oder Buch-Monat, Buch-Tag.

Wird eine Buchung (Datensatz in der Tabelle Buchungen) eingebucht so wird nicht nur der Datensatz eingetragen, sondern auch alle betroffenen Salden entsprechend angepasst.

Dazu müssen aber die Salden nicht erneut mit allen Buchungen berechnet werden, sondern zum Saldo wird der neue Buchwert einfach hinzu addiert.

Bei einem Tagesabschluss werden dann alle Buchungen aufaddiert und mit den Salden verglichen (diese müssten ja eigentlich gleich sein) und bei Bedarf auch angepasst. Abweichungen sind auch ein Hinweis auf Probleme in der Buchungsroutine.

Sir Rufo 26. Nov 2012 09:59

AW: Datenstruktur für Bankkonto
 
Zitat:

Zitat von Blup (Beitrag 1192941)
So kann man Buchung und Storno besser darstellen z.B.:

AFAIK buchen Banken niemals einen Storno auf einem Kundenkonto.

Es werden Rückbuchungen erstellt, die den alten Vorgang zurücknehmen.
Dabei handelt es sich aber um eine eigenständige Buchung und keinen Storno.

NormanNG 26. Nov 2012 16:24

AW: Datenstruktur für Bankkonto
 
OK.
Wahrscheinlich berechne ich die Saldo jeweils neu und führe einen "Kontroll-Saldo" am Konto mit, um ggf. Fehler in den Buchungsroutinen sofort erkennen zu können.

Danke für die Antworten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz