2014-02-24 27 views
0

想象一下,您需要實施一個記錄您的支票帳戶交易的系統。一般來說,交易按您的賬單上的月份分組。每個月都有一個期初餘額和一個期末餘額。開始日期和結束日期之間的每筆交易都會增加或減少餘額。你想能夠告訴你目前的平衡。什麼是存儲財務分類帳的好方法?

代表這些數據的好方法是什麼?我想出了這兩個基本選擇:

  • 所有交易的一張大表。要確定當前餘額,請總結所有交易。大的缺點:交易列表越長,它越慢。所以我懷疑這不是銀行會做什麼,或者任何實施這個計劃的人。

  • 與以前相同,但是具有額外的「快照」信息,例如, 「月底餘額」表。這樣,爲了確定當前餘額,只有當前月份的交易需要被添加到最近的快照中,這要快得多。缺點是,如果交易遲到或者過去記錄不正確,則快照必須更新。 (這不應該發生的銀行過於頻繁 - 我希望 - ,但如果您的會計期間可能會爲其他人 - 像你的私人生活 - 長於一個月)

我想知道現實世界的系統如何做到這一點。

+0

我認爲這個問題屬於http://dba.stackexchange.com/ –

+0

這是一個數據建模/表示問題,而不是一個dba問題恕我直言。甚至不直接關係到關係數據庫本身... –

+0

嗯,我有點希望我錯了,不是我的領域。 :) –

回答

2

大多數銀行做交易及餘額如下:

Transactions (acct,date,tran_code,amount....) 
Balances (acct, date, ledger_Bal,avail_bal....) 

餘額一般日常拍攝,並且通常反映的一天(在一天結束時處理結束總帳/可用餘額,使用事務的總和和前一天餘額計算新的餘額)。每日餘額大大減少了需要每天運行的流程相關的開銷(如計算透支費用)。

當然還有許多其他的表格用於其他相關信息。有趣的是,平衡表通常比交易表大,因爲大多數系統處理每日餘額,無論當天是否有交易。

1

您可能只需要三個主表,即一個用於Account,一個用於Transactions,另一個用於Corrections

所以你很可能與該場沿着這些表如下所示:

Account (AcctNo, AcctName, Address, Street, State, Zip, AcctCreationDate, LastBalance) 
Transactions (TransNo, AcctNo, TransDate, TransType, TransAmount, EndingBalance, AgentID) 
TransactionCorrection (TransCorrID, RefTransNo, RefAcctNo, forTransDate, AgentID) 

你也許可以添加誰做的交易,並校正以及用戶。

Agent(AgentID, AgentLastname, AgentFirstname) 
相關問題