sql >> Database teknologi >  >> RDS >> Sqlserver

Databasedesign:Beregning af kontosaldoen

Et ældgammelt problem, der aldrig er blevet elegant løst.

Alle de bankpakker, jeg har arbejdet med, gemmer saldoen hos kontoenheden. Det er utænkeligt at beregne det på fluen fra bevægelseshistorien.

Den rigtige måde er:

  • Bevægelsestabellen har en 'åbningsbalance'-transaktion for hver konto. Du får brug for dette om et par år, når du skal flytte gamle bevægelser ud af den aktive bevægelsestabel til en historietabel.
  • Kontoenheden har et saldofelt
  • Der er en trigger på bevægelsestabellen, som opdaterer kontosaldierne for de krediterede og debiterede konti. Det er klart, at det har engagementcontrol. Hvis du ikke kan have en trigger, så skal der være en unik modul som skriver bevægelser under forpligtelseskontrol
  • Du har et 'sikkerhedsnet'-program, du kan køre offline, som genberegner alle saldi og viser (og valgfrit retter) fejlagtige saldi. Dette er en meget nyttig fortestning.

Nogle systemer gemmer alle bevægelser som positive tal og udtrykker kredit/debet ved at vende fra/til felterne eller med et flag. Personligt foretrækker jeg et kreditfelt, et debetfelt og et underskrevet beløb, dette gør tilbageførsler meget nemmere at følge.

Bemærk, at disse metoder gælder både for kontanter og værdipapirer.

Værdipapirtransaktioner kan være meget vanskeligere, især for virksomhedshandlinger, du bliver nødt til at rumme en enkelt transaktion, der opdaterer en eller flere købers og sælgers kassebeholdninger, deres sikkerhedspositionssaldi og muligvis mægleren/depotet.



  1. Hvorfor Oracle-skærme ??? for specialtegn som åäö

  2. Sådan implementeres PostgreSQL til en Docker-container ved hjælp af ClusterControl

  3. Har du altid brug for en database til din app?

  4. Forståelse af ProxySQL-revisionsloggen