5個決定   決定料品進出異動檔儲存型態

         ERP系統裡,每一筆物料進出都要記錄下來,不管是進或出都要記錄下來,這個記錄檔就是料品進出異動檔。而這個料品進出異動記錄的方式,在軟體業界有2個方式,

1.集中式

2.分散式

 

1.集中式

        集中式就是將各種料品進出異動檔程式,除自己本身記錄一份外,同時將這料號進出資料寫入資料庫另外一個Table ,這個TABLE就是料品進出異動檔。它集中存放著各種異動程式傳來的料品進出資料。例:採購程式,採購A料號,除採購程式本身記錄外,另外同時將這筆A料號的採購記錄存放在上述說明的異動檔TABLE,這樣的好處是料品異動資料除本身記錄1,料品異動檔也抄寫一筆資料,2者可以互相對照,2者資料不一致表示料號進出有異常(被人偷改),可揪出來問題出來。

 

        缺點是此種程式寫法會較複雜費時,因要將一筆異動資料同時寫入三個TABLE,Insert  SQL要寫三段費時又費工。這三個TABLE 裡一個是異動程式本身,一個是上列的料號進出異動檔,另一個是記錄料品庫存量(在手量)TABLE,因為料號進出代表庫存量改變,所以,庫存量也要被修改。由於是三段SQL要一起執行,要使用SQL批次(transaction)寫法,當其中一段SQL執行失敗,那三段SQL 就要同時退出(rollback transaction),不可以一個寫入成功,另外二個寫入失敗,這樣三者數量不一致會造成庫存量大亂。

 

        另外一提的是料品異動檔永遠只有新增沒有編輯和刪除,目的是避免被使用者誤刪,我們以採購收料程式為例,採購收料是增加庫存,異動檔新增入一筆正值,如使用者在新增成功後又將這一筆刪除,程式不可以去異動裡去刪除上述新增的那筆資料,而是要在異動檔裡新增一筆負值。但如是編輯修改採購收料數量,這異動寫法就較複雜,要分二方面來說明,如修改值比原來的還高,那就要寫入一筆正值的資料(採購數量變多),但如修改值比原來的還低,那就要寫入一筆負值的資料(採購數量變少),這樣異動檔加總後數量才能等於現在採購程式所顯示的數量。也許讀者看完以上說明後,還是一頭霧水,因異動檔說起來有點複雜,改天筆者再寫一篇專門介紹料品異動程式的說明給大家看。

 

         此異動記錄方法因有相互稽核的功能效果,且使用者查詢料號進出資料時,比較不會有資料庫被LOCK的情況發生,查詢速度會比分散式的還快,因此,市面大部份的ERP都是採用集中式料品進出異動檔的儲存型態(或稱記錄方法)

 

        

2.分散式

       分散式和集中式不一樣的地方就是她沒有那個記錄料號進出的料品異動檔TABLE ,只有異動程式本身記錄而已,例如採購入庫程式,就只記錄在採購程式本身而已,沒有另抄一份至異動TABLE內。由於異動記錄是分散記錄在各類的料品異動程式裡,因此稱為分散式。此方法優點是程式設計簡單,只要記錄料品異動程式自己本身異動資料即可,不用再寫要入料品異動檔TABLE內的SQL。如庫存量取值方法是使用計算法,那也不用去更新庫存量,從頭到尾只要寫一段記錄在本身的程式裡即可,簡單又方便。

 

       此方法的缺點是查詢料號進出異動時程式反應速度會較慢,因為它要去所有的料品異動程式的Table裡去抓資料,要費一點時間,如異動程式有20,就要去Open 20次各種類的料品進出異動Table ,如在抓取異動資料的同時,使用者剛好也在編輯修改資料,那就要等此編輯時產生的資料庫Lock結束才能讀取正確的資料,因此,反應會較慢。程式反應慢,使用者就會XX ,軟體公司就會接到一堆客訴案件,因此,較少軟體公司採用此分散式的異動記錄方法。

 

    你的ERP要採用何種記錄方法? 筆者是採用了分散式記錄料品進出異動,這樣可減少寫code的時間及縮短ERP工作天數,加快ERP程式完成。

文章標籤
全站熱搜
創作者介紹
創作者 Wilson643089 的頭像
Wilson643089

如何自己設計一套ERP

Wilson643089 發表在 痞客邦 留言(0) 人氣(115)