Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Projekt bazy danych:Obliczanie salda konta

Odwieczny problem, który nigdy nie został elegancko rozwiązany.

Wszystkie pakiety bankowe, z którymi pracowałem, przechowują saldo w jednostce konta. Obliczenie go na bieżąco z historii ruchu jest nie do pomyślenia.

Właściwy sposób to:

  • Tabela ruchu zawiera transakcję „bilansu otwarcia” dla każdego konta. Będziesz tego potrzebować za kilka lat, kiedy będziesz musiał przenieść stare ruchy z tabeli aktywnych ruchów do tabeli historii.
  • Eencja konta ma pole salda
  • W tabeli ruchu znajduje się wyzwalacz, który aktualizuje salda kont uznanych i obciążonych. Oczywiście ma kontrolę nad zaangażowaniem. Jeśli nie możesz mieć wyzwalacza, musi istnieć unikalny moduł, który zapisuje ruchy pod kontrolą zobowiązań
  • Masz program „sieci bezpieczeństwa”, który możesz uruchomić w trybie offline, który ponownie oblicza wszystkie salda i wyświetla (i opcjonalnie koryguje) salda błędne. Jest to bardzo przydatne w testowaniu.

Niektóre systemy przechowują wszystkie ruchy jako liczby dodatnie i wyrażają kredyt/debet przez odwrócenie pól z/do lub za pomocą flagi. Osobiście wolę pole kredytowe, pole debetowe i podpisaną kwotę, co znacznie ułatwia śledzenie cofnięć.

Zauważ, że te metody dotyczą zarówno gotówki, jak i papierów wartościowych.

Transakcje papierami wartościowymi mogą być znacznie trudniejsze, szczególnie w przypadku działań korporacyjnych, będziesz musiał uwzględnić pojedynczą transakcję, która aktualizuje salda jednego lub więcej kupujących i sprzedających, ich salda pozycji bezpieczeństwa i ewentualnie brokera/depozytariusza.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Brak wsparcia dla OVER w MS SQL Server 2005?

  2. jak rozdzielić ciąg na różne kolumny?

  3. Wykonaj dynamiczne zapytanie za pomocą go w sql

  4. Jak znaleźć format daty używany w bieżącej sesji w SQL Server (T-SQL)

  5. Wyszukiwanie pełnotekstowe nie działa, jeśli dołączono słowo zatrzymania, mimo że lista słów zatrzymania jest pusta