Access 2013数据库应用案例课堂
上QQ阅读APP看书,第一时间看更新

2.4 数据库的设计步骤和方法

设计数据库的目的实质上是设计出最优的数据库模式,使之能够有效地存储数据,满足用户的实际需求。在初始设计数据库时,难免会发生错误或遗漏数据的现象。完成初步设计后,利用示例数据对其进行测试,Access很容易对原设计方案进行修改,可是在输入大量数据之后,再想修改就比较困难。正因为如此,在开发完整的数据库系统前,应确保设计方案的合理性。

2.4.1 总体设计

创建数据库之前,第一个步骤是确定数据库的用途,专业术语称为“需求分析”。即开发者需要确定希望从数据库中得到什么信息。例如,学生信息管理是学校管理工作中的主要环节之一,涉及学生的基本信息管理、住宿管理、成绩管理、课程管理等方面。随着每年新学期的开始,学生的信息也在不断地发生变化。为了提高学生管理的效率,可以创建一个“学生信息管理”数据库。

在创建此数据库之前,需要确定其完成的功能,包括以下几点。

●能输入和修改学生的基本信息,例如学号、姓名、性别、出生日期、专业等。

●能输入和修改学生每学期的课程信息,例如课程名称、授课老师、上课时间等。

●能输入和修改学生各学期各门课程的成绩信息,例如学期名称、课程名称、相应成绩、是否及格等。

●能输入和修改学生的住宿信息,例如宿舍号、宿舍电话、宿舍人数等。

●能够查询学生的平均成绩、最好成绩、最差成绩等信息。

●生成标签报表,打印每个学生的基本信息。

●设置登录名和密码登录系统,查询以上信息。

从以上的例子可以看出,在确定数据库的用途时,希望数据库提供的一系列信息也随之显示出来。由此,可以确定在数据库中存储哪些事件,以及每个事件属于哪个主题。这些事件与数据库中的字段相对应,事件所属的主题则与表是对应的。

当然,构建系统所需要的大多数信息都来源于最终的用户,这意味着开发者可以和他们进行交流探讨以了解得更加全面。同时,在实际创建数据库之前,开发者不妨先在纸面上草拟一些希望数据库生成的报表,或者收集当前用来记录数据的表格,还可以参考某个设计得很好且与当前要设计的数据库相似的数据库,从而确保设计出合理的方案。

2.4.2 设计表

这是数据库设计过程中最重要的一个环节,也是最难处理的一个步骤。因为表对象是整个数据库的基础,也是查询、窗体和报表对象的基础。表结构设计得好坏会直接影响数据库的性能。一个良好的数据表设计应该具备以下两点。

●表不应包含备份信息,表之间不应包含重复信息,从而减少冗余数据。否则不仅会浪费空间,还会增加出错的可能性。

●每个表应该只包含关于一个主题的信息。

由此可知,开发者可以将信息划分为各个独立的主题,每个主题都可以设计成为数据库的一个表。例如,在“学生信息管理”数据库中可以划分为学生、课程、成绩等,因此可以设计“学生信息”表、“课程”表、“成绩”表、“班级”表、“宿舍”表等,如图2-1所示。

图2-1 “学生信息管理”数据库中的表

2.4.3 设计字段

每个表中都应包含同一主题的信息,即表中的字段应围绕这个主题而创建。在设计表中的字段时,应注意以下几点。

●字段应涉及所有需要的信息。

●以最小的逻辑部分存储信息。例如,学生姓名通常分为两个字段存储,“名字”和“姓氏”。

●不要创建相互类似的字段。例如,在“供应商”表中,如果创建了“产品1”和“产品2”字段,就很难查找所有提供某一特定产品的供应商。

●不应包含派生或计算得到的数据。例如,如果有“单价”和“数量”字段,就不要额外再创建一个“总价”字段存储这两个字段值的乘数。该数据完全可以通过建立查询来实现。

●明确有唯一性的字段。

Access为了连接保存在不同数据表中的信息,数据库中的每个数据表必须设置主键字段。例如,在“学生信息”表中设计“学号”“姓名”“性别”“出生日期”“籍贯”等字段,其中,设置“学号”字段为主键,如图2-2所示。

图2-2 “学生信息”表中的字段

2.4.4 设计关系

Access数据库中的数据保存在不同的表中,因此必须要有一些方法能够连接这些数据,使之作为一个整体使用。通过建立表间的关系即可解决此问题。

例如,在“学生信息管理”数据库中,来查看一个学生的基本信息和他所住宿舍的信息。因为一个学生只能有一个宿舍,而一个宿舍可以有多位学生,因此在“宿舍”表和“学生信息”表之间建立一对多关系后,就可以把这两个表中的数据结合在一起查询,如图2-3所示。

图2-3 “学生信息管理”数据库中的表关系

数据库表关系要求关系中所涉及的两个表内有唯一的字段,如果表中没有唯一的字段,则数据库引擎无法正确连接并提取相关的数据。这时,就需要向表中添加一个额外的字段,让该字段作为与其他表形成关系的点。

2.4.5 优化设计

在设计完需要的表、字段和关系后,应检查设计并尽量找出任何可能存在的不足。因为改变当前数据库的设计要比改变已经输入数据的表容易得多。

开发者应在每个表中输入充足的示例数据,以方便检查设计。可以创建各种查询,通过得到的结果来检查数据库中的关系,还可以创建窗体和报表的草稿,检查显示的数据是否符合期望,从中查找不需要的重复数据,并对其进行修改。

另外,许多表结构在当时使用效果非常好,但常常会因为用户修改或添加数据而崩溃。开发人员在使用过程中会发现,经常需要重新设计表的结构来适应这些变化。并且表结构发生变化时,所有相关的内容也会发生改变。因此,预测这些变化可以减少问题的发生。

2.4.6 创建窗体

经过优化设计后,如果当前的表结构符合期望,就可以在表中添加所有的数据,接着进行窗体的设计。在Access数据库系统中,开发者和使用者往往是分离的,而窗体更多地需要站在使用者的角度进行设计。因此,设计一个操作方便、美观的界面在数据库设计中占有相当重要的地位。

窗体以表或查询为数据源。设计窗体之前,若当前存在的表不满足需求,开发者还需创建查询来作为数据源。

设计窗体时需要在屏幕上放置以下三类对象。

●标签和文本框控件:以方便输入数据。

●其他特殊控件:例如按钮、列表框、复选框等。

●提升窗体效果的图表对象,例如颜色、线条、矩形等。

设计窗体时,将上述控件放置在窗体中的相应位置,并设置对应的事件属性,即设置对应的宏。至此,一个简单的数据库系统就设计完成了。若要完成更复杂的功能,设计相应的VBA模块对象即可。