Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Desain basis data:Menghitung Saldo Akun

Masalah kuno yang tidak pernah diselesaikan dengan elegan.

Semua paket perbankan yang saya kerjakan menyimpan saldo dengan entitas akun. Menghitungnya dengan cepat dari riwayat pergerakan tidak terpikirkan.

Cara yang benar adalah:

  • Tabel pergerakan memiliki transaksi 'saldo awal' untuk setiap akun. Anda akan membutuhkan ini dalam waktu beberapa tahun ketika Anda perlu memindahkan gerakan lama dari tabel gerakan aktif ke tabel sejarah.
  • Entitas akun memiliki bidang saldo
  • Ada pemicu pada tabel gerak yang memperbarui saldo akun untuk akun yang dikredit dan didebit. Jelas, ia memiliki kontrol komitmen. Jika Anda tidak dapat memiliki pemicu, maka perlu ada unik modul yang menulis gerakan di bawah kendali komitmen
  • Anda memiliki program 'jaring pengaman' yang dapat dijalankan secara offline, yang menghitung ulang semua saldo dan menampilkan (dan secara opsional mengoreksi) saldo yang salah. Ini adalah benteng yang sangat berguna.

Beberapa sistem menyimpan semua pergerakan sebagai angka positif, dan mengekspresikan kredit/debit dengan membalik bidang dari/ke atau dengan bendera. Secara pribadi, saya lebih suka bidang kredit, bidang debit, dan jumlah yang ditandatangani, ini membuat pembalikan lebih mudah diikuti.

Perhatikan bahwa metode ini berlaku untuk uang tunai dan surat berharga.

Transaksi sekuritas bisa jauh lebih rumit, terutama untuk aksi korporasi, Anda perlu mengakomodasi satu transaksi yang memperbarui satu atau lebih saldo kas pembeli dan penjual, saldo posisi keamanannya, dan mungkin juga pialang/penyimpanan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara membaca berkomitmen dan membaca berulang

  2. bagaimana cara memisahkan string menjadi kolom yang berbeda?

  3. 2 Cara Mengembalikan Semua Fungsi Buatan Pengguna dalam Database SQL Server

  4. DATENAME() Contoh di SQL Server

  5. Perbedaan antara #temptable dan ##TempTable?