1.3 Access数据库的基本设计流程
本节将介绍在Access中设计数据库的基本流程,了解这些内容可以使读者对数据库的设计过程有一个整体的了解。虽然本节内容并未涉及设计数据库的具体操作,但是为了能够设计出结构良好且易于使用的数据库,读者在真正开始设计数据库之前很有必要了解本节介绍的内容。
1.3.1 确定数据库的用途并组织相关信息
在进行数据库设计的整个过程中,首先需要确定数据库的用途、使用者和使用方式,从而使数据库的设计目标清晰明确,设计出具有针对性的数据库。为此,数据库设计人员可以在纸上使用一段或多段描述性的内容来记录数据库的用途、使用时间和方式,该过程可以为整个数据库设计提供一份明确的任务说明和参考,以便更好地把握设计重点和核心目标。
在确定数据库的用途后,接下来需要收集并组织数据库中的信息。收集信息的最直接方式是从现有的信息着手,收集任何现有的纸质文件和电子文档,并列出其中包含的每一种信息。此外,还可以向其他人征询意见,以免遗漏重要的信息。虽然最初收集的信息不一定包括数据库最终的所有内容,但是应该尽可能列出能想到的任何信息。
在列出数据库的相关信息后,可以重新考虑数据库的用途,即希望数据库为用户提供哪些信息。例如,可能想要在数据库中查找1月份销量位居前3名的产品信息,或者列出上半年订单累计销售额在1万元以上的客户名单。对数据库在使用中可能遇到的实际问题进行预估,将有助于检查数据库信息的完整性。
在数据库的初期构思阶段,应该预先考虑数据的最终输出形式——报表。可以先为最终的报表设计一个基本原型,并考虑在报表中需要包含哪些信息。同时,还应该考虑将每条信息分为最小的有用单元,使信息相对独立并具有灵活的可操作性,以便于在数据库中进行各种所需的处理。
1.3.2 数据库规范化设计的基本原则
重复和冗余的信息不仅浪费计算机的磁盘空间,降低任务的执行效率,还会在修改信息时出现遗漏和不统一的问题。设计良好的数据库应该确保信息的正确和完整,避免出现数据的重复和冗余等问题。
为了更好地组织数据库中的数据,将它们划分到多个表中,并确保每个表具有正确的结构设计。在设计数据库时需要遵循一些基本的设计原则,将这些原则应用到数据库设计的过程称为数据库的规范化。数据库的规范化主要包括3个阶段,依次将它们称为第一范式、第二范式和第三范式。
1.第一范式
第一范式规定:表中的每个值只包含单独的一项,不能包含多项。
如图1-16所示,表中的“姓名”列的每个单元格中都包含由逗号分隔的两项内容,每项内容都由姓名和年龄两类信息组成,该列数据的组织方式违反了第一范式的规定。如图1-17所示为整理后的符合第一范式的表,将姓名和年龄分别放到两列中。
2.第二范式
第二范式规定:表中的字段必须完全依赖于该表的主键,将不完全依赖于主键的其他字段划分到其他表中。
图1-16 不符合第一范式的表
图1-17 符合第一范式的表
第二范式的规定实际上是将一个大表划分为信息相对独立的多个小表,划分后的每个表中的信息只涉及一个实体。如图1-18所示,表中列出了每个订单的订单编号、订购日期,以及客户姓名、性别、年龄、电话等信息。由于有的客户提交了多个订单,所以这些订单中的客户信息将会重复出现。例如,订单编号为D003和D004的两个订单的客户姓名都是“钟任”,这两行记录的“客户姓名”“性别”“年龄”和“电话”几个字段中的值都是重复的。
图1-18 不符合第二范式的表
按照第二范式的规定,应该将与客户信息相关的字段从该表中删除,并将它们划分到用于描述客户信息的表中,这是因为一个客户可以有多个订单,客户信息并不完全依赖于某个特定的订单编号。
经过调整后得到“订单信息”和“客户信息”两个表,“订单信息”表中现在包含“订单编号”“订购日期”和“客户编号”3个字段,“客户信息”表中的客户信息也只出现一次,不再包含冗余数据。两个表同时包含一个“客户编号”字段,通过该字段为两个表中的数据建立关联,如图1-19所示。
图1-19 符合第二范式的表
3.第三范式
第三范式规定:表中的各个字段之间相对独立,彼此之间没有内在的联系。
例如,在一个包含商品单价、订购数量和总价的表中,通过商品单价和订购数量的乘积可以计算出总价。在修改商品单价或订购数量时总价会随之改变。该表中的“总价”字段违反了第三范式的规定,应该将“总价”字段从表中删除,并通过“计算字段”功能在表中添加“总价”。
1.3.3 创建和设计表
表是Access数据库中最基本也是最重要的对象,它为其他对象提供了要操作和处理的基础数据。在Access中需要先创建表,然后设计表的结构并创建表之间的关系,再将数据输入各个表中,以后就可以通过查询、窗体和报表来操作表中的数据了。表设计的好坏将直接影响数据库的使用方式和操作效率。
创建和设计表的基本步骤如下:
(1)在数据库中创建新的表。
(2)运用规范化设计原则规划表的用途,确定其中包含哪些字段,以及要在表中存放哪些类型的数据。在表设计视图中添加所需的字段,并设置每个字段的数据类型和描述信息。
(3)为每个字段设置所需的属性,以决定字段的特性、显示和行为方式。
(4)为表设置主键和索引,以区分表中的每一条记录,并加快检索和排序数据的速度。
(5)保存表的设计结果。
(6)为数据相关的两个或多个表创建关系。
在Access中创建表的方法有很多种,可以创建空白表,也可以创建包含现有数据的表。在创建包含现有数据的表时,可以使用Access中的导入功能将其他程序中的数据导入Access,也可以通过复制/粘贴的方式将数据导入Access中。创建表的详细内容将在第3章进行介绍,在表中添加数据的详细内容将在第6章进行介绍。
设计表的结构是指规划信息在表中的组织方式,包括这些信息所使用的字段名称、数据类型和其他一些属性。例如,应该将“商品名称”字段的数据类型设置为文本格式,而将“订购数量”字段的数据类型设置为数字格式。设计表结构的详细内容将在第4章进行介绍。
主键是一个用于区分表中每一条记录的字段。如果不想在表中出现重复的记录,则需要为表设置一个主键。由于Access规定在作为主键的字段中不能包含重复的数据,所以可以通过主键来唯一识别表中的每一条记录。主键的另一个重要作用是为两个表创建关系。为表设置主键的详细内容将在第4章进行介绍。
索引的主要作用是为了加快在表中搜索和排序数据的速度。Access会自动为表中作为主键的字段创建索引,用户也可以手动为字段创建索引。为字段设置索引的详细内容将在第4章进行介绍。
将数据划分到多个表中之后,通过在各个表之间创建关系,可以将这些表中的数据关联在一起,然后同时从这些表中提取所需的信息,就像这些信息位于同一个表中一样。表关系主要有一对一、一对多和多对多3种。如图1-20所示是为两个表创建的一对多关系,Access会自动在这两个表之间添加一条连接线。创建表关系的详细内容将在第5章进行介绍。
图1-20 为两个表创建关系
1.3.4 创建查询、窗体和报表
在完成表的设计并向表中添加数据后,接下来可以使用表中的数据创建查询、窗体和报表。无论创建哪种对象,其根本目的都是为了从一个或多个表中获取符合条件的数据。窗体除了可以显示数据外,还可以作为用户输入数据的操作界面。
查询的详细内容将在第8章和第9章进行介绍,窗体的详细内容将在第10章和第11章进行介绍,报表的详细内容将在第12章进行介绍。