烟草物流系统的数据库设计

时间:2022-09-14 08:29:48

烟草物流系统的数据库设计

摘要:基于B/S技术框架,本文从编码设计、概念结构设计、逻辑结构设计和物理结构设计等方面详细介绍了烟草物流系统的数据库设计,并从应用程序开发和数据存取效率的角度精心设计了系统的存储过程。本文的数据库设计在实际应用中取得了成功,对其它应用领域的数据库设计也具有一定的借鉴意义。

关键词:数据库设计;B/S;烟草物流系统

中图分类号:G642.4文献标识码:B文章编号:1006-5962(2013)02-0230-02

在IT技术普遍应用的今天,数据的存储变得越来越重要。目前,烟草物流行业纷纷采用信息化技术来提高工作效率,在烟草物流系统的开发工程中,数据库设计是重中之重。本文从概念设计、逻辑设计、物理设计等方面详细介绍烟草物流系统的数据库设计。

1系统基本结构

烟草物流系统的直接用户是卷烟企业,系统主要部署在卷烟企业中,另外,在烟草配送中心、烟草管理部门也有相应的模块,整体上是一个分布式的应用系统。系统采用B/S模式,前台应用程序基于JSP技术开发,本文以SQL Server 2000为例说明数据库的设计。

2数据库设计

良好的数据库设计能够为潜在数据提供一个高效的存储空间和存取机制,同时,能够降低与前台应用程序开发的耦合性,提高应用程序开发的效率。在项目开发过程中,努力抓住烟草物流系统的特点,以提高存取效率、减轻JSP程序员的编程压力为目标,对数据库进行了设计。

2.1数据编码。

在配送中心把成件的烟草拆开送出之前,即在烟草物流的大部分环节,烟草都是以“件”的形式存储和流通的,因此,对“件”进行良好的编码,对烟草物流系统的开发意义重大,同时,良好的编码也能促进良好的烟草市场秩序的形成。本文在对“件烟”编码时,充分考虑了省市信息、烟草厂家信息、烟型信息和流水号信息。以编码“HAAH0012533”为例,编码规则如下:

每件烟用一个11位(数字和英文字母组成)的码表示,其中:

a. 前两位:省份信息。每个省份具体用哪个码,参考CNNIC(中国互联网信息中心)给各省分配的二级域名。例如,“HA”表示河南省,“SC”表示四川省。

b. 第三位:烟厂信息。一个省中的一个烟厂可用大写英文字母A-Z其中之一表示。

例如,“A”表示郑州卷烟厂。

c. 第四位:烟型信息。一个烟厂出品的一种型号的烟可用大写英文字母A-Z其中之一 表示。例如,“H”表示软包红旗渠。

d. 后七位:流水号信息。一个七位数字可以表示该件烟是本年度烟厂的第几件烟。例如,“0012533”表示该件烟是本厂本年度出产的第12533件烟。

如果后面加上两位数字,可以对每条烟进行编码,如“HAAH001253350”中,最后两位数字50,表示在“HAAH0012533”件中第50条烟。

2.2概念设计。

在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构即E-R模式,才能更好地、更准确地用某一DBMS实现这些需求。概念结构能够真实、充分地反映现实世界;易于理解、易于更改。

在需求分析阶段得到的数据字典的基础上,按照自底向上的方法设计出了烟草物流系统数据库的E-R图。具体如下图所示:

2.3逻辑设计。

概念结构是独立于任何一种数据模型的信息结构。逻辑结构设计的任务就是把概念结构设计阶段得到的基本的E-R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。

2.3.1表结构设计。

我们首先把E-R图转化为一般的关系模式,然后把得到的关系模式与具体的DBMS(MS SQL Server2000)相结合,搭起了数据库的框架,最后对建立的表进行了规范化分析,作了适当的垂直分解,得到了数据库逻辑结构。

烟草物流系统数据库具体地包括如下几个表(横线标注字段表示主键):

product (clu_number, tob_type, pro_time) 工业库存表

tobacco(tob_type, tob_name, clu_cost, clu_price, bar_inprice, bar_outprice, tob_note) 烟的基本信息表

input(clu_number, tob_type, in_time, usr_id) 商业库入库信息(包括配送中心)

output(clu_number, tob_type, out_time, usr_id) 工业库出库信息(不包括配送中心)

outcenter(bar_number, tob_type, out_time, usr_id, lic_number) 配送中心出库信息

grocer(lic_number, gro_owner, gro_place, gro_telephone, gro_cellphone, gro_email)零售商信息

usr(usr_id, usr_name, usr_code, usr_ip, usr_level, usr_note)用户信息

其中,product,tobacco,usr,grocer四个表处于BCNF范式,具有较高的规范程度input,output,outcenter三个表处于第一范式:这里使用“逆规范化”的思想来提高数据存取的效率。

2.3.2视图(View)设计。

在设计了数据库基本的逻辑结构的基础上,为提高软件开发的松耦合性,本着良好的软件工程思想,设计了如下product_view, input_view, output_view, outcenter_view等几个试图。通过使用这些Views(视图菜单),前台JSP程序员可以避免写复杂的SQL语句,从而可以提高项目开发的进度。

2.4物理设计。

数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选择一个最适合应用要求的物理结构的过程,就是数据库的物理设计。下面从存取方法、存储结构、具体应用三个方面说明设计了数据库的物理结构。

2.4.1存取方法。

存取方法是快速存取数据库中数据的技术。DBMS 一般提供多种存取方法,常用的存取方法有:索引方法、聚簇方法、HASH 方法。本数据库中采用的主要是索引方法,尤其是通过主键建立的索引。随着数据库的运行和维护,必将产生新的索引、聚簇需求,会不断改进。

2.4.2存储结构。

对存储结构的规划是:

a.将数据分为易变部分(如,input,output,outcenter等表)和稳定部分(如,usr,tobacco,grocer等表)。

b.将表和索引存放在不同的磁盘上。

c.将数据文件和数据库文件分在不同磁盘上存储。

d.将日志文件与数据库对象分在不同的磁盘上存储。

e.定期备份数据文件和日志文件,放在磁带上。

f.系统配置暂时采用默认配置,随着使用情况不断优化。

总之,在概念设计中,能够给出系统全面的E-R图,在逻辑结构设计阶段,一方面要保证表结构处于较高的规范化程度,另一方面可以采用逆规范化思想来提高存取效率;在物流结构设计阶段,要以数据的高效存取为目标,精心设计存取方式和存储结构,还要能够根据业务需要设计大量的存储过程。

参考文献

[1]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2000

[2]梁方明.SQL Server 2000数据库编程[M].北京:北京希望电子出版社,2002

[3]李存斌.数据库应用技术――SQL Server 2000简明教程[M].北京:中国水利水电出版社,2001

[4]Ian Sommerville. Software Engineering,6th Edition.[S.l.]:China Machine Press,2003

上一篇:学会在化学教学中激发问题意识 下一篇:中等职业学校语文教师业务修养初探