2013-01-07 99 views
1

我們的團隊需要跟蹤庫存,實質上是一個內部創建的ERP系統。我們需要經常訪問系統中某個倉庫某一特定物料的庫存量,並且能夠追蹤庫存和時間的變化。庫存管理表結構

最初的想法是隻需要調整表並計算當前的庫存,每次我們看它。通過我們的測試,很明顯的是,考慮到我們每天要做多少次這樣的計算,這個計算過於昂貴。

我們的新想法是有一個調整表與歷史,但也保持一個表與當前的庫存是什麼。當進行調整時,我們的程序將同時更新調整表和當前庫存表。我不太喜歡這個解決方案,因爲它需要2次更新才能做出更改。如果失敗會怎樣?當調整不能反映庫存表中的內容時,你如何協調一致?

有沒有人有更好的方法?

+1

我建議在事務中作出更新,因此,如果一個更新成功,但其他失敗,兩者都將被回滾。 –

+0

您也可以在一張表的插入處使用觸發器,然後當前表中的更新將插入歷史記錄 – wishper

+0

由於程序設計的原因,我無法將它們都包裝在事務中。你一次只能更新一張桌子(我知道的愚蠢的設計......我正在改變它,但那需要一段時間)。 – pinguinos

回答

2

如果您無法在單個事務中執行所有必要的更新,則需要一個管理過程(而不是聲明性約束)來確保數據是正確的。例如,您可以運行一個cron作業,根據細節測試總數。你多久做一次這取決於cron作業運行的時間以及應用程序可以容忍的cron作業的時間。

我更喜歡在細節表加上定期cron工作的觸發器。讓觸發器調整每筆交易的總金額。 cron作業確保沒有錯過任何更新。 (大多數DBMS會讓你禁用觸發器進行維護; cron任務會提醒你,當你不可避免地忘了重新啓用它們。)