摘 要:論文在分析ERP中常見的BOM結構和算法的基礎上,提出了一種復合型的BOM設計及相應的算法,并采用存儲過程來實現(xiàn)BOM的查找。實際應用表明,該方法能有效提高ERP系統(tǒng)的運行效率。
關鍵詞:物料清單(BOM);存儲過程;企業(yè)資源計劃(ERP);算法
中圖分類號:TP311.132.3
物料清單(Bill of Materials,BOM)屬于重要的基礎數(shù)據(jù),也是構成ERP的核心,它表明產(chǎn)品的各部件、零件和原材料之間的結構關系,以及每個部件所需要的零部件的數(shù)量,它的結構設計的優(yōu)劣關系到ERP系統(tǒng)能否正常、高效地工作?,F(xiàn)在的制造型企業(yè),產(chǎn)品結構相當復雜,有的產(chǎn)品種類繁雜,批量大小不一;有的產(chǎn)品由眾多零部件組成,其中重點零部件和長周期零部件較多,生產(chǎn)周期長短不一,因此,BOM管理比較復雜,如果不能快速、高效地生成和分解物料清單,則整個ERP系統(tǒng)無法正常運行,勢必給企業(yè)的正常生產(chǎn)帶來阻礙。由此,研究BOM及與之相關的算法有著重要的意義。
1 BOM的概念及與作用
BOM,英文全稱為Bill of Materials,中文譯為物料清單。BOM是ERP系統(tǒng)中最基本的內容,是針對ERP產(chǎn)品結構的一種描述性文件;BOM是一個結構表,用來標的產(chǎn)品及其相關零部件的結構關系。
BOM是構成物料需求計劃的基本信息,是聯(lián)系主生產(chǎn)計劃和物料需求計劃的橋梁,是外協(xié)加工和生產(chǎn)裝配的主要依據(jù)。因此,BOM在ERP系統(tǒng)中的作用十分重要,關系到整個ERP系統(tǒng)的運行效率。
2 BOM結構分析與改進
ERP系統(tǒng)要準確無誤地計算所需物料數(shù)量和加工次序,首先要使系統(tǒng)能夠清楚企業(yè)所制造的產(chǎn)品構成以及使用到的物料等情況。數(shù)據(jù)庫設計的關鍵是怎樣將BOM的樹形結構轉成計算機能識別的規(guī)范數(shù)據(jù)表。利用數(shù)據(jù)庫中的數(shù)據(jù)表,可以很清晰地描述各種物料需求的數(shù)量和相互之間的組成結構關系。
現(xiàn)提出一種復合型BOM設計方案,該方案包含兩個表:MaInfo和MaStructure。MaInfo記錄物料的基本信息,MaStructure記錄產(chǎn)品的結構關系。之所以將信息拆分成兩個表,主要是因為在ERP、MRP中物料包含的信息非常多,如果將所有信息存放在一個表中,數(shù)據(jù)庫表將過于龐大,造成數(shù)據(jù)庫難以維護。
復合式BOM結構保留了“單父-單子”的優(yōu)點,對于每一層系統(tǒng)只定義一次,可以大大節(jié)省存儲空間。并且,當母件的結構發(fā)生改變時,只需修改一次數(shù)據(jù)庫即可,保證了BOM數(shù)據(jù)的一致性和完整性。同時這種結構保留了“單父-多子”的優(yōu)點,BOM結構清晰,在分解時算法相對簡單,從而有助于執(zhí)行效率的提高。
3 基于存儲過程的BOM遍歷算法
本文提出一種基于SQL Server存儲過程的BOM查詢算法,該算法可直接在SQL Server數(shù)據(jù)庫中使用存儲過程。通過SQL Server存儲過程,創(chuàng)建一個臨時表,通過一個循環(huán)語句實現(xiàn)對表的查找,由于存儲過程在數(shù)據(jù)庫服務器端運行,該算法執(zhí)行效率較高,并具有較好的安全性和穩(wěn)定性。實驗數(shù)據(jù)表明,隨著ERP產(chǎn)品的結構復雜度的增加,該算法相對于傳統(tǒng)遞歸算法具有明顯的優(yōu)越性。
其算法簡要描述為:
(1)創(chuàng)建臨時數(shù)據(jù)表temp;
(2)將要查找的對象放到表temp中,且置該對象的level為1;
(3)While(表temp中的子件不為空,且level=@level do);
(4)Begin;
(5)將表BOM中所有滿足BOM.father=temp.children的對象插入表temp中;
(6)Level=level+1;
(7)End;
(8)將表temp1中相同的對象進行合并。
采用表中記錄結構作為BOM及其展開表的數(shù)據(jù)庫模式,上述算法的簡單實現(xiàn)如下:
create proc1 expa_BOM( @ top varchar(50))
as
begin
set nocount on
declare @ level int
create table # temp (top varchar50),parent varchar(50),child varchar(50),age float(8),level int)
select @ level=1
insert #temp select @ top,parent,child,age,@ level from bom where father=@ top
while exists(select * from #temp where child is not NULL and level=@ level)
begin
insert #temp select @ top,a.parent,a.child,age * t.age,@ level + 1 from bom a,#temp t where a.parent =t.child and t.level=@ level
select @ level =@ level + 1
end
select * from #temp where child is 1
set nocount off
end
go
輸入?yún)?shù)@ top表示某產(chǎn)品的根節(jié)點,在主程序中調用存儲過程。
基于存儲過程的BOM查找算法是一種分層算法,其主體實現(xiàn)采用的是標準SQL Server語句,可以充分利用服務器的資源,提高了算法的執(zhí)行效率。
4 結束語
BOM作為ERP系統(tǒng)的核心,其數(shù)據(jù)結構的設計和檢索算法的優(yōu)劣直接影響到整個ERP系統(tǒng)的運行效率。本文在分析ERP中常見的BOM結構和算法的基礎上,提出了一種復合型的BOM結構設計及相應的算法,并采用存儲過程來實現(xiàn)BOM的查找。實踐表明,該方法隨著ERP產(chǎn)品結構復雜度增加,更能顯示出其優(yōu)越性。
參考文獻:
[1]彭克勤,岳清.BOM的關系型數(shù)據(jù)庫設計及算法研究[J].計算機與數(shù)字工程,2009(12):14-16.
[2]閔志坤,王時龍,任亨斌.一種新型BOM檢索方法的研究與實現(xiàn)[J].重慶工學院學報,2009(01):109-112.
[3]HUANG Xue-wen,SONG Yu-bin,LIU Xiao-bing.Study on vicious cycle node checking algorithm for BOM based on search technology[J].Application Research of Computers,2009(08):2942-2944.
[4]熊光彩,莫蓉,毛海鵬.基于XML的BOM信息共享和存儲[J].機械科學與技術,2012(05).
[5]羅鴻.ERP原理設計實施(第三版)[M].北京:電子工業(yè)出版社,2005.
[6]馬越,仇志華,馬長志.面向減速機產(chǎn)品BOM多視圖關系的研究[J].制造業(yè)自動化,2010(09):217-220.
[7]王衛(wèi)國,閆光榮,雷毅.一種新的制造BOM存儲模型[J].計算機集成制造系統(tǒng),2010(03):558-562.
作者簡介:李治(1977-),男,湖南益陽人,碩士,副教授,研究方向:數(shù)據(jù)挖掘、管理信息系統(tǒng)與決策支持系統(tǒng)。
作者單位:湖南機電職業(yè)技術學院,長沙 410151
基金項目:湖南省教育廳科學研究基金項目(編號:11C0480)資助。