写的太差了,不过也贴出来

我所在公司是一家第三方物流企业,为适应自身业务的高速发展,于2010年3月至2011年9月期间设计开发了一套运输管理系统,系统采用了WINDOWS SERVER 2003 服务器,SQL SERVER 2005数据库,.net架构使用C#开发。开发系统中我担任系统架构设计师和数据库设计师。系统分为四个大的模块,其中包括运输供应商管理模块、自有车辆管理模块、财务管理模块、经营分析模块。这四个模块有可以划分为十几个小的模块分别开发。为保障运输管理系统开发完成后的适用性和稳定性,我们把精力着重放在了数据库设计上,利用数据库关系模型修改数据库机构,力求在系统中达到数据明确准确,消灭数据库系统中的脏数据,使得系统可以稳定的运行。同时,数据库设计过程中也发现了一些设计方法上的问题,为我们未来的数据库设计及系统设计积累了宝贵的经验。
我所在的公司是一家从事第三方物流服务的物流企业。公司于2010年3月起开始开发一套运输管理系统,系统从调研到开发一共耗时一年半与2011年9月投入使用。随着国家经济与社会的发展,物流产业得到了有效的发展,我所在的企业也呈现一种爆炸性的增长;但是企业的增长并没有能与企业的信息化管理同步进行,企业的信息化程度难以满足企业的业务增长需求,所以公司决定开发一套运输管理系统来提高企业对运输业务的管理能力,并为企业未来全面的信息化改造积累经验。我在项目中担任系统架构设计的工作,并重点负责底层数据库的设计与实施。运输管理系统采用B/S架构开发,服务器采用WINDOWS SERVER 2003,数据库采用sql server 2005,web服务器使用IIS6.0,使用基于.net的框架使用C#作为系统的开发语言。
运输管理系统共分为四个大模块,其中包括运输供应商管理模块、自有车辆管理模块、财务管理模块、经营分析模块。运输供应商管理模块是用于管理为我公司提供运输业务的供应商,因为我公司为制作业企业客户提供全程的物流外包服务,所以可能会将整个物流活动中的运输业务外包给其他物流公司。运输供应商管理模块中有包括价格管理模块、作业管理模块、运输供应商评价模块;价格管理模块是用于管理不同供应商、不同运输线路的报价;作业管理模块是用于记录委托给运输供应商的运输业务计划和运输的实际情况;运输供应商评价模块是根据运输供应商的作业表现情况,定期给各个供应商作出评价。自由车辆管理模块中包括运输计划模块、运输实际模块、车辆成本信息模块;运输计划模块用于为自有车辆制定每日的运输计划,帮助运输管理员合理的调配车辆;运输实际模块是结合GPS记录运输过程中车辆实际的运输情况;车辆成本信息模块是用于管理车辆的基础信息并管理成本,其中包括对车辆税费、保险、油耗、维修的管理工作。财务管理模块包括了收入管理模块和支出管理模块;收入管理模块用于管理运输业务产生的收入;支出管理模块用于管理因运输业务产生的成本和费用。经营分析模块用于对运输业务作出综合性分析,得到KPI值。
运输管理系统着重于数据的记录与分析,所以数据库的设计对于系统未来的正常使用十分重要,为了可以提高数据库的设计效率我使用POWERDESIGN作为数据库的设计工具,并使用SOURCESAFE做为版本管理工具。我在现有的模块的基础上为每个模块设计自己的模块的数据库模型,模型设计为关系型数据模型。以运输供应商管理模块为例,设计之处为了适应系统的模块分布为每个模块设计了一个表。从而形成了价格管理表(供应商,联系方式,运输线路,业务类型,运输车型,运输价格),作业管理表(供应商,电话,作业计划时间,作业实际时间,运输线路,运输车型,运输车牌照号),运输供应商评价表(供应商,运输时间,是否准时,迟到时间,是否发生货损,损失金额)。经过初步设计后发现这样设计表格存在一些问题1、三个表都存在供应商这个字段,如果每个表都存放供应商信息,很可能出现各个表信息不一致的问题,同样的运输线路、运输车型、业务类型也同时出现在价格管理表和作业管理表中。2、运输供应商评价表中记录的运输时间、是否准时、迟到时间等信息是通过作业管理表推导出来的,这样如果其中一个表数据改变了会造成两个表的信息不一致。3、价格管理表中的联系方式字段概念模糊,没有记录到底是什么联系方式,同样的运输车型也没有准确的说明运输车辆的分类。
所以,基于以上问题我对数据库做了改动,第一将供应商信息提取出来设计一个供应商表(供应商编号,供应商名称,联系地址,联系方式,电子邮箱,移动电话),将运输线路信息提取并规范化形成运输线路表(运输线路编号,运输线路名,运输出发地,运输到达地,行驶路线描述),将运输车型信息提取出规范化形成运输车型表(运输车型编号,运输车型,汽车类型,载重单位,最大载重),这几个表是将系统需要的一些通用数据提炼出来形成基础的数据表,并为每个表添加一个唯一的编码主键,作为其他表引用时使用。第二结合建立的基础表先建立价格管理表(报价编码,供应商编码,运输线路编码,运输车型编码,运输报价),然后建立作业管理表(作业编号,运输计划时间,运输实际时间,报价编码,业务类型,车牌照号),最后建立运输评价表(运输评价编码,作业编码,货损金额)。通过这种数据的建模方式可以防止模块内部的数据异常。另外,可以通过数据表之间的连接、筛选、映射实现模块需要的数据。例如可以使用作业管理表的运输计划时间减去作业实际时间,计算出作业延误时间。
根据这一思路设计各个模块的数据库关系表,当所有的数据库关系表设计完毕后发现各个模块的数据库关系表存在着冲突的现象,比如说之前提到的运输供应商管理模块中的供应商表包括“供应商编号,供应商名称,联系地址,联系方式,电子邮箱,移动电话”,而在财务管理模块中同样有供应商表其中包括了“供应商编号,供应商名称,供应商类型,开户行,银行帐号”等信息。所以需要将两个表结合形成新的供应商表(供应商编号,供应商名称,供应商类型,联系地址,联系方式,电子邮箱,移动电话,开户行,银行帐号),这样运输供应商管理模块和财务管理模块就都可以使用供应商表而不发生冲突。自有车管理模块中的存在着自有车的作业计划表(作业计划编号,计划时间,业务类型,车牌照号),自有车作业实际表(作业实际编号,作业计划编码,实际时间,交通罚金,货损赔偿),因为自有车作业实际数据来自于GPS系统所以,所以自有车的计划和实际被分为两个表格存储。经分析发现自有车辆运输计划与供应商运输计划差别较大,不适于整合为相同结构的数据库表,但何以结合运输评价表中的数据和自有车运输作业的数据,生产我公司运输运输正点率、货损率等数据。由于使用了POWERDESIGN作为数据库设计的工具,大大降低了我修改数据的难度,POWERDESIGN具有数据库的映射功能,只要在PWERDESIGN中设计完成后可以直接映射到我所使用的SQL SERVER 2005数据库中,保持设计模型与实际数据库的一致。结合SORCESAFE保存历史的设计文档,可以及时的召回以前的文档,实现版本控制功能。
数据库设计中我着重从模块的功能出发,采用先部分再整体的方法设计数据库,但这种方法存在的问题是当为不同模块设计的表组合在一起时容易出现冲突。其中主要变现为1、不同模块中表示相同语义的字段采用了不同的数据类型,2、不同的模块相同语义的字段设计取值范围不同,3、不同模块中相同语义的字段有的地方用一个字段表示,有的地方用多个字段表示。所以在今后的工作做我要修改工作的方法,在设计各个模块的数据表后首先比较各个数据表找出其中需要拆分或合并的表格,当作到整个系统数据唯一性后再具体设计系统的数据表。这样可以极大的减少数据的冲突,从而减少整个数据库设计消耗的时间。通过这次开发我公司积累了系统开发的经验,特别是数据库规划方面方面的宝贵经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值