|
本帖最后由 todaynew 于 2014-5-11 08:48 编辑
今天在论坛看到版友大山同志一个关于将Excel表格做出数据库的问题,这是一个涉及到农技人员监测农作物的管理问题。他将十几个Excel表打包上传到论坛,我大体浏览看了一下这些表格,觉得是一个比较有意思的问题。于是决定对他进行开发指导,便留言让他加我的QQ。也许该同志并不在线,亦或对我不信任,反正是到现在也没加我。倒是版友沧海桑田同志希望这个实例完成后能拿出来分享。考虑到有不少同志都曾提出过希望了解数据库开发的过程,特别希望知道分析问题和解决问题的方法。于是便决定以此问题来展开一个开发过程的实例讲座,希望能对同志们的学习提高一个比较完整的参考。
数据库开发之初,首先需要进行的是数据库的设计,在这个设计环节先不要过多考虑窗体等方面的问题,要把关注点集中到数据表结构和表间关系的处理上。要想设计出好的数据库,需要对现实的问题进行分析归纳和提炼,这个工作异常重要,也异常困难。这一课的讲座,将阐释一些具体的处理方法。
通常我们会在开发时得到一些数据,它们会是一些各种各样的表格。分析和观察这些表格,你会发现未来成型的系统需要干些什么事情。比如,我在观察了大山同志的一组数据表后,得出的结论是:他希望做一个农产品生长情况监测管理系统。由这个结论,接下来就是要弄清楚系统的管理主体、客体和管理的过程。通过观察可以看出,管理的主体是基层的农技部门,管理的客体是农作物不同生长期的指标,管理的过程是抽样监测并将数据记录到系统中,并进行定期的分析。
总体的情况分析完成后,再对细节问题进行分析和归纳。这个过程就需要仔细的观察加上丰富的想象了。大体上可以这样做的:
第一是查看有哪些数据可以用字典表进行管理。字典表用来统一保存哪些简单分类的数据,这样做可以避免建立很多的数据表,使后期编程和数据维护的难度都降低。本例中可以提炼出9种分类型数据,这些数据均可纳入字典表管理。
第二是查看有哪些数据是层级型的结构,并可以用层级设计的方法在数据表中表现出来。本例中可以很快找到了地区和部门应该是层级结构数据,可以分别用两个表保存它们。这里需要提醒的是,但凡具有层级结构的数据,都尽可能用一个数据表来保存,不要按层级设计多个数据表。
第三是观察监测的类型有哪些?通过观察发现,监测实际上分为三大类,第一类是日常的监测,第二类是灾害性监测,第三类是收成结果监测。其中前两类以观察点为对象,后一类对象的范围不清晰。这三种对象虽然在现实的业务作业中有比较大的差异。但从数据库设计的角度来看,这些差异并不影响一致性的数据处理。
第四是观察三类监测的具体指标,它们有些是技术性的指标有些是经济性的指标,但大多数都是数字型的。无论它们用于何种监测,无论它们在什么阶段使用,都可以抽象出来它们就是一个数据型的监测指标。有了这个抽象,就可以对它们进行一致性的数据处理。
大体做完这些分析后,就是具体的数据库设计了。这一步的重点是先确立表间关系,而不是设计具体的数据表。确立表间关系,是说在头脑中先形成数据表间的联系。这个时候,你需要将表想象为一个抽象的对象,比如部门表你抽象的是一个部门,这时并不需要想象出部门表中包含什么字段。人员表你只需要抽象为人员,这样你就能想象出来,部门与人员是一对多关系了。这是一个最简单的表间关系,很容易想象出来。比较复杂的是有些数据表是多父表,或多子表,这种情况就看你的脑瓜子灵光与否了。
表间关系确立下来后,就是具体的每个数据表的结构设计了,这是一个基础的东西,在此不赘述。
实际上的分析和思考过程,并不是按部就班进行的,很多是基于习惯的下意识反映。通常当你有了经验后,很多复杂的思考和分析,都是在瞬间完成的,只是你自己不一定意识到了这些思维经过了些什么过程而已。我这样归纳一二三四五,只是告诉同志们,这些是我认为的一些重点,以便提醒同志们注意到这些问题。
以下的示例中,有大山同志提供的Excel表,和我据此设计出来的数据库,同志们可以参考一下。接下来我将再这个数据库的基础上,讲解窗体设计,功能的代码实现等章节。有兴趣的话,你可以跟我一起做,或者用你的方法去完成,看看最后的系统哪种更为合理。
下一课
示例:
视图:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|