MySQL在凸度仪系统中的应用

2011-07-30 09:30:34郭肖静苗积臣吴志芳
原子能科学技术 2011年10期
关键词:凸度检索管理系统

郭肖静,苗积臣,吴志芳

(清华大学 核能与新能源技术研究院,北京 100084)

在凸度仪系统中,检测钢板过程中会产生海量数据。对这些历史数据,系统需进行存储、查询、检索、显示等功能。为此,必须使用数据库管理软件来完成以上功能。目前,市场上主要的数据库管理软件包括SQL Server、MySQL、DB2、Oracle等,其中,DB2和 Oracle均为大型商用数据库,需支付高额的授权费用才可使用,且需专门的配置维护,开发上有诸多不便。SQL Server是微软公司提供的数据库软件,只能在 Windows操作系统中使用,不具有跨平台的能力。MySQL是当前最流行的开放源码SQL数据库管理系统,它由MySQL AB公司开发、发布并支持,具有多平台支持、灵活架构、免费使用等特点。且当前很多网站均采用MySQL作为其后台数据库支撑,其稳定性和可靠性得到了充分验证。因此,在凸度仪系统中,拟使用MySQL对检测的钢板数据进行管理,完成系统的功能。

1 MySQL概述

MySQL是当前应用最为广泛的数据库管理系统之一,具有强大的跨平台能力(可运行于Windows、Linux、Unix等操作系统上)和丰富的开发接口(可与PHP、VC、VB、Delphi等语言实现接口,便于嵌入到多种应用中)。MySQL具有快速、可靠和易于使用的特点,当前使用Linux+PHP+Apache+MySQL已成为中小型网站提供Web服务的主流模式。此外,MySQL还是一种开放源代码的软件,非常便于研究和开发[1]。

MySQL采用客户端/服务器模式,由支持不同后端的1个多线程SQL服务器、数种不同的客户端程序和库、众多管理工具和广泛的应用编程接口API组成。此外,MySQL还支持多种数据类型,包括带符号/无符号整数,1、2、3、4、8 字 节 长,FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET、ENUM等,便于各种数据高效率存储[2]。

综合以上特点,在凸度仪系统中,选择MySQL作为数据库管理系统,与凸度仪其他模块配合,实现完整的数据存储、检索、排序、显示等功能,完成设计要求。

2 凸度仪系统中数据库的设计

2.1 凸度仪系统简介

凸度仪系统的结构如图1所示。

图1 凸度仪系统结构Fig.1 Structure of instantaneous profile gauge system

在图1中,采集模块采集到原始的检测数据,交给运算模块进行处理;运算模块通过差值、补偿等方法,计算钢板横断面上每个采样点的厚度、温度等信息,并将这些数据发送到显示模块;显示模块将这些数据进行实时显示,并进一步计算凸度、楔度等相关数据,同时还将这些数据按一定格式存储到数据库中,且能按用户要求,对这些历史数据进行检索、排序和显示。

2.2 功能需求分析

由于数据库只与显示模块存在接口,因此,只需分析显示模块对数据库的功能需求。

1)数据存储

当显示模块收到运算模块发送的钢板数据后,应实时地将这些数据存储到数据库中。在钢板扫描过程中,对数据库只有存储操作,没有检索和读取操作。

2)数据检索

在实际的应用环境中,将检测大量钢板,得到海量数据,如何快速检索到所需的钢板数据成为一重要问题。在本系统中,使用一些标记性参数作为检索条件,如检测时间、钢板类型、编号、钢板厚度、钢板凸度等指标,且这些检索条件可进一步进行逻辑组合,如与、或等操作。数据库应将满足检索条件的所有钢板编号返回给显示模块,用户在其中选定某个钢板后,数据库再将该钢板的完整数据传送给显示模块。

3)数据读取和显示

当用户选定某个钢板后,数据库应将该钢板相关的所有数据都发送到显示模块中,显示模块应根据需要,对整个钢板信息或局部信息进行显示。在显示过程中,不再与数据库发生数据交换。

2.3 数据类型分析

根据上面的需求,将存储在数据库中的数据分为3类。1)实际检测数据,包括钢板的厚度、宽度、温度、倾角等实际检测到的数据。这些数据的数据量极大,代表钢板的原始情况,一般只用于显示,而不用于检索。2)后处理数据,包括凸度、楔度等数据,是由实际检测数据经某些运算后得到的指标,用来表示钢板的检测结果。这些数据直观反映了被检钢板是否合格,既用于显示,也用于检索。3)钢板特征数据,包括检测时间、钢板编号、金属类型、标称值等。这些数据表示1块钢板的整体属性,既用于显示,也用于索引。

2.4 表的设计

数据库设计的核心是表的设计。数据库由若干个表组成,表中每1行代表1组记录,每1列代表1类数据。数据库的表和表之间可有相同的列,不同表的数据通过这相同的列来实现关联,从而获得对数据的完整访问[3]。

在本系统中,构造了2个表:1个用于存储实际检测数据,命名为PlateData;1个存储钢板特征数据和后处理数据,命名为PlateKey。两个表的具体构造列于表1、2。

表1 PlateData表的构造Table 1 Structure of PlateData table

表2 PlateKey表的构造Table 2 Structure of PlateKey table

在表1中,每个钢板有若干个横断面,每个横断面有N个探测点(本程序中N为256)。表中每1行表示1个横断面上的所有数据,具有相同钢板编号的所有行表示1个钢板的完整数据。该表只用于数据的存储和读取,不用于检索。

在表2中,每1行代表1个钢板的信息,其中前6项是钢板的特征数据,后2项是钢板的实测数据。该表主要用于数据的检索和排序。

表1和表2中共有的列项目是钢板编号,这也是本系统使用的数据库的主键。通过该项目即可实现所有数据的关联。

2.5 数据库操作

1)数据库连接与初始化

当凸度仪系统启动后,应连接到数据库管理系统,并选择所需使用的数据库。

2)数据的存储

当钢板开始检测时,运算模块先传送1帧起始帧,表明开始1个新钢板的检测,该帧中应包含钢板编号、合金类型、标称厚度、标称凸度等钢板特征数据。显示模块将这些数据保存,但暂不写入数据库中。而后,运算模块将每个横断面的数据打包成1帧发送过来,显示模块根据这些数据计算凸度、楔度等指标,并按表1的格式,将数据写入数据库中。当钢板检测结束后,运算模块会发送1个结束帧,此时显示模块将前面收到的钢板特征数据和计算得到的凸度、楔度等数据按表2的格式写入数据库中。

3)数据的检索

数据的检索在PlateKey表中进行,根据用户给出的检索条件,找到表中满足条件的若干行。

4)数据的读取

当用户具体选择了某1行记录后,获取该行的PlateNum值,并从PlateData表中提取数据。

3 数据库的编程实现

3.1 C语言接口函数

在本凸度仪系统中,使用Visual C++作为编程语言。因此要和数据库实现通信,必须使用MySQL提供的C++编程接口。在MySQL中,提供了 mysql.h、libmysql.lib和libmysql.dll。在C或C++文件中,只要包含“mysql.h”头文件,即可使用libmysql.lib和libmysql.dll中的函数[4]。在本系统的实现中,主要使用了如下5个函数。

1)MYSQL *mysql_init(MYSQL *mysql)

该函数用于初始化mysql结构,为后面的函数操作提供指针。

2)MYSQL * mysql_real_connect(MYSQL*mysql,const char*host,const char*user,const char*passwd,const char*db,unsigned int port,const char*unix_socket,unsigned long client_flag)

该函数用于应用程序与数据库管理系统的连接以及数据库的选择。在本系统中,当系统启动时,调用该函数。

3)int mysql_real_query(MYSQL *mysql,const char*stmt_str,unsigned long length)

该函数用于向数据库发送1条SQL指令。系统中,数据的存储、查询、读取等指令均通过该函数传递到数据库管理系统中。

4)MYSQL_RES *mysql_use_result(MYSQL*mysql)

该函数把数据库相应SQL指令的输出返回到应用程序中。通过该指令,即可得到数据库查询和读取的结果。

5)void mysql_close(MYSQL*mysql)

该函数用于关闭数据库。在本系统中,退出时要调用该函数。

3.2 功能测试

根据上述分析,利用MySQL的C API,实现对数据库的访问。使用 Microsoft Visual C++进行开发,并为数据库检索和读取单独设计了1个对话框,如图2所示。在图2左上方,列出了若干检索条件,可进行与、或等检索;下方是数据库中满足条件的所有记录。当选定其中某1个钢板时,在右侧即显示钢板整体的厚度分布,以及横纵两个方向的厚度分布。从图中可看出,数据库的存储、检索和读取功能均已实现,满足系统设计的要求。

图2 数据库系统测试图Fig.2 Dialog of database test

4 结论

本文介绍了凸度仪系统中数据库管理系统的设计与实现。选择MySQL数据库,分析了凸度仪系统对数据库应用的需求,从而提取了操作数据并设计了合理的表,保证了数据存储的完整性和检索的高效性。此外,分析了应用中所需的SQL指令及MySQL提供的C API中相关的函数,从而在使用Visual C++编程的凸度仪系统中,成功地嵌入了MySQL数据库,实现了数据的存储、检索和读取等功能。通过实际测试,达到了系统设计的要求。

[1]袁渊,曾文火.MySQL数据库接口的VC实现与应用[J].华东船舶工业学院学报:自然科学版,2002,16(5):41-45.YUAN Yuan,ZENG Wenhuo.Realization and application of MySQL database interfaces based on Visual C++[J].Journal of East China Shipbuilding Institute: Natural Science Edition,2002,16(5):41-45(in Chinese).

[2]薛军超.MySQL网络数据库开发[M].北京:人民邮电出版社,2001.

[3]兰旭辉,熊家军,邓刚.基于MySQL的应用程序设计[J].计算机工程与设计,2004,25(3):442-443,468.LAN Xuhui,XIONG Jiajun,DENG Gang.Development of application program based on MySQL[J].Computer Engineering and Design,2004,25(3):442-443,468(in Chinese).

[4]Oracle.MySQL 5.1reference manual[S/OL].Redwood City,California:Oracle USA,2003[2011-2-25].http:∥dev.mysql.com/doc/refman/5.1/en/.

猜你喜欢
凸度检索管理系统
利用轴线交错修整砂轮凸度曲线的方法探讨
哈尔滨轴承(2022年1期)2022-05-23 13:12:58
基于James的院内邮件管理系统的实现
3800mm中板轧机变凸度工作辊辊形研究①
冶金设备(2021年4期)2021-10-29 03:00:40
基于精轧平坦度优先的凸度分配策略
异步凸度轧制对AZ31镁合金板坯损伤抑制分析
重型机械(2020年3期)2020-08-24 08:31:40
2019年第4-6期便捷检索目录
基于LED联动显示的违停管理系统
海盾压载水管理系统
中国船检(2017年3期)2017-05-18 11:33:08
专利检索中“语义”的表现
专利代理(2016年1期)2016-05-17 06:14:36
基于RFID的仓储管理系统实现