豆仔玩库(20):“管家婆”特训第1课——数据库规划

软件世界

  嗨……我是豆仔!有一阵子没跟大家见面了,想死你们了!今天是我的乔迁之喜,从今往后,“数据库技术”版面就是我的新家,欢迎大家常来做客。随着生活质量的提高,家庭需要管理的信息也越来越多,如个人的收入、支出、物品的管理、亲朋好友的礼尚往来等等。怎么才能让家中的电脑在管理家务方面一显身手,把这个“乖乖女”培养成“管家婆”呢?就让豆仔来告诉你吧。

  为什么是Access

  家庭信息管理属于典型的中小规模数据库应用,Access、Visual FoxPro等桌面数据库都可以胜任。由于Access是Office办公套件的成员之一,普通家庭用户接触Access的机会远比Visual FoxPro多;而且经过微软的不断改进,Access的功能日益强大,不论是中小网站建设,还是中小企业生产管理,Access都能够出色地完成任务;最重要的是,Access继承了Office办公套件的优点,易用性非常突出,普通用户无须编写代码就可以一显身手。

  鉴于以上特点,我们选择了Access 2003来构建家庭事务管理系统。

  为什么要进行规划

  初次接触Access的人往往会问,构建数据库时什么是最重要的。要想回答这个问题,我们不妨先来看看图书馆是如何管理图书的。其实,一个空白数据库就相当于一座没有图书的图书馆,管理员的任务是把某一类图书(“军事”、“科幻”等)集中到一个书架上,再按“国别”或“作者”将图书存放到书架的某一列(行)中,列(行)中的图书又可以按照“出版日期”等顺序放置。只要管理员按照一定的“规则”管理图书,读者就能够很容易地找到自己需要的图书。

  数据库规划的任务就是制定这样一些“规则”,使存放在数据库中的数据井井有条,便于查询。

  如何规划

  根据上述原理,设计一个数据库大致要经过以下几个步骤:

  1.明确数据类型

  我们的目标是建立一个家庭事务管理系统,它能管理家庭成员的个人信息、收入、支出、物品以及亲朋往来事务等。落实到Access 数据库身上,它分类存放数据的“书架”称之为“表”。表的结构与书架非常相似,它按照数据的属性(例如家庭成员的身份证号码)建立“字段”,每个“字段”相当于书架上的一列(行),若干个“字段”的集合就构成了Access表。

  就像图书馆要为不同类的图书设置不同的书架一样,建立家庭事务管理系统之前,也必须仔细分析数据库需要存放的信息类别。由于表的作用是存放具有共同属性的数据集合,所以必须根据用途归纳需要管理的数据类型,并在此基础上设计Access表。反之,如果我们把个人收支数据放入家庭成员表,那么每增加一条收支记录就要更新许多无关的数据,这种做法不仅大大增加了冗余数据,而且给数据的使用和管理带来了很多困难。

  基于这种考虑,本文所述的管理系统起码包含“家庭成员”、“个人收入”等五张表(见图)。这样做有很多好处:冗余数据很少,能节约磁盘空间,数据的更新和检索速度也能大大加快。

  2.确定字段

  当图书馆每个书架所存放的图书类型确定以后,就要决定书架的某一列(行)存放的图书主题了。与此相似,Access表的每个字段存放了某一信息主题的具体内容。例如,“家庭成员”表的“身份证号码”字段存放家庭成员的身份证号。按照这一原则,表中的每一类具体内容都要创建一个字段。

  确定Access表包含哪些字段也有一定的原则。首先,每一字段存储的信息应该具有最小的逻辑成分。例如,“身份证号码”字段的内容不可再分,可以设成字段,而“性别/民族”字段含有可以细分的两个成分,会给数据输入和检索带来困难。

  其次就是表中的字段不能相近或类似。例如“个人收入”表,如果设计了“收入来源”字段,就不要设计“收入项目”字段,否则会带来数据冗余和歧义。

  再次,每个Access表必须有一个或多个“主键”字段。因为Access有时要同时使用多个表中的信息,例如将“家庭成员”表与“个人收入”表联系起来,就需要连接某个家庭成员的身份证号码与银行卡号码,所以数据库中的每个表应至少包含一个具有惟一性的非空字段,也就是说,该字段中的数据不会发生重复,并且不会为Null(空)。

  每个人的身份证号码绝对不会重复,所以将它作为表的主键是合适的,而姓名有可能发生重复(家庭成员中一般不会),一般情况下不能作为主键。

  3.表与表的关系

  由于不同类型的信息被分开放到不同的表中,并且各个表都标志了自己的主键。所以需要通过某种方式告诉Access,以便采取某种方法将表中的相关信息重新组织到一起。为此,必须定义表与表之间的关系。

  例如在本例中,各人的收入、支出分开存放在“个人收入”和“个人支出”两张表中,如果需要进行收支情况核算,就要考虑通过何种手段将两者组织在一起。因此,表与表之间的关系也是设计表和字段时必须考虑的。

  4.检查纠错

  表、字段和(表与表之间的)关系是Access数据库规划的最重要的内容,初步设计完成后不要急于使用,而应该仔细分析检查数据结构的设计,努力找出不足。

  一种可行的方法是在每个表中输入若干条数据,通过创建查询的方法观察结果是否正确,了解表之间的关系是否符合逻辑。还可以创建窗体和报表,大致检查数据结果是否符合预期。一旦数据库的结构和界面全部定型并投入使用后才发现数据库的结构有问题,再修改就非常困难了。

  说了这么多还没有建立数据库,有些朋友不免有些着急。其实,磨刀不误砍柴工,认真规划数据库结构就像拍电影前仔细揣摩剧本,合适的剧本是拍好电影的基础。豆仔下次教大家给Access“图书馆”建立“书架”(表)。