我需要一些編碼建議,因爲我擔心我正在創建低效的臃腫代碼。Django webapp - 跟蹤財務賬戶信息
我有一個跟蹤公司的財務數據的web應用程序。我有一張名爲Accounts
的表格,其中包含與收入,現金,應付賬款,應收賬款等典型財務賬戶相對應的記錄集合。這些記錄只是名字持有者被指定爲外鍵。
我也有一個名爲Account_Transaction
的表格,它記錄Accounts
中所有賬戶中所有賬戶的所有交易。本質上,Account_Transaction
表格完成所有繁重的工作,同時指出各種帳戶被更改。
例如,當一個銷售而成,兩條記錄在Account_Transaction
表中創建。一筆增加現金餘額的記錄和一筆增加收入餘額的記錄。
Trans Record 1:
Acct: Cash
Amt: 50.00
Date: Nov 1, 2011
Trans Record 2:
Acct: Revenue
Amt: 50.00
Date: Nov 1, 2011
所以,現在我有兩個記錄,但他們都指向不同的帳戶。現在,如果我想查看我的現金餘額,我必須查看每個Account_Transaction
記錄並檢查記錄是否處理現金。如果是這樣,請添加/減去該記錄的數量並移至下一個記錄。
在一個典型的工作日,有可能是向上200-300交易的類似上面。因此,Account_Transaction
表格將快速增長。幾個月後,表格可能會有幾千條記錄。當然,這對於數據庫來說並不多,但是,每次用戶想要知道應收賬款的當前餘額時,我都必須遍歷整個Account_Transaction
表,以總結處理賬戶名稱「賬戶應收賬款」。
我不確定我是否以最優化的方式設計了這款產品。我曾考慮爲每個賬戶(一個用於「現金」,另一個用於「應收賬款」,另一個用於「收入」等等)創建一個不同的表格,但通過這種方法,我創建了15-20個具有完全相同參數的表格,而不是他們的名字。這似乎是糟糕的設計,所以我去了這個Account_Transaction
想法。
這似乎是處理這種數據的適當方式嗎?有沒有更好的方式來做到這一點,我真的應該採用?
謝謝!
因此,當我對查詢集執行篩選時,該操作不是太計算量太大?我打算使用過濾器運算符,但只是假設這將是一個總結一個帳戶的所有記錄的低效率方式。 在我尋找別人如何做這件事時,我遇到了一篇有趣的文章,討論如何最好地解決這個設計問題。對於其他可能會發現它很有用的人員:http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html – Garfonzo
如果您已正確爲表格建立索引,則操作不會很重。你甚至可以通過Djangos模型語法指定索引,它會爲你設置它們。我認爲緩存結果在某些情況下也可以發揮作用,但是您需要對失效做出非常嚴格的規定。 – Bartek