计算机应用研究
APPLICATION RESEARCH OF COMPUTERS
2000　Vol.17　No.2　P.84-86



注塑加工数据库管理系统的研究
伍晓宇　黄生
摘 要 对新开发的注塑加工数据库管理系统进行讨论，该系统能处理包括计算公式在内的不同形式的工艺参数，在生产中证明是实用的。
关键词 注塑加工 数据库 解释器
1 前言
　　在注塑生产过程中，需要不断地对各种工艺参数进行优化处理。例如，对注塑温度、注塑压力和所选材料等参数的优化，同时，对于各种工艺参数，在不同设备和不同的生产环境下所得到的优化数据会有所不同，这就需要设计一个智能化的数据库管理系统，能够对注塑加工过程的各种优化数据进行管理。另外，由于各种资料、标准涉及到大量的计算公式，因此，还应要求该数据库管理系统具备处理各种计算公式的能力。
　　本课题是香港第二大注塑机生产企业华大注塑有限公司与深圳大学工程技术学院的合作项目。经过我们的深入调研，确定在注塑加工过程中，主要涉及的工艺参数数据形式有四种：定值、范围值、系列值和计算公式。
2 O-O分析
　　面向对象(OO)是目前计算机领域的主流技术。与传统软件工程方法相比，面向对象软件工程方法具有如下几方面的优点[1]：
　　①从现实世界中客观存在的事物(即对象)出发来构造软件系统，并在系统构造中尽可能运用人类的自然思维方式，可以使系统直接地映射问题域，保持问题域中事物及其相互关系的本来面貌。
　　②OOA与OOD采用一致的表示法，不存在传统方法中分析与设计之间的鸿沟。
　　③OOP阶段产生的程序能够紧密地对应OOD模型。
　　④系统中最容易变化的因素－功能,被人微言轻对象的服务封装在对象的内部,避免了所谓的“波动效应”。
　　作者采用面向对象方法设计注塑加工数据库管理系统，其中包括面向对象的分析OOA(Object-Oriented Analysis)、面向对象的设计OOD(Object-Oriented Design)、面向对象的编程OOP(Object-Oriented Program)和面向对象的测试OOT(Object-Oriented Test)四个阶段。
　　1)OOA过程
　　图1为本系统的OOA基本模型(类图)。

图1　注塑加工数据库管理系统的OOA模型(类图)
　　通过考查该系统的问题域和系统责任，共发现了七个对象类：
　　DBMS管理人员：这是一个主动对象类。它在系统中扮演的角色是控制系统对用户数据库进行各种处理。“DBMS管理人员”有一个名为“DBMS管理”的主动服务,它通过消息引用其它对象(“用户数据库”和“主用户界面”)的相应服务而完成自己的功能。
　　用户数据库：这是用户所期望处理的数据库。它可以向“临时数据库”和“住处数据库”对象发消息，执行相应的服务。
　　数据库：主要作为“临时数据库”和“信息数据库”这两个类的父类而存在。
　　临时数据库：派生于“数据库”类，用来存放用户数据库的记录。系统直接处理的就是这个数据库，它可以向“用户数据库”对象发消息，执行相应的服务。
　　信息数据库：派生于“数据库”类，用来保存有关用户数据库的一些信息。
　　用户输入：主要用来向系统提供所需要的各种信息。
　　主用户界面：在这个界面内实现系统的各种功能。由于“主用户界面”类与“临时数据库”和“信息数据库”之间有着频繁的信息交互，因此，作者利用整体－部分结构，将“临时数据库”和“信息数据库”作为“主用户界面”的两个部分对象。
　　2)OOD、OOP和OOT过程
　　由于OOD和OOA采用一致的概念、原则和表示法，二者之间不存在鸿沟，不需要从分析文档到设计文档的转换，因此，在OOD中主要解决OOA中的一些具体实现问题。下面简略描述一下在OOD中如何实现在OOA中所发现的对象类。
　　在OOD中，并没有“DBMS管理人员”这一个主动对象类。实际上，系统是通过用户操作Windows的一些控件，由Windows内部发送消息来实现它的主动服务“DBMS管理”的。
　　在OOD中也没有“用户数据库”这个对象类。它只是作者在OOA中为了分析思路的清晰而抽象出来的一个类。
　　在OOD中，用MFC类库提供的CRecordset类和OOA中的“数据库”类相对应。同时分别设计CRecordset类的派生类CFundamental和OOA中的“临时数据库”类相对应；CFieldInfoSet类和“信息数据库”类相对应；CDialog类的派生类CDbRecordDlg与OOA中“主用户界面”类相对应，OOA中的“用户输入”类在OOD中主要是通过创建一些对话框类来实现的。
　　至于注塑加工数据库管理系统的OOP和OOT，在具体的编程和对系统的调试过程中已经得到实现，这里不再详述。
3 开发DBMS系统遇到的几个问题以及解决办法
　　1)建立柔性的注塑加工数据库管理系统
　　一般来说，Visual C++提供的MFC类库处理的是某个具体的数据库，也就是说，它所处理的数据库的字段信息是不易改变的。而注塑加工数据库管理系统所要处理的是各种不同的数据库，因此，实现对各种数据库的处理是开发这个DBMS系统的难点之一。图2反映了解决这一问题的设计思想。

图2
　　假设用户所要处理的数据库为A，称为用户数据库。它的字段信息会随着所处理的数据库的不同而发生改变。另外建立一个具有足够多字段的固定数据库B，称为临时数据库。它的字段是具体的，不会改变的。设法得到A的所有记录，把它们加入到B中，A与B之间应该保证在相同类型的字段之间进行数据传送，然后系统就可以处理B这个固定的数据库了。这也就意味着实现了对A这类任意数据库的处理。操作完成后，把B中所有的记录传回给A，实现用户对A所做的变动。然而B中所用到的字段会随着A的不同而发生改变。为了解决这个问题，这里再引入一个数据库C，称为信息数据库，用它来保存有关用户数据库A的信息。这样，就可以根据C的信息而对B作相应的处理了。
　　图3是该方案的主流程图。在此流程图中，用户数据库处理模块的功能是：设法获取所要处理的用户数据库A的有关信息(例如记录个数、字段个数、每个字段的名字和字段的数据类型等等)，并在信息数据库C中保存起来。获取用户数据库A的所有记录，把它们加入到临时数据库B中去。同时把用户数据库A中的信息在主用户界面中显示出来。

图3
　　2)各种数据形式的处理
　　先作一个约定，以便使DBMS系统能够识别范围值、系列值或计算公式等数据形式。
　　若参数字串中含有“～”，则判定参数类型为范围值。
　　若参数字串以“；”结尾，则判定参数类型为计算公式。
　　若参数字串以“[”开始,以“]”结尾,判定参数类型为系列值。
　　为了使系统具备处理计算公式的能力，系统中设计了一个数值运算解释器，用来实现公式运算。如图4所示，当数值运算解释器接受到系统的消息(表达式及其变量)后，便进行数值运算，然后把运算结果(表达式的值)作为消息返回给系统。

图4
　　3)处理注塑加工过程的优化数据
对于类型为范围值或系列值的参数，在试模或生产中经反复测试都可获得相应的优化数据，这就要求系统能够保存参数在不同条件下的最优值。
　　下面以范围值参数为例(与系列值参数的处理方法相似)，给出作者的解决方案。图5是方案示意图，其中D用来保存范围值参数的最优数据；F用来存放需要显示的某个范围值参数的优化数据；E用来存放处理范围值参数或系列值参数的最优值时需要用到的有关信息。
　　为了能够显示各个范围值参数所对应的优化数据，作者把每个优化数据都扩充成一条记录(该记录的字段名包括最优值所对应的表的路径dbPath、基表名tableName、所在记录的标识recordID和所对应的参数名FieldName等)，保存在预先所建立的范围最优值数据库D里面。根据最优值信息数据库E的信息，就可以对D中的最优数据进行“范围不断缩小的搜索”了。把最终搜索结果存放在范围最优值显示数据库F里面(事实上F是D的一个子集)，这样便识别出了所要处理的参数在不同条件下的最优数据。
　　实际上，可以有两种搜索方式(搜索顺序)来获取任意参数所对应的最优数据。
　　●表的路径(限定词和物主名)dbPath→基表名tableName→记录标识recordID→字段名FieldName
　　●基表名tableName→记录标识recordID→字段名FieldName
　　用第一种搜索方式可以悄艿识别任意数据库中表的参数所相应的最优数据。但有一个缺点：一旦表中参数的最优值被保存起来，这个表的存储位置便不能改变了。否则注塑加工数据库管理系统在识别参数的最优值时有可能出现错误。
　　用第二种搜索方式可以悄艿识别所有具有不同基表名的表中的参数相应的最优数据，而不论这个表的存储位置如何(可以存储在不同的路径或者不同的服务器上，并且可以具有不同的物主名)。但是，不能有基表名相同的表，否则这个DBMS系统在识别参数的最优值时有可能出现错误。本系统采用的是第二种搜索方式。
4 结束语
　　本文作者开发的注塑加工数据库管理系统，可完成对各种工艺参数的优化管理，由于运算解释器的引入，实现了定值、范围值、系列值和计算公式等各种标准数据的智能化处理，在香港华大公司的生产应用中证明是有效的。
伍晓宇（深圳大学工程技术学院 深圳 518060）
黄生（深圳大学工程技术学院 深圳 518060）
参考文献
1，邵维忠, 杨芙清著. 面向对象的系统分析. 北京：清华大学出版社, 南宁：广西科学技术出版社,1998
2，Marshall Brain, Lance Lovette. Developing Professional Applications for Windows95 and NT Using MFC
3，塑料模设计手册. 北京：机械工业出版社, 1994
收稿日期：1999年6月28日
