2012-03-22 100 views
1

可能重複:
Database design: Calculating the Account Balance
should the user's Account balance be stored in the database or calculated dynamically?數據庫設計:在哪裏存儲賬戶餘額?

哪裏是存儲用戶的賬戶餘額,爲什麼最好的地方?

1)「交易」表,如在時間或計算出的交易發生時

2)「帳戶」表,更新每次用戶登錄或在當時發生的事務。

+1

我會說帳戶表,因爲帳戶餘額應該與帳戶信息綁定在一起? – 2012-03-22 12:46:39

回答

1

根據規範化規則,您不應該存儲您可以從其他數據計算出的內容。

話雖如此,哪家銀行不在那裏存放呢?這是您去規範化以提高性能的地方,因爲在系統的許多部分使用餘額並且每次需要餘額時計算所有交易是不可能的。

除此之外,還有一個合併值可以在夜間進行計算,然後根據自上次合併後的交易調整價值。

+0

這不僅是不可能的,它也是不合法的。你並不真正需要賬戶價值,但是號碼是AND TIMESTAMP。你需要知道在那個時間點的價值是爲了審計目的。 – TomTom 2012-03-22 12:55:33

+0

@TomTom感謝您的法律洞察力。我純粹來自技術方面,但你也必須考慮合法。 – Aliostad 2012-03-22 12:57:12

+2

是的。記住賬戶報表。即使你幾周後取消交易,1月13日的交易也必須保持一致;)這就是爲什麼你永遠不能改正價值,並且要等待櫃檯交易。另外,您可能有交易NOT VALID YET(將來的到期日);) – TomTom 2012-03-22 12:59:48