Northwind Tr a d e r s数据库包含一个E m p l o y e e s表,其中提供了有关该公司雇员的大部分信 90 第一部分 Access基础 下载 图4-17 指定新表和其他表字段之间的关系 图4-18 最后一个“表向导”对话框息,是一个典型的个人表。以下几节将解释如何向该数据库添加一个叫 Personnel Actions的表。 Personnel Actions表用于记录雇员的有关雇用日期、薪水、出勤率、奖金、能力评价和其他有 关赔偿的事件。因为 Personnel Actions是基于E m p l o y e e s表中的信息的,所以第一步是预览一 下E m p l o y e e s表的结构,看看如何在新的表中使用它。表结构要在设计模式中才能显示。在下 一章“输入、编辑和验证表中的数据”中,我们将向 Personnel Actions表添加有效性规则并向 表中输入记录。 在设计模式打开E m p l o y e e s表时,应遵循如下步骤: 1) 关闭任何当前打开的A c c e s s文档窗口,然后单击“数据库”窗口中的“表”快捷方式, 显示N o r t h w i n d . m d b数据库中所有表的列表。 2) 单击“数据库”窗口中的E m p l o y e e s,然后单击“设计”按钮。你还可以靠双击“数据 库”窗口条目,然后单击表工具栏的“设计视图”按钮来打开 E m p l o y e e s表。 3) 打开E m p l o y e e s表设计网格后,将文档窗口最大化到A c c e s s窗口大小。 4) 关闭“属性”窗口(如果它是打开的)。或者,选择“视图”,“属性”。 菜单命令强化了“表”属性窗口的可见性。“属性”命令左边的“属性”图标具有凹陷的 外观,说明属性窗口在“表”设计视图中总是可见的。 至此,你的显示将如图4 - 2 0所示。 “表”设计窗口显示字段名和数据 类型,并提供了一个可选的第三列用 于对表中每个字段添加描述性说明。 该显示称为网格,而不是一个数据表, 因为该显示不包含表中的数据。不管 表中存在的字段在窗口中能否完全显 示,都将提供一个滚动条。“字段属性” 窗格用于设置单个字段的附加属性和 简短描述每个窗格列的作用以及你选 择的“字段属性”项。你不能改变该 窗格的大小。 有一个字段不存在,这特别引人 瞩目:即社会保险号,因为大多数公 司都会在数据库中用之来标识他们的职员。 E m p l o y e e I D字段可以充分替代示例表中的社会保 险号,因为它可以为每个雇员分配一个唯一的顺序编号 (自动编号字段数据类型)。单击数据表 “视图”按钮,显示E m p l o y e e I D字段中的数据,然后单击“设计视图”按钮返回设计模式。 4.8.1 设计Personnel Actions表 与其向E m p l o y e e s表添加各种字段 (例如 s a l a r y、commission rate和b o n u s e s ),不如将雇员报 酬数据单独放在其自己的表中,原因如下: • 随着时间的推移,对于单个雇员要采取很多的人员操作。如果你将这些操作添加到 E m p l o y e e s表的记录上,你必须创建许多额外的字段保持一个人员操作的专用编号。例如, 如果想输入每季度一次的能力评价,你必须为每个季度添加一个新字段 来保持这些评价 信息。在这种情况下,平面文件管理器便遇到了前所未有的困难。 • 你可以将人员操作按照类型进行分类,这样所采取的任何操作便可以使用一组公共的字 第4章 使用Access数据库和表 91 下载 图4-20 Employees表的“表设计”视图段名和字段数据类型。这个功能将使Personnel Actions表的设计变得异常简单。 • 你可以用其E m p l o y e e I D编号来唯一地标识每个雇员。因此,人员操作条目的记录可以通 过E m p l o y e e I D字段与E m p l o y e e s表建立联系。这个功能消除了向 Personnel Action表中的 记录添加雇员名字和其他信息的需要。使用 E m p l o y e e I D字段链接 E m p l o y e e s表到 P e r s o n n e l表,两个表便建立了连接;之后它们将表现得像一个表一样。将重复性信息精简 到链接表所必须的那些将是你选择关系型而不是平面文件数据库管理系统的一种回报 (在 实际的商务雇员数据库中,你可能会使用雇员的社会保险号作为每个雇员的唯一标识符, 并使用它链接到Personnel Actions表)。 Personnel actions 通常被认为是秘密信息,并将对它的访问限制在有限的几个人之内。尽 管说A c c e s s允许你授权他人对单个字段进行访问,但是,在整个表上限制权限更为简单一些。 下一个步骤是设计Personnel Actions表。第2 2章将讨论数据库设计理论和组成数据库的表。 因为Personnel Actions表与E m p l o y e e s表之间有容易辨别的关系,所以这个例子的理论背景显得 无关紧要了。 1. 确定表中应该包含什么信息 设计一个表首先需要确定该表应该包含的信息类型。典型的人员操作所涉及的信息大概有 以下各项: • 重要的日期 雇用日期和结束日期,如果适用的话都是重要的日期,而且这些日期是雇 主调整薪水,改变佣金比率和发放奖金的依据。你应该在每个操作上附加上日期,从而 决定该操作何时安排和什么时候真正发生。 • 操作的类型 如果人员操作是用编号字符而不是用全文字描述的,则需要的键盘输入有 可能会少一些。这种功能同时也节省了磁盘空间。使用大写的首字母作为编码,例如用 H代表h i r e d、T代表t e r m i n a t e d、而Q代表quarterly review,将有助于记忆。 • 操作的初始化和批准 原则上,雇员的主管将启动一个人员操作,然后再经过主管的经 理批准。因此该表应该包含主管和经理的E m p l o y e e I D编号。 • 有关的合计 假定薪水每两个月发放一次,而每个月合计一次;奖金每个季度发放一次, 根据能力评价计算;佣金根据该雇员的总销售额乘以某个百分比进行计算。 • 能力等级 用一个数字值表示雇员的能力已经司空见惯,但是在实际操作中难免显得有 些武断。通常分为1到9九个级别,9代表能力超常,而1则表示将之作为终止关系的候选 对象。 • 摘要和注释 该表应该提供对能力特别高或者低的情况以及调整薪水或奖金的原因的 解释。 如果你真正涉及到人员管理,你可能还会考虑让该表包含一些其他的额外信息,例如每个 薪水周期内的正常病休和休假。 Personnel Actions表只是一个例子,它并非想要向该数据库中 添加全面的人力资源开发能力。所描述的有限数据量主要用于解释新表在本章和后续章节中的 一些使用。 2. 向字段分配信息 在确定了表中包含的信息类型(叫做数据项或者就叫做项)之后,你必须将每个数据项分 配给表中的某个字段。这个过程包括挑选字段名称,要求该名字在表中唯一。表 4 - 7列出的是 Personnel Actions表的备选字段。备选字段后面的说明描述了向表中添加这个字段的目的。数 据类型的选择见下一节表4 - 8。 提示 尽管说表的名字包含一个空格,但是Personnel Actions表的字段名称中并没有包含空格(如 92 第一部分 Access基础 下载表4 - 8中所示)。正如本书前面曾提到的那样,在表名或者字段名中包含空格是一个很不好的数据 库设计习惯。在这里,表名中包含有一个空格是为了说明一个特殊的规则 (将名字包含在方括号 中),该规则在你引用的对象名中包含有空格时遵守。Northwind Traders 示例数据库在它的许多 表名中包含有空格,所以在这里使用空格也是为了能够与该数据库中其他的表保持一致。 表4-7 Personnel Actions表的备选字段 字 段 名 数 据 类 型 说 明 p a I D 数字 用于标识操作所针对的雇员。 p a I D编号的分配是基于E m p l o y e e s表的 E m p l o y e e I D字段的(该表和Personnel Actions表之间将存在链接关系) p a Ty p e 文本 所采取的操作的类型:H代表雇用、C代表佣金调整、Q表示季度检查、 Y代表年终总结、S代表薪水调整、B代表奖金调整、T代表终止雇用 p a I n i t i a t e d B y 数字 提出或者负责建议操作的主管的E m p l o y e e I D编号 p a S c h e d u l e d D a t e 日期/时间 安排操作所发生的日期 p a A p p r o v e d B y 数字 具体实施主管所提议的操作的经理的E m p l o y e e I D编号 p a E ff e c t i v e D a t e 日期/时间 操作发生的日期,如果操作没有发生,则有效的日期为空 p a R a t i n g 数字 能力的1 - 9个等级,数字越大表示能力越强。空白表示没有等级, 0表 示该雇员已经终止雇用关系 p a A m o u n t 货币 每月的薪水和季度奖金或者以小数表示的与业绩有关的佣金百分比 p a C o m m e n t s 备注 能力评价的摘要和对建议或采取的操作的注释。注释的长度是不受限 的。主管和经理有权增减和修改注释 提示 每个字段要求使用不同的名字。这个例子在每个字段名前面加了一个首字母缩写pa ,为的 是明确标识该字段属于Personnel Actions表。一种较为常见的做法便是对于那些位于不同的表但 是却包含有相同数据的字段使用相似的名字。由于A c c e s s要在表达式中使用字段名验证数据输入 和计算字段值 (在本章后面和第9章进行讨论),所以最好的做法便是向这样的字段分配相关但是 却彼此不同的名字。 4.8.2 创建Personnel Actions表 现在我们可以实际应用一下所学的有关字段名、数据类型和格式的知识了,我们接下来将 把Personnel Actions表添加到 Northwind Tr a d e r s数据库中。表 4 - 8所示的字段名来自于表4 - 7, 在这个表中还列出了字段属性的其他设置。“标题”列中的文本替代了“字段名”属性,不然 的话,字段名将显示在字段标题按钮中。 表4-8 Personnel Actions表的字段属性 字 段 名 标 题 数 据 类 型 字 段 大 小 格 式 p a I D I D 数字 长整数 常规数字 p a Ty p e Ty p e 文本 1 >@ (全部大写) p a I n i t i a t e d B y Initiated By 数字 长整数 常规数字 p a S c h e d u l e d D a t e S c h e d u l e d 日期/时间 不适用 短日期 p a A p p r o v e d B y Approved By 数字 长整数 常规数字 p a E ff e c t i v e D a t e E ff e c t i v e 日期/时间 不适用 短日期 p a R a t i n g R a t i n g 数字 整数 常规数字 p a A m o u n t A m o u n t 货币 不适用 # , # # 0 . 0 0 # p a C o m m e n t s C o m m e n t s 备注 不适用 (无) 第4章 使用Access数据库和表 93 下载你必须将 p a I D字段的“字段大小”属性设置为长整数数据类型,尽管说你或许不指望 Northwind Tr a d e r s会超过32 767名雇员(整数所允许的最大值为32 767)。必须使用长整数数据 类型的原因是E m p l o y e e s表的 E m p l o y e e I D字段自动编号字段数据类型是长整数。在本章的后面 “实施参照完整性”一节中将解释为什么 p a I D的数据类型必须和E m p l o y e e s表的E m p l o y e e I D数 字字段相匹配。 添加新的Personnel Actions表到Northwind Tr a d e r s数据库时,请遵照如下步骤: 1) 如果E m p l o y e e s表是打开的,将之关闭,单击“关闭窗口”按钮,激活“数据库”窗口。 2) 单击“数据库”窗口的“表”快捷方式(如果它没有被选的话),然后单击“新建”按 钮。在“新建表”对话框中选择设计视图,单击“确定”。A c c e s s将进入设计模式并打开一个 空白网格,在这个空白网格中,你可以输入字段名、数据类型和可选的注释。在默认情况下, A c c e s s将选择网格的第一个单元格。 3) 键入p a I D作为第一个字段名。按下“回车”,接受字段名; Access将添加默认的字段类型、 文本。 4) 按下F 4,打开“数据类型”列表 (在这里使用功能键比使用鼠标要好一些,因为你主要 是靠键盘来完成输入的)。 5) 使用箭头键选择“数字”数据类型,然后按下“回车”接受你的选择 (见图4 - 2 1 )。 图4-21 输入paID字段的数据类型 6) 按下F 6,转移到“字段属性”窗口的“字段大小”文本框。 A c c e s s已经输入了长整数作 为“字段大小”属性的默认值。如果想要学习有关“字段大小”属性的更多知识,可以按下 F 1 寻求帮助。 无论何时创建一个新的“数字”类型的字段, A c c e s s都将输入长整型作为“字段大小”属 性的默认值。因为 p a I D字段应该是一个长整型,所以不需要再为该字段设置“字段大小”属 性,而可以直接跳到步骤8; 当从表4 - 8中输入其他的字段时,请继续步骤7。 7) 对于“数字”数据类型,按下F 4,打开“字段大小”列表。从该列表中为字段选择适当 的字段大小值,然后按下“回车”。 8) 按下向下的箭头,选择“格式”文本框。你可以按下 F 1寻求“格式”属性的上下文相关 帮助。 94 第一部分 Access基础 下载9) 按下F4,打开“格式”列表,从列表中选择“常规数字”,然后按下“回车”(见图4-22)。 10) 连续按下向下的箭头三次,跳过“小数位数”和“输入掩码”属性,选择“标题”文 本框。跳过“小数位数”属性 ; 长整数没有小数部分,所以小数位数可以保持为自动。跳过 “输入掩码”属性,因为这个字段不需要输入掩码。 11) 键入I D作为标题,按下“回车”。将I D用作“标题”属性可以有效地减少显示 p a I D数 字所需的列宽度。 图4-22 将paID字段的格式属性设置为“常规数字” 12) 按下F 6,返回“表”设计网格。然后在输入表4 - 8中所示的基本属性之后为每个字段完 成其余的属性。 提示 使用说明可以创建当你在运行模式下的“数据表”视图中添加或者编辑记录时将在状态栏 中出现的提示信息。虽然说明是可选的,但是它是一个很好的数据库设计习惯,尤其是当无法 从字段名或标题属性明显看出该字段的目的时更是如此。你现在可以跳过标题属性的输入。在 完成了这里所描述的基本步骤之后,参照表4-8,再回过头来将它们一起输入进去。 13) 按下“回车”,将插入符号转移到网格中下一行的第一个单元格。 14) 重复步骤3到步骤1 2,为在表4 - 8中列出的Personnel Action表的其余8个字段输入各自的 值。N/A (不适用)的意思是表4 - 8中的条目不适用于该字段的数据类型。 现在,你的“表”设计网格看上去应该与图 4 - 2 3中所示的一样。你可以再次核查一下为每 个字段选择的属性项,方法是用箭头键依次选择每个字段名字,然后读取字段属性窗口中各属 性的值,如属性文本框中的值。 单击“数据表”工具栏按钮,返回运行模式下的“数据表”视图,查看一下你的工作结果。 你将会看到“是否立即保存表 ?”消息。单击“是”;另存为对话框打开,让你给表命名。在对 话框中出现的是默认的名字,Ta b l e 1。在其中键入Personnel Actions,如图4 - 2 4,然后按下“回 车”或者单击“确定”。 这时,A c c e s s将显示一个对话框通知你这个新建的表没有主键。在本章的后面我们将为 Personnel Actions表添加主键,所以在这个对话框中单击“否”。 在“数据表”视图中打开该表,我们将会看到其第一个默认的记录。为了查看新表的所有 第4章 使用Access数据库和表 95 下载字段,可以拖动分隔每个标题的垂直细条将字段的名字变窄。当完成了字段显示宽度的调整后, Personnel Actions表便出现在数据表视图中 (见图4 - 2 5 )。这时只有一个空的假想追加记录 (如果 你在这个单元格中输入值, A c c e s s将把这个记录添加到表中 )。我们还有许多属性值要添加到 Personnel Actions表,所以在这里我们暂时不要在假想的追加记录中输入数据。 图4-23 Personnel Actions表初始设计 4.8.3 在数据表视图中直接创建一个表 如果你是十足的数据库新手并且面临着马上要创建数据库表的压力, A c c e s s允许你在“数 据表”视图中直接创建表。当你在“数据表”视图中创建表时, A c c e s s将显示一个有2 0个字段 和3 0个空记录的默认结构。然后你便可以直接向表中输入数据了。当你保存该表时, A c c e s s将 对你输入的数据进行分析,为每个字段选择一个最能匹配所输入数据的数据类型。