一種基于存儲過程的BOM遍歷算法 - 圖文-_第1頁
一種基于存儲過程的BOM遍歷算法 - 圖文-_第2頁
一種基于存儲過程的BOM遍歷算法 - 圖文-_第3頁
一種基于存儲過程的BOM遍歷算法 - 圖文-_第4頁
一種基于存儲過程的BOM遍歷算法 - 圖文-_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、合肥學(xué)院學(xué)報(bào)(自然科學(xué)版Journal of Hefei University(Natural Sciences檀明,袁,鐘伯成,胡學(xué)友,吳曉琴(合肥學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系,合肥230601摘要:BOM是ERP系統(tǒng)中的基礎(chǔ)數(shù)據(jù),其數(shù)據(jù)結(jié)構(gòu)的確定與操作算法的設(shè)計(jì)直接影響到ERP系統(tǒng)的效率.通過對BOM概念的分析,提出一種基于存儲過程的BOM的遍歷算法,同時(shí)介紹了將遍歷算法與Dephi6.0的樹形控件相結(jié)合,實(shí)現(xiàn)從數(shù)據(jù)庫中提取產(chǎn)品數(shù)據(jù),直觀地顯示BOM的層次關(guān)系的方法.關(guān)鍵詞:BOM;存儲過程;ERP中圖分類號:T H166文獻(xiàn)標(biāo)識碼:A文章編號:1673-162X(200701-0040-06BO

2、M(物料清單是產(chǎn)品結(jié)構(gòu)的技術(shù)性描述文件,表明了生產(chǎn)某個(gè)父零件所需的所有子部件、中間件、零件、原材料的列表,它顯示了組成這個(gè)父零件所需子件的數(shù)量.BOM實(shí)質(zhì)是產(chǎn)品結(jié)構(gòu)關(guān)系的反映,并將所涉及的技術(shù)信息進(jìn)行關(guān)聯(lián)和整合.由于BOM處于ERP(企業(yè)資源計(jì)劃系統(tǒng)中的關(guān)鍵地位,BOM的數(shù)據(jù)ERP系統(tǒng)中數(shù)據(jù)模型的核心,BOM設(shè)計(jì)的好壞直接影響ERP系統(tǒng)的實(shí)施和運(yùn)行的效率.為了優(yōu)化ERP系統(tǒng)的性能,提高系統(tǒng)運(yùn)行的效率,從數(shù)據(jù)結(jié)構(gòu)的角度研究BOM的構(gòu)造方法與遍歷算法,對ERP系統(tǒng)的設(shè)計(jì)與開發(fā)有著重要的實(shí)際意義.1761BOM的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)由于實(shí)際產(chǎn)品的結(jié)構(gòu)應(yīng)該是網(wǎng)狀結(jié)構(gòu),網(wǎng)狀結(jié)構(gòu)的產(chǎn)生源于父部件與子部件之間的關(guān)系

3、,并非一對多或多對一,而是多對多,也即父部件通常由許多子部件裝配而成,而許多通用子部件又被用在多種產(chǎn)品或父部件的裝配中.網(wǎng)狀數(shù)據(jù)結(jié)構(gòu)在當(dāng)今主流的關(guān)系數(shù)據(jù)庫中通常難以實(shí)現(xiàn),BOM中的數(shù)據(jù)在關(guān)系數(shù)據(jù)庫中只能以二維的形式表示,因此二維數(shù)據(jù)在數(shù)據(jù)庫中如何表示也就成了BOM構(gòu)造的關(guān)鍵.常見的BOM主要有多層BOM和單層BOM.1791.1多層B OM多層BOM采用“單父多子”的數(shù)據(jù)結(jié)構(gòu),要求詳細(xì)地記錄了產(chǎn)品的結(jié)構(gòu)信息,即便是同樣的零部件結(jié)構(gòu),只要存在于不同的產(chǎn)品中,也要多次詳盡地記錄.例如,產(chǎn)品A的結(jié)構(gòu)如圖1所示,其多層BOM數(shù)據(jù)表如表1.多層BOM結(jié)構(gòu)的優(yōu)點(diǎn)是:(1產(chǎn)品間結(jié)構(gòu)不互相影響,各個(gè)產(chǎn)品之間的

4、數(shù)據(jù)記錄沒有交叉,因而維護(hù)比較方便;(2多層BOM結(jié)構(gòu)再分解時(shí)算法比較簡單,只要根據(jù)產(chǎn)品的編碼查詢出最底層子件(即需要制造和采購的零部件的編碼和數(shù)目即可,效率比較高.但多層BOM結(jié)構(gòu)也存在很多缺點(diǎn):(1數(shù)據(jù)冗余量大,零部件結(jié)構(gòu)的重復(fù)定義,也增加了系統(tǒng)啟動時(shí)錄入基礎(chǔ)數(shù)據(jù)的工作量.(2雖然定義了子件的層次關(guān)系,但是它屬于哪一個(gè)父層并沒有記錄,因此,并不收稿日期:2006-11-01修回日期:2007-01-04作者簡介:檀明(1974,男,安徽望江人,合肥學(xué)院計(jì)算機(jī)科學(xué)技術(shù)系講師,碩士;研究方向:多媒體、數(shù)據(jù)庫技術(shù)、嵌入式系統(tǒng).能反查出某零部件的上一層父件,而只能查出它屬于哪個(gè)產(chǎn)品,無法清晰地顯示

5、產(chǎn)品的樹型結(jié)構(gòu).(3結(jié)庫中的存儲形式,如表2所示.2,3表2產(chǎn)品A 單層BOM 數(shù)據(jù)表記錄號父件號件號用量數(shù)1A B 12A C 13A D 34B C 15B D 26C E 47CF2單層BOM 結(jié)構(gòu)對于每種層次結(jié)構(gòu)只定義一次,可以大大節(jié)省存儲空間,另外在產(chǎn)品的設(shè)計(jì)階段,由于零部件結(jié)構(gòu)和一些相關(guān)屬性需經(jīng)常改動,為便于BOM 的生成和管理,應(yīng)采用單層BOM 結(jié)構(gòu).筆者綜合以上BOM 兩種結(jié)構(gòu)模型特點(diǎn),提出了基于單層BOM 結(jié)構(gòu)的改進(jìn)的BOM 結(jié)構(gòu)模型,如表3所示.表3BOM 數(shù)據(jù)表結(jié)構(gòu)序號字段名字段類型寬度小數(shù)顯示名稱主鍵字段說明1Feed_noVarchar15料號YKey 12Ffeed

6、_no Varchar 15父料號Y Key 23Sp read_tag Varchar 1展開標(biāo)記1:展開;0:無展開4U se_pot Varchar 6使用位置YKey 35Editi on Varchar 4版本6Map_no Varchar 15圖號7Unit Varchar 4單位8Unit_use Nu meric 115單位用量9Me mo Varchar 30備注10Dos_count Nu meric 95用量數(shù)11Effect_date Dateti m e 生效日(有效日12I nvalid_date Dateti m e 無效日(失效日13Har m Nu meric

7、 64制損(%14Cost_rati o Nu meric 64成本比占成品的成本%15Over_contr ol Varchar 1超發(fā)控制Y/N16B ring_make Varchar 1是否產(chǎn)生制令I(lǐng) :自制;O:委外;D:忽略該階;E:忽略該階及其下階;P:為采購17Root_no Varchar 4本階序號18Doc_unit Varchar 4用量(數(shù)單位19Pr oc_mode Varchar 1生產(chǎn)方式20Check_fomu Varchar 4核算公式21Length Nu meric 83長22W idth Nu meric 83寬23H igh Nu meric 83高

8、24TypeVarchar1類別1/0:主料/副料2基于存儲過程的BOM 分層遍歷算法BOM 遍歷結(jié)果是企業(yè)編制生產(chǎn)計(jì)劃、進(jìn)行產(chǎn)品配套、生產(chǎn)領(lǐng)料和加工過程跟蹤的依據(jù);也是企業(yè)計(jì)算14第1期檀明,等:一種基于存儲過程的BOM 遍歷算法24合肥學(xué)院學(xué)報(bào)(自然科學(xué)版第17卷?xiàng)14嫦嚓P(guān)信息,系統(tǒng)內(nèi)存耗費(fèi)大,事實(shí)上,在實(shí)施ERP系統(tǒng)時(shí),對于一個(gè)物料層次很多的BOM結(jié)構(gòu)來說,遞歸遍歷算法會大大降低系統(tǒng)運(yùn)行的效率,甚至可能導(dǎo)致系統(tǒng)崩潰.比較3種算法:算法1運(yùn)行效率最低,在實(shí)際應(yīng)用中不能滿足實(shí)際需要;算法2運(yùn)行效率雖然比算法1有很大改進(jìn),但它對下層物料查找方法是一個(gè)一個(gè)物料來查找,不能利用數(shù)據(jù)庫的集合操作的特

9、點(diǎn),算法運(yùn)行效率不是很理想,但它對于查找特定結(jié)點(diǎn)的物料很實(shí)用;算法3的思路清楚,可以充分利用數(shù)據(jù)庫集合操作的優(yōu)點(diǎn),算法運(yùn)行效率也最高.32.2基于存儲過程的B OM分層遍歷算法基于存儲過程的分層遍歷算法采用臨時(shí)表存放BOM中某一層物料的信息,克服了遞歸算法中堆棧的使用,使用較為方便,能較好的按層次遍歷一個(gè)大規(guī)模的BOM樹結(jié)構(gòu);但是由于其層次遍歷的特點(diǎn),其物料的存放順序未能展現(xiàn)物料的父子關(guān)系.而在進(jìn)行物料結(jié)構(gòu)的取代、刪除以及檢查物料的用料結(jié)構(gòu)是否存在循環(huán)錯(cuò)誤時(shí),需要知道物料間的父子關(guān)系,因而BOM遍歷的分層算法將無法進(jìn)行以上操作.為此,在臨時(shí)表中增加兩個(gè)字段,當(dāng)前層次(Level及完全路徑(Fu

10、llPath,分別按如下遞歸方式定義:I f件號=BOM根結(jié)點(diǎn)thenLevel=0;FullPath=件號Else/對于非根結(jié)點(diǎn)Level=父件號.Level+1;FullPath=父件號.FullPath+件號為進(jìn)一步提高算法效率和充分利用S QL結(jié)構(gòu)化查詢語句的優(yōu)勢,算法改用后臺存儲過程實(shí)現(xiàn):先以傳入?yún)?shù)Te mpTable Na me的值為表名按表4結(jié)構(gòu)建立BOM展開臨時(shí)表,將待展開件號A(BOM樹的根結(jié)點(diǎn)的所有直接子結(jié)點(diǎn)插入臨時(shí)表(Level=1,FullPath=A.件號+子結(jié)點(diǎn).件號,再對隊(duì)列(臨時(shí)表中Level=1的結(jié)點(diǎn)的所有直接子結(jié)點(diǎn)再插入隊(duì)列(Level=2,FullPat

11、h=父結(jié)點(diǎn).FullPath+子結(jié)點(diǎn).件號,按層次順序繼續(xù)進(jìn)行循環(huán)插入,直到不存有任何子結(jié)點(diǎn)可插入(當(dāng)前層全為葉子結(jié)點(diǎn)則結(jié)束算法.表4BOM展開臨時(shí)表結(jié)構(gòu)字段類型字段說明Ite m_NO Char(15件號Father_Ite mNo Char(15父件號Level I nt當(dāng)前層次數(shù),根結(jié)點(diǎn)的層次數(shù)為0FullPath Var Char(2000根結(jié)點(diǎn)至當(dāng)前結(jié)點(diǎn)的完全路徑PROCEDUREP_BomTreeIte m_NO char(15,Te mpTable Na me char(50ASselectcur_level=0setsql_exec=create table+Te mpTabl

12、e Na me+(ite m_no char(15,Level I nt,FullPath char (2000,Father_Ite mNo char(15exec(sql_exec根據(jù)傳入的臨時(shí)表名,建立全局臨時(shí)表setsql_exec=insert+Te mpTable Na me+(ite m_no,Level,FullPath,Father_Ite mNovalues(+Ite m_NO+,0,+Ite m_NO+,""-將待展開的件號做為根件號插入臨時(shí)表中exec(sql_execwhile 1=1beginset sql_exec =select t op 1

13、3fr om BOM where Father_Ite mNo in(select ite m _no fr om +Te mpTable Na me +where Level =+convert (char,cur_level +-按層次順序展開BOM ,若當(dāng)前層存在非葉件號,則將其插入臨時(shí)表中,留待下一次循環(huán)時(shí)繼續(xù)向下展開.exec (sql_exec if r owcount >=1/當(dāng)非葉子結(jié)點(diǎn)時(shí)beginset cur_level =cur_level +1set sql_exec =insert int o +Te mpTable Na me +(ite m _no,Leve

14、l,Father_Ite mNo,FullPath select Ite m _NO,+convert (char,cur_level +,Father_Ite mNo,+Te mpTable Na me +.FullPath +BOM.Ite m _NO fr om BOM ,+Te mpTable Na me +where BOM.Father_Ite mNo =ite m _no and Level =+convert (char,cur_level -1/將當(dāng)前層結(jié)點(diǎn)的子結(jié)點(diǎn)插入臨時(shí)表exec (sql_exec end elsebreak 若當(dāng)前全為葉件號,則跳出循環(huán),結(jié)束遍歷end

15、3遍歷算法在BOM 樹創(chuàng)建及顯示中的應(yīng)用設(shè)計(jì)思想:應(yīng)用層BomTree 方法根據(jù)客戶端提供的待展開件號Ite m _No,調(diào)用后臺BOM 樹的遍歷存儲過程P_BomTree,將遍歷結(jié)果存入全局臨時(shí)表中(Te mpTable Na me =操作員編號+年月日+時(shí)分秒,將全局臨時(shí)表名通過回傳參數(shù)sl_out 返回客戶端,由客戶端建樹算法從該臨時(shí)表中取出數(shù)據(jù)并利用Tree V iew 控件完成前臺建樹及顯示工作.p r ocedure TERPRD.BomTree (const Ite m _NO ,:W ideString;var sl_out:O le Variant ;try/按操作員編號+年

16、月日時(shí)分秒為臨時(shí)表名,以確保其名稱的全局唯一性Te mpTableNa me :=#+gs_code +For mat D ateTi m e (YYYY MMDDHH MMSS,now ;/執(zhí)行后臺存儲過程,將件號展開結(jié)果存放在以Te mpTable Na me 為表名,的全局臨時(shí)表中,并將臨時(shí)表返回前臺(通過sl_out 帶出,再由前臺完成建樹操作ADOQ_rd .S QL.Text :=exec P_Bo mTree +Item _NO +,+Te mpTable Na me;ADOQ_rd .ExecS QL;sl_out :=Te mpTableNa me;setcomp lete;

17、excep t beginsl_out:=no;/有問題時(shí),將sl_out 置為no,通知前臺中止建樹操作setabort;end;end;34第1期檀明,等:一種基于存儲過程的BOM 遍歷算法44合肥學(xué)院學(xué)報(bào)(自然科學(xué)版第17卷end;3.2客戶端建樹算法對TreeV ie w所表示BOM樹的各結(jié)點(diǎn),除件號以外,還需保存其它相關(guān)信息,如父件號、單位用量、制損比例等,系統(tǒng)通過結(jié)構(gòu)指針類型P Node來實(shí)現(xiàn):typeNode=recordite m_no:string;/其它需記錄的信息end;P Node=Node;對于存放在全局臨時(shí)表(Te mpTable Na me中BOM展開數(shù)據(jù),按Fu

18、llPath升排序檢索的結(jié)果可視為對BOM樹的先根遍歷路徑,客戶端建樹的過程就是在對BOM樹先根遍歷同時(shí),動態(tài)生成Tree V ie w,為此建立一個(gè)路徑指針數(shù)組PTree W ayMax Level,其中Max Level為樹的最大深度,其值可以通過SelectMax Level =Max(Levelfr om Te mpTable Na me獲得.PTree W ay0-I可以看成從根結(jié)點(diǎn)開始到當(dāng)前I層的建樹路徑,若當(dāng)?shù)贗層當(dāng)前建樹結(jié)點(diǎn)PTree W ayI已無子結(jié)點(diǎn)時(shí),應(yīng)返回上一層的PTree W ayI-1結(jié)點(diǎn)繼續(xù)沿下一遍歷分枝建樹,直到對樹的遍歷結(jié)束為止.代碼如下:p r ocedu

19、re TFr m_rd1021.For mShow(Sender:T Object;/BOM樹顯示窗體的For mShow Te mpTable Na me:=String(Sl_out;/調(diào)用應(yīng)用層方法,Sl_out返回存放BOM數(shù)據(jù)的全局臨時(shí)表名,若表名為no則為表中無該物料的BOM資料if Te mpTable Na me=nothen/提示并返回;ne w(P NodeTe mp;并設(shè)置P NodeTe mp結(jié)構(gòu)中信息為根結(jié)點(diǎn)的對應(yīng)值;beginne w(P NodeTe mp;并設(shè)置P NodeTe mp結(jié)構(gòu)中其它信息;PTree W ayLevel:=Tree V ie w.Ite

20、 m s.AddChild Object(PTree W ayLevel-1,str Cap ti on,P Node2 Temp;/為上層父結(jié)點(diǎn)增加子結(jié)點(diǎn)end;end;BOM在ERP、P DM、MRP等軟件中處于核心地位,其重要性顯而易見.文中所提出的BOM結(jié)構(gòu)模型和基于存儲過程的改進(jìn)BOM分層遍歷算法已在服裝行業(yè)的ERP系統(tǒng)中得到成功的應(yīng)用,相對一般BOM遍歷算法,使用該算法可以獲得更好的計(jì)算性能.參考文獻(xiàn):1羅鴻,王忠民.ERP原理設(shè)計(jì)實(shí)施M.2版.北京:電子工業(yè)出版社,2003.第 1期 檀 ,等 : 一種基于存儲過程的 BOM 遍歷算法 明 45 2 賈振元 ,郭庭政 , 王林平

21、. 面向中小制造企業(yè)多種 BOM 并行的構(gòu)建和應(yīng)用 J . CAD /CAM 與制造業(yè)信息化 , 2005 3 嚴(yán)志強(qiáng) ,龔京忠 ,李國喜 ,等 . 多級型 BOM 的遍歷 J . 機(jī)械設(shè)計(jì)與制造工程 , 2001, 30 (2 : 33 2 34. (12 : 24 2 25. 責(zé)任編校 : 乙卯 A lgor ithm of Ran sack i g Tree BOM n Ba sed on Store Procedure (Departm ent of Computer Science and Technology, Hefei University, Hefei230601, Chin

22、a Abstract: The B ill of M aterials (BOM is the basic data in ERP system. Its structure and design of operation algorithm affect ERP system deep ly In this paper, by the analysis of BOM , an algorithm of . rithm and Tree V iew Controller of Dephi6. 0 to extract data from database and disp laying the

23、 rank order ransacking tree BOM based on store p rocedure is p roposed. Further more, a m ethod using this algo 2 insurance model, this paper studies a delayed double type 2insurance compound B inom ial risk model in (3 : 348 2 358. of BOM directly is also p resented. Key words: BOM; store p rocedur

24、e; ERP (上接第 27 頁 2 Shiu E. The Probabilities of Eventual Ruin in the Compound B inom ial Model J . ASTI Bulletin, 1989, 19: 179 2 N 190. 3 成世學(xué) ,伍彪 . 完全離散經(jīng)典風(fēng)險(xiǎn)模型 J . 運(yùn)籌學(xué)學(xué)報(bào) , 1998, 2 ( 3 : 42 2 54. 5 龔日朝 ,楊向群 . 復(fù)合二項(xiàng)風(fēng)險(xiǎn)模型下的有限時(shí)間的生存概率 J . 吉首大學(xué)學(xué)報(bào) , 2000, 21 ( 2 : 16 2 19. 6 龔日朝 . 兩類時(shí)間離散索賠模型的關(guān)系 J . 信陽師范學(xué)院學(xué)報(bào) : 自然科學(xué)版 , 2001, 14 ( 3 : 381 2 383. 4 成世學(xué) ,朱仁棟 . 完全離散經(jīng)典風(fēng)險(xiǎn)模型中的漸進(jìn)解和 Lundberg型不等式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論