2013-12-17 38 views
-3

我對編碼有點新,並且似乎在圍繞如何有效地爲我的應用程序存儲數據而苦苦思索。 (我正在Laravel嘗試使用mySql)數據庫設計/有效管理數據

我意識到這個問題可能傾向於針對具體的意見,但我確實在尋找明顯的錯誤假設的指針,或者向着最佳實踐。

我將跟蹤大量郵件,就好像它們是批量電子郵件管理系統中的信用一樣。一個消息批次可以使用不確定數量的信用來發出全批消息。用戶

組就能如果他們有信用這麼做發送消息,一個解決方案,我想到的是有一個表:ID,user_group_id,債務/信用,reference_code - 凡user_group_id將被鏈接對於用戶所屬的組,借記/貸記欄可以保存(消息相關交易的)正數或負數,並且reference_code將跟蹤交易的類型。借方/貸方交易將出現在用戶組帳戶收到新貸方(購買的新貸記塊)的地方,或者在借款示例的情況下,批發郵件已發送。

所有這些背景導致我的問題..我仍然沒有爲user_group的可用信用數量保留單個值。在能夠發送新批次之前,我應該每次運行數據庫查詢時總結所有正面和負面交易的「會計」,以確定用戶是否「處於黑色」,以便能夠發送更多消息批次,或者我應該有一張額外的桌子,並分別保留他們可用的積分總額的結果?

如果我確實存儲了總可用積分值本身,那麼應該何時更新這個單一值,在我的應用程序執行的每個消息相關任務結束時? *用戶增加新的信用,更新總額 - 用戶發送批次,更新總數..等

回答

0

「我應該運行一個數據庫查詢每次總結積極和消極交易的所有」會計「,以確定用戶被「黑色」,以便能夠發送更多的消息批次「

1

這是一個有趣的問題。你指出的意見,但仍然有趣。數據庫設計並不是我的強項,但這裏是我如何做到的。

首先,確保完整性與INNODB表和外鍵約束。我會保留每個用戶組在用戶組表中擁有的總餘額。然後,您冷靜地創建一個交易表,其中包含交易ID,用戶組ID以及用於該交易的信用額度,以便您可以關注每個用戶組的交易歷史記錄。

只是一個想法。就像我說的,我絕不是專家。但是,記錄某種類型的日誌可能會很有用,以便在信用差異的情況下可以稍後驗證事務。您以後可以隨時使用它來重新計算剩餘的信用額以確保數字一致。

由於這些交易可能對信用卡/計費目的很重要,因此您可能還需要關閉MySQL的自動提交功能,並使用commitrollback功能來確保數據在發生錯誤時保持完好。