2013-11-21 15 views
0

讓我在提出問題之前給出上下文。 我們開發發票系統,我們創建發票,驗證它們並付款。依靠數據庫中的一個字段

數據庫架構包含以下表格:

發票
InvoiceItems
ReceivedItems。

所以我們驗證每個發票項目的數量,並與收到的項目數量檢查(這可能是相等的,或大或小 的過程是這樣的:。

讓的說發票項目數量爲50

我們有所謂的信貸發票項目被記入在創建時的發票項目數量的字段。(說50數量有待驗證)

我們收到來自各種來源的項目,我們更新收到物品時他們來了。 說我們最初有25件物品。 因此,我們將發票項目的貸方減少25,並將收到的項目標記爲完成。 後來我們得到了其他25個,我們通過減少剩餘的25個信用來驗證。

所以信用現在是0. 這意味着發票已經完全驗證。所以我們發送付款發票。

由於最近發生的錯誤事件發生後。

我們沒有將發票項目的信用設置爲發票項目數量。創建時其基本上爲零。 所以我們的系統認爲它的驗證和付款。 我們在兩個月後才意識到發票沒有得到驗證。

所以現在我們有多個檢查拒絕而產生的發票,如果信用證爲0

除了有多項檢查,有什麼辦法可以解決高度依賴於一列的這個問題。 (這裏發票項目上的信用爲0,並且每張發票都未經驗證支付)

我正在數據庫(模式)級別或應用程序級別尋找任何類型的解決方案。

回答

0

該問題聽起來更多地關於默認列值。您可以將該默認值設置爲null,直到顯式地顯示「我還沒有收到有關該值的數據」,然後繼續獲得該帳戶的空值(因爲任何+ null都設置爲空)。

另一種方法是創建某種標誌列,以明確地說「此行尚未處理,不要將該零作爲確定」。

此外,您可以驗證使用某些數據,例如時間戳記列或內部連接,只有在正常情況下才會生成行。

對於任何解決方案可能會促使您在模式和應用程序級重構。

相關問題