Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Buchhaltung und Datenbankdesign, Speicherung von Soll- und Habenbetrag

Wie Sie festgestellt haben, funktioniert es nicht, eine Spalte für alles zu verwenden und dann negative Zahlen für Belastungen oder Gutschriften zu verwenden. Buchhaltungswerte sind keine Skalare – sie sind Vektoren, die eine Aufzählung (Soll oder Haben) und eine Festkomma-Dezimalzahl (die positiv oder negativ sein kann) enthalten.

Jede Buchhaltungstransaktion muss eine gleiche Anzahl von Belastungen und Gutschriften enthalten. Ist dies nicht der Fall, handelt es sich nicht um eine gültige Transaktion.

Ebenso ist ein Kontostand die gleiche Art von Vektor. Zu jedem Zeitpunkt müssen die Gesamtbelastungen und Gesamtkredite aller Konten in einem Buchhaltungssystem gleich sein, sonst geht etwas kaputt.

Eine andere Betrachtungsweise besteht darin, sich einen Buchwert als eine komplexe Zahl vorzustellen, bei der Belastungen real und Gutschriften imaginär sind. Das bedeutet, dass 4 Belastungen + 3 Gutschriften =4 + 3i. Dies macht deutlich, dass Sie nicht können Vereinfachen Sie das weiter, indem Sie den imaginären Term in einen negativen realen Term reduzieren - es ist nicht dieselbe Zahlenstrahlachse. Es wäre dasselbe wie zu behaupten, dass 4 + 3i =4 - 3. Keine gültige Mathematik.

Wenn eine Datenbank komplexe Zahlen nativ speichern könnte, dann wären komplexe Zahlen tatsächlich eine gute Möglichkeit, Buchhaltungsdaten zu speichern, würden wahrscheinlich viel von der Verwirrung beseitigen, die Programmierer normalerweise über Buchhaltung haben, und würden zu allen möglichen interessanten Eigenschaften führen. Beispielsweise hätte eine ausgeglichene Transaktion immer einen Phasenwinkel von 45 Grad, ebenso wie ein ausgeglichener Kontenrahmen. Aber die meisten Datenbanken verlangen, dass Sie die komplexe Zahl vor dem Speichern in ihre realen und imaginären Terme zerlegen und diese Terme in verschiedenen Spalten speichern – in der Welt der Buchhaltung lauten die Namen dieser beiden Spalten „Soll“ bzw. „Haben“.

P.S.:Mir ist bewusst, dass einige Leute negative Werte für Gutschriften und positive Werte für Belastungen verwenden, aber dies erfordert große Sorgfalt, um es richtig zu machen, und ist zerbrechlich. Sie müssen jedes Mal, wenn Sie es berühren, den normalen Saldo jedes Kontos im Auge behalten – da zum Beispiel ein Aktivkonto einen normalen Sollsaldo hat, können Sie eine positive Zahl verwenden, um es zu erhöhen. Aber ein Verbindlichkeitskonto hat einen negativen Normalsaldo, sodass eine Erhöhung des Werts dieses Kontos eine negative Zahl ist. Sie können diese beiden Werte zu keinem Zeitpunkt zusammenzählen – sie sind nicht dasselbe. Eine Lastschrift ist etwas, das Sie haben, während ein Guthaben etwas ist, das Sie schulden. Beides in dieselbe Spalte einer Datenbanktabelle zu schreiben, riecht schlecht.