- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种ERP中的BOM设计及算法研究.doc
一种ERP中的BOM设计及算法研究
摘 要:论文在分析ERP中常见的BOM结构和算法的基础上,提出了一种复合型的BOM设计及相应的算法,并采用存储过程来实现BOM的查找。实际应用表明,该方法能有效提高ERP系统的运行效率。
关键词:物料清单(BOM);存储过程;企业资源计划(ERP);算法
中图分类号:TP311.132.3
物料清单(Bill of Materials,BOM)属于重要的基础数据,也是构成ERP的核心,它表明产品的各部件、零件和原材料之间的结构关系,以及每个部件所需要的零部件的数量,它的结构设计的优劣关系到ERP系统能否正常、高效地工作。现在的制造型企业,产品结构相当复杂,有的产品种类繁杂,批量大小不一;有的产品由众多零部件组成,其中重点零部件和长周期零部件较多,生产周期长短不一,因此,BOM管理比较复杂,如果不能快速、高效地生成和分解物料清单,则整个ERP系统无法正常运行,势必给企业的正常生产带来阻碍。由此,研究BOM及与之相关的算法有着重要的意义。
1 BOM的概念及与作用
BOM,英文全称为Bill of Materials,中文译为物料清单。BOM是ERP系统中最基本的内容,是针对ERP产品结构的一种描述性文件;BOM是一个结构表,用来标的产品及其相关零部件的结构关系。
BOM是构成物料需求计划的基本信息,是联系主生产计划和物料需求计划的桥梁,是外协加工和生产装配的主要依据。因此,BOM在ERP系统中的作用十分重要,关系到整个ERP系统的运行效率。
2 BOM结构分析与改进
ERP系统要准确无误地计算所需物料数量和加工次序,首先要使系统能够清楚企业所制造的产品构成以及使用到的物料等情况。数据库设计的关键是怎样将BOM的树形结构转成计算机能识别的规范数据表。利用数据库中的数据表,可以很清晰地描述各种物料需求的数量和相互之间的组成结构关系。
现提出一种复合型BOM设计方案,该方案包含两个表:MaInfo和MaStructure。MaInfo记录物料的基本信息,MaStructure记录产品的结构关系。之所以将信息拆分成两个表,主要是因为在ERP、MRP中物料包含的信息非常多,如果将所有信息存放在一个表中,数据库表将过于庞大,造成数据库难以维护。
复合式BOM结构保留了“单父-单子”的优点,对于每一层系统只定义一次,可以大大节省存储空间。并且,当母件的结构发生改变时,只需修改一次数据库即可,保证了BOM数据的一致性和完整性。同时这种结构保留了“单父-多子”的优点,BOM结构清晰,在分解时算法相对简单,从而有助于执行效率的提高。
3 基于存储过程的BOM遍历算法
本文提出一种基于SQL Server存储过程的BOM查询算法,该算法可直接在SQL Server数据库中使用存储过程。通过SQL Server存储过程,创建一个临时表,通过一个循环语句实现对表的查找,由于存储过程在数据库服务器端运行,该算法执行效率较高,并具有较好的安全性和稳定性。实验数据表明,随着ERP产品的结构复杂度的增加,该算法相对于传统递归算法具有明显的优越性。
其算法简要描述为:
(1)创建临时数据表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及其展开表的数据库模式,上述算法的简单实现如下:
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)
文档评论(0)