sql >> データベース >  >> RDS >> Sqlserver

データベース設計:口座残高の計算

    エレガントに解決されたことのない古くからの問題。

    私が使用したすべての銀行パッケージは、口座エンティティとの残高を保存します。移動履歴からその場で計算することは考えられません。

    正しい方法は次のとおりです。

    • 移動テーブルには、アカウントごとに「開始残高」トランザクションがあります。これは、古いムーブメントをアクティブなムーブメントテーブルから履歴テーブルに移動する必要がある数年後に必要になります。
    • アカウントエンティティにはバランスフィールドがあります
    • ムーブメントテーブルには、貸方勘定と借方勘定の勘定残高を更新するトリガーがあります。明らかに、それはcommitmentcontrolを持っています。トリガーを設定できない場合は、一意のが必要です。 コミットメント制御下で動きを書き込むモジュール
    • オフラインで実行できる「セーフティネット」プログラムがあります。このプログラムは、すべての残高を再計算し、誤った残高を表示(およびオプションで修正)します。これはテストに非常に役立ちます。

    一部のシステムは、すべての移動を正の数として格納し、from / toフィールドを反転するか、フラグを使用して貸方/借方を表します。個人的には、クレジットフィールド、デビットフィールド、および署名された金額が好きです。これにより、取り消しがはるかに簡単になります。

    これらの方法は、現金と有価証券の両方に適用されることに注意してください。

    証券取引は非常に難しい場合があります。特に企業の行動では、1つ以上の買い手と売り手の現金残高、それらの証券ポジションの残高、場合によってはブローカー/預託機関を更新する単一の取引に対応する必要があります。



    1. PostgreSQLデータベースを作成する方法

    2. SQLビュー

    3. MySQLで月末を取得する方法

    4. SQL Server(localdb)\v11.0の説明