Access 2016数据库应用与开发:实战从入门到精通(视频教学版)
上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模块对象即可。