4.3 创建表之间的关系
在数据库中为每个主题创建表后,必须为Access提供在需要时将这些信息重新组合到一起的方法。具体方法是在相关的表中放置公共字段,并在表之间定义表关系。
4.3.1 表关系概述
在创建数据库(如窗体、查询和报表)对象之前需要创建表关系,这样做有以下几个原因。
1.可为查询设计提供信息
要使用多个表中的记录,通常必须创建连接这些表的查询。查询的工作方式为将第一个表主键字段中的值与第二个表的外键字段进行匹配。
2.可为窗体和报表设计提供信息
在设计窗体或报表时,会使用从已定义的表关系中收集的信息,并用适当的默认值预填充属性设置。
3.防止出现孤立记录
表关系可以作为基础来实施参照完整性,这样有助于防止数据库中出现孤立记录。孤立记录指的是所参照的其他记录根本不存在。
在设计数据库时,将信息拆分为表,每个表都有一个主键。然后,向相关表中添加参照这些主键的外键。这样外键-主键将构成表关系和多表查询的基础。
4.3.2 创建表关系
用户可以在【关系】窗口中创建表关系,也可以通过【字段列表】窗格向数据表拖动字段来创建表关系。除此之外,用户还可以在创建关系表时,设置关系表的参照完整性。
1.创建关系
执行【数据库工具】|【关系】|【关系】命令,在弹出的【显示表】对话框中,选择列表中的数据表,单击【添加】按钮。
此时,在【关系】窗口中,将显示新添加的数据表。拖动【客户】表中的【ID】字段至【订单】表中的【客户ID】字段。
然后,在弹出的【编辑关系】对话框中,将显示两个数据表连接的字段,单击【创建】按钮即可。
此时,在【关系】窗口中,将显示两个字段之间的关系线,表示建立了表关系。
2.设置参照完整性
使用参照完整性的目的是防止出现孤立记录并保持参照同步。
在【编辑关系】对话框中,用户可通过启用【实施参照完整性】复选框,来显示两个表之间的关系类型。
此时,在【关系】窗口中的关系线处,将显示两个表之间的关系类型。
设置参照完整性时,Access将拒绝违反表关系参照完整性的任何操作,如拒绝更改参照目标的更新,以及拒绝删除参照目标等。
另外,实施参照完整性之后,应用适应以下原则。
❏如果值在主表的主键字段中不存在,则不能在相关表外键字段中输入该值,否则会创建孤立记录。
❏如果记录在相关表中有匹配记录,则不能从主表中删除。但通过启用【级联删除相关记录】复选框,可以在操作中删除主记录及所有相关记录。
❏如果更改主表中的主键值会创建孤立记录,则不能执行此操作。但通过启用【级联更新相关字段】复选框,可以在操作中更新主记录及所有相关记录。
4.3.3 编辑表关系
在【关系】窗口中,将光标放置在关系线上,双击该关系线。
然后,在弹出的【编辑关系】对话框中,可以更改关系任意一侧的表、查询或字段。除此之外,还可以设置连接类型、实施参照完整性,以及选择级联选项。
另外,在【编辑关系】对话框中,单击【联接类型】按钮,可在弹出的【联接属性】对话框中,编辑连接的属性内容。
在【联接属性】对话框中,显示3种选择,它们使用的连接类型以及为每个表返回所有行还是匹配行。