決定ERP DB 、Table、Columns 的命名方式
寫 ERP 免不了要建立 SQL 資料庫,好方便判別和程式呼叫使用。但資料庫裡的DB、Table和Columns等之類的物件要用什麼格式? 取什麼名字? 這學問就大了。
目前軟體界對Table 、Column的命名方式有很多種,但總體來講可區分為3種命名方式:
1.有意義的命名法(又稱傳統命名法)
2.無意義的命名法(又稱流水號命名法)
決定ERP DB 、Table、Columns 的命名方式
寫 ERP 免不了要建立 SQL 資料庫,好方便判別和程式呼叫使用。但資料庫裡的DB、Table和Columns等之類的物件要用什麼格式? 取什麼名字? 這學問就大了。
目前軟體界對Table 、Column的命名方式有很多種,但總體來講可區分為3種命名方式:
1.有意義的命名法(又稱傳統命名法)
2.無意義的命名法(又稱流水號命名法)
某天在公司上班寫程式,使用者來電話反應,他說他剛才要去編輯一筆資料,把滑鼠移到上方工具列,要去按編輯按鈕,結果在慌亂中居然按到 [刪除] 按鈕,好死不死的在出現Confirm (是否確認)視窗時,他也不知道什麼原因,就習慣性按 [確定](OK),然後這筆資料就不見了。
使用者他不怪我,但希望設計下一版本的程式時,可否將 [刪除] 按鈕改放在工具列的最右邊,這樣他就不會不小心按到了。
這通電話改變我那時程式設計的風格,讓我將 [刪除] 按鈕設定在上方工具列的最右邊。
但日後筆者碰到一情形,我又將 [刪除] 鍵移回來了。
話說有一天會計部同仁要我看一下公司外購的會計軟體。筆者第一次接觸到會計程式,當時在看時感覺畫面很奇怪,雖然這套會計程式仍依照傳統的方式將工具列設計在上方,但裡面的按鈕除了,新增,編輯外,居然沒有刪除按鈕。我想是不是我眼花了,再仔細找一下螢幕畫面上下左右四周看了一遍,確定真的沒有刪除按鈕,筆者就問公司會計同仁,問這程式沒有刪除按鈕,那你們會計要如何刪除?
1.BOM全階式展開法
此計算方法是所有MRP計算方法中最快的一種,速度約為1分鐘1萬筆(高級伺服主機),速度很快,所以,就算在平常上班時做也沒關係,不像第2種方法 BOM層爬樓梯計算法 ,只要一啟動,線上操作ERP人員馬上哇哇叫,大喊主機又變慢了。此方法計算方式是將訂單料號數量依BOM表全階展開至一臨時TABLE 裡,再將這TABLE 裡相同的子件料號數量相加,求出訂單母件料號和子件個別需求的合計數量。這個就是我們的需求量(毛需求)。
倉庫裡有庫存量的料號也依BOM表全階展開至另一臨時TABLE 裡,展開後一樣也是依相同的料號相加,求出每個料號和子件料號的庫存量。這個就是我們的供給量。
有了料號需求量和供給量後我們就可將2項的數值依料號數量相減,就可求出每個料號子件在這期間的欠料量(淨需求)。這麼簡單,那麼準確率多少?說實話此方法對於BOM表母子件使用率為1:1比較準確,如非1:1的母子件則會有誤差。假設目前BOM表母子件使用率1:1佔全BOM表比率有90%,那麼用此方法計算出來的準確率約為85%至90%左右(註)。
準確度只有85%,你在開玩笑,我要求MRP 計算出來的準確率要100%,我工廠要做到零庫存,要做到上游廠商在我組裝前4小時即時送貨來。
說起MRP程式設計,說複雜也很複雜,說簡單也很簡單。以複雜面來說讀者只要在Google 搜尋 MPR計算方法,馬上就會出現一堆結果,但讀者看完這些MRP計算原理說明後,保證99%的人仍然是一頭霧水,無法理解,因為理論上都解說的太複雜了,有看沒有懂。
為讓讀者能了解MRP計算原理,筆者以「砍枝節留主幹」的方式簡單來說明
說明之前首先要對供給量、需求量,計算週期期間這3個基本名詞先解釋一下
第10個決定決定是否啟動倉庫儲位
倉庫料號儲位是什麼? 簡單的說就是公司的料品要放在倉庫那個位置上
公司企業在導入ERP時,軟體公司的顧問群就會進駐廠內。
顧問老師第一件事就是會問貴公司是否要啟動倉庫料號儲位?如你是此專案的公司代表,你要如何回答?
正常一家公司料號半成品、成品品項有可能達到上萬筆,這些料品不能採購後,就隨便往倉庫一丟就不管了,一定要找一個固定位置來放置,這位置有可能就是A01倉庫03樓04區08排8層02位置上。這03樓04區08排08層02就是儲位,
今天在公司上班時,透過視線看著剛來公司的年輕小明寫SQL,他的座位剛好在我的斜前方,所以筆者
的位置可以很清楚地看見他整個螢幕畫面文字。此時他正在寫一段SQL,這SQL 裡的 TABLE 有20個欄位(column)只見他把這20幾個欄位分成上下2列,橫著把Columns 一個一個列出來。從這佈局動作,我就知道他是剛寫SQL程式菜鳥。
大家都知道,SQL Columns 佈局寫法,簡單說就分橫式和直式2種寫法。
先說明一下,所謂SQL 橫式和直式寫法差別,請看以下範例:
橫式Columns 佈局寫法
在網路曾看過一篇文章,主題寫說他們公司換ERP的理由與經過。文章指公司舊ERP已用了五年了,不是不好用,只是反應太慢,報表下條件查詢資料要30幾秒才有反應,常常要人等資料出現,效率非常差,因此,決定更換ERP。
看完這文章後感覺這家公司MIS 人員非常失職,因ERP使用5年後,裡面某 Table 的資料應有上百萬筆了,印象中早期舊版的資料庫中如有Table 筆數達百萬筆以上,資料查詢將會變的很慢,一定要根據SQL 的查詢條件欄位建立一個新的多欄位索引(index ),舉例如SQL 裡的Where 查詢條件如有5個欄位,就要建立這5個欄位的索引,(不是5個索引,是這5個欄位的單一索引)。索引建立後再查詢,保證資料在2秒內即出來。
以上是我的工作經驗談,謹供大家參考。
第10個決定決定程式函數寫在DB資料庫或程式函數庫裡
ERP 程式裡一定有計算函數,但這函數要寫在DB資料庫裡還是在ERP程式裡?相信讀者在碰到此問題時,常會有疑惑到底這函數要寫在DB資料庫裡或在程式函式庫中?在決定此問題之前先說2個故事。
故事1
早期我是負責公司在大陸的人事薪資系統,我任職的這家集團公司在大陸有多家子公司,集團總人數達到8千多人,這些子公司全部用我維護(非我原創,我來時已上線了)的人事薪資系統計算每月薪資。
初期為了加快計算速度我是將薪資計算函數寫在DB資料庫裡(因有的子公司人數達上千人,為加快計算速度所以寫在DB裡),有要更新程式時再一個一個連線進去子公司主機資料庫裡去更新DB裡的計算函數(計算函數有數十個),每變動一下函數程式,整個程序要再來一次,非常麻煩。
第09個決定決定單據金額是實體還是虛擬計算欄位
常聽人講國外的ERP 比較嚴謹,本土的ERP 比較彈性,剛開始聽不懂這句話的意思,因為二者都是用電腦在跑,難道電腦自己可以區分出國外或是本土的ERP 。後來自己接手維護一套國外當火的ERP後,才知道以上那句話真有些道理在。
我們以訂單單據金額為例,早期維護的那一套本土ERP其訂單總金額在訂單表頭是實體欄位,而國外ERP訂單總金額是虛擬計算欄位。本土ERP單據金額是實體欄位,所以,明細每次新增、編輯後,都會將所有明細金額加總更新(Update)至表頭這個實體欄位裡。本土ERP會採用實體欄位記錄單據金額最大的優點就是查詢年度或月份統計報表速度很快,直接抓表頭的單據金額來合計即可,報表一按約可在5秒內取得結果,如果是抓明細來計算,這樣反應就很慢,軟體反應慢就會被使用者說:某牌ERP不好用、很慢,因此,早期本土ERP採用實體欄位來記錄單據金額。早期電腦速度較慢,採用實體欄位確實有其必要性。(註:本土ERP 單據金額也有採用虛擬計算欄位的,非指全部都用實體欄位)。
而國外ERP 的單據金額是虛擬計算欄位,單據金額是明細金額加總計算出來的。使用者如要產生月份、年度合計或統計報表時都要去抓訂單明細來計算,反應速度會較慢一點(但二者計算時間其實也沒差多少,主要由於國外的ERP 主機總價很高,主機是價值近百萬元台幣的高級伺服主機,計算效率高),計算出來的金額99.9999%是正確的。採用此法就可避免有心人員進到後台去修改單據金額了,這就是國外ERP所謂嚴謹優點之一。
上一篇文章講的訂單單據金額的計算方式,顧客是用第一種方式,而公司用的是第二種方式,2者計算出來的單據金額不一樣,但業務主管硬要我產生第一種計算出來的單據金額給他。筆者左思右想,想到利用本土ERP彈性的優點了,這優點是什麼? You Know it.順利交差結案。
最好的ERP導入方法就是買市售大廠的ERP軟體再加上自製的外掛軟體來操作。這是筆者個人認為是目前為止最好最省錢的導入ERP方法。
目前ERP軟體的計價方式,除了基本價格外,另外再加By 人數計算的License(帳號)費用,再加上客製軟體費用,基本就要550萬元起跳了。
如果將此價格拆開,則共有4項費用
1.ERP 軟體費用、顧問導入費用再加上5個基本使用帳號總價約要300萬元左右。
2.License(帳號)費用 1個License約10萬元(註:每家軟體報價都不一樣,請自洽軟體公司),一般中型公司至少要20個License ,扣除基本5個,約須要再加買15個License ,金額約要150萬。
第08個決定決定單據總金額的計算方法
ERP 程式裡的主要程式常是Master-Detail (主表明細) 的架構,例如:訂單程式、採購程式等,這些有帶數量、單價和小計金額的,其單據總金額(NTD ,先不計稅)如何計算? 如你問ERP的程式設計師,應會得到以下2個答案:
1.明細不做任何處理,先全部加總後再四捨五入
2.明細單筆小計先四捨五入後,再全部加總成單據金額
我們以訂單金額為例,假設某訂單有2筆明細資料