Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Проектиране на база данни:Изчисляване на салдото по сметката

Един вековен проблем, който никога не е бил решен елегантно.

Всички банкови пакети, с които съм работил, съхраняват салдото в лицето на сметката. Изчисляването му в движение от историята на движението е немислимо.

Правилният начин е:

  • Таблицата за движение има транзакция „откриващо салдо“ за всяка сметка. Това ще ви е необходимо след няколко години, когато трябва да преместите стари движения от таблицата с активни движения в таблица с история.
  • Обектът на сметката има поле за баланс
  • В таблицата за движение има задействане, което актуализира салда по сметки за кредитираните и дебитираните сметки. Очевидно има контрол на ангажиментите. Ако не можете да имате тригер, тогава трябва да има уникален модул, който записва движения под контрол на ангажимента
  • Имате програма за „безопасна мрежа“, която можете да стартирате офлайн, която преизчислява всички салда и показва (и по избор коригира) грешни баланси. Това е много полезна проверка.

Някои системи съхраняват всички движения като положителни числа и изразяват кредита/дебита чрез обръщане на полетата от/до или с флаг. Лично аз предпочитам кредитно поле, дебитно поле и подписана сума, това прави сторниранията много по-лесни за проследяване.

Забележете, че тези методи се отнасят както за пари в брой, така и за ценни книжа.

Транзакциите с ценни книжа могат да бъдат много по-трудни, особено за корпоративни действия, ще трябва да приемете една транзакция, която актуализира един или повече парични салда на купувача и продавача, баланса на техните позиции за сигурност и евентуално брокера/депозитаря.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT DISTINCT игнорира различни случаи

  2. Неуспешно актуализиране на база данни .mdf, защото базата данни е само за четене (приложение за Windows)

  3. Как да предам XML от C# към съхранена процедура в SQL Server 2008?

  4. SQL:Изберете колони само със стойности NULL

  5. Получаване само на месец и година от SQL DATE