Access 2003完整教程:将多对多关系映射到数据库图表中 (ADP)

注释本主题中的信息仅适用于 Microsoft Access 项目 (.adp)。

背景信息

多对所关系使一张表中的每一行与另一张表中的多行相关联,反之亦然。例如,可以在“authors”表及“titles”表之间建立多对多关系,使每一个作者与其所有著作、每一本书与其所有作者相匹配。从两表中的任何一表创建一对多关系将错误地假设一本书只能有一个作者,或一个作者只能写一本书。

在数据库中,通过结合表实现表之间的多对多关系。结合表中包含想要关联的两个表的主键列。然后在两个表的主键列与结合表中的匹配列之间创建关系。“titleauthor”表是结合表。

在表之间定义多对多关系

  1. 在“数据库”窗口中,单击“对象”下的“数据库图表”按钮图像,再单击要打开的数据库图表,然后单击“数据库”窗口工具栏上的“设计”
  2. 在数据库图表中添加想要在它们之间创建多对多关系的表。

    操作方法:

    可以向数据库图表中添加一个表,以便编辑其结构,或让其与图表中的其他表相关。可以将现有数据库表添加到图表中,或者插入一个还没有在数据库中定义的新表。可以创建表或者用“表设计器”修改现有表。

    在数据库图表中插入新表

    向数据库图表添加新表意味着要定义一个数据库中还没有的新表。若要创建新表,必须定义构成表的每个列。当保存该表或数据库图表时,就在数据库中创建了该表。

    1. 在“数据库”窗口中,单击“对象”下的“数据库图表”按钮图像,再单击要打开的数据库图表,然后单击“数据库”窗口工具栏上的“设计”

      若要在当前图表中创建表,单击“插入”菜单中的“新建表”命令。

      – 或者 –

      在图表中单击鼠标右键,并且选择“新建表”命令。

    2. 若要在当前图表中创建表,单击“插入”菜单中的“新建表”命令。

      – 或者 –

      在图表中单击鼠标右键,并且选择“新建表”命令。

    3. “选择名称”对话框中,修改或接受系统指定的表名称,再选择“确定”
      新表出现在图表中的列属性视图中。
    4. 在新表的第一个单元格中,键入列名。然后按 Tab 移动到下一个单元格。
    5. “数据类型”下,为该列选择一种数据类型。每个列都必须有名称和数据类型。
      通过使用“列”属性页,可以设置列的其他属性。
    6. 为要添加到表中的每个列重复步骤 3 和步骤 4。

    保存数据库图表时,新表就添加到数据库中。

    注释如果创建了一个新表,然后在保存到数据库之前将其从数据库图表中删除,则在关闭数据库图表之前,该表名仍将保留在内存中。此外,如果从数据库中删除一个现有表,则该表名也会保留在内存中。若要重新使用该表名,请关闭并重新启动“数据库设计器”。

    在数据库图表中添加现有表

    添加现有的表意味着要在图表中显示的表已经存在于数据库中。如果向图表中添加一组表,那么表之间的任何已存在的关系也将添加到图表中。

    1. 用鼠标右键单击数据库图表,再单击“添加表”按钮图像

    2. 在“表”列表中选择要添加的表,再单击“添加”。

    3. 对每个想要添加的表,重复步骤 2。

    4. 单击“关闭”。

    如果在图表中选定的表和其他表之间存在关系,那么将自动绘制关系线。

    向数据库图表中添加表时,该表的定义(不是表中存储的数据)将从数据库加载到内存中。这时,可以编辑表的定义,例如添加新列或修改其索引、键或约束。

    在数据库图表中添加相关表

    对于存在外键约束的表,可以容易地将相关表添加到数据库图表中。

    1. 在数据库图表中,选定一个或多个具有外键约束的表。
    2. 在其中任何一个选定表上单击鼠标右键,并且选择“添加相关表”。

    选定表中外键约束所引用的表,以及引用外键约束的表都添加到图表中。

  3. 用鼠标右键单击图表并且从快捷菜单中选择“新建表”命令,以创建第三个表。这个表将成为结合表。
  4. 在“选择名称”对话框中,更改系统指定的表名称。例如,“titles”表与“authors”表间的结合表名为“titleauthors”。
  5. 将其他两个表的主键列都复制到结合表中。同其他表一样,可以向结合表添加其他列。

    操作方法:

    可以从一个表向同一个图表中或其他图表中的另一个表复制列。复制的列仅包含列定义。在此过程中,数据本身不会自动传输到第二个表中。

    提示

    使用查询,可以将列的数据从原始列复制到新的列。可以使用“查询设计器”运行更新查询,将数据添加到复制列的表中。

    1. 在“数据库”窗口中,单击“对象”下的“数据库图表”按钮图像,再单击要打开的数据库图表,然后单击“数据库”窗口工具栏上的“设计”
    2. 在数据库图表中,选择想要复制的列。
    3. 单击工具栏中的“复制”按钮。此操作从表中复制选定内容,并且将列及其当前的属性放置到“剪贴板”上。
    4. 将光标定位到表中想插入列的位置。
    5. 单击工具栏上的“粘贴”按钮。列及其属性就插入到新的位置。

    当从一个数据库向另一个数据库复制包含用户定义的数据类型的数据库列时,用户定义的数据类型在目标数据库中可能不可用。在这种情况下,该列将被指定为目标数据库中可用的最匹配的基本数据类型。

  6. 在结合表中设置主键,以包含其他两表的所有主键列。

    操作方法:

    定义主键,可以对于在不允许空值的特定列中输入的数据实施唯一性。如果为数据库中的一个表定义了主键,那么可以使该表与其他表相关,这样可减少冗余数据。一个表只能有一个主键。

    1. 在“数据库”窗口中,单击“对象”下的“数据库图表”按钮图像,再单击要打开的数据库图表,然后单击“数据库”窗口工具栏上的“设计”
    2. 在数据库图表中,单击要定义为主键的数据库列的行选定器。如果要选择多个列,当单击其他列的行选定器时按住 Ctrl。
    3. 用鼠标右键单击列的行选定器,并选择“主键”。在“属性”页的“索引/键”选项卡中就自动创建了一个主键索引,其名称定义为“PK_”后接表名。

      警告如果想要重新定义主键,在创建新主键之前,必须删除与现有主键之间的任何关系。在这个过程中,会有一条消息警告您将要自动删除已有的关系。

    主键列由行选择器中的主键符号钥匙符号标识。

    如果一个主键由多个列构成,那么在一列中允许有重复值,但是来自主键中所有列的值的每个组合必须是唯一的。

    如果定义了复合键,主键中列的顺序与数据库图表中表显示的列顺序相匹配。但是,可以在主键创建之后更改列的顺序。在“列名”窗格中,删除主键中的列。再按希望的顺序重新添加列。要从键中删除列,只需“列名”列表中删除列名。

  7. 分别在两个主表和结合表之间定义两个一对多关系。结合表必须是两个关系中“多”的一方。

    操作方法:

    当需要使一个表中的行与另一个表中的行关联时,可以创建两个表间的关系。

    在数据库图表中创建关系

    1. 在“数据库”窗口中,单击“对象”下的“数据库图表”按钮图像,再单击要打开的数据库图表,然后单击“数据库”窗口工具栏上的“设计”
    2. 在数据库图表中,对要与另一个表中的某个列相关联的数据库列或列组合单击行选择器行选择器
    3. 把鼠标指针放在行选择器,单击并将指针拖动到相关表上。
    4. 释放鼠标按键。这时会显示“创建关系”对话框,并且会尝试让选定的列与相关表中具有相同名称和数据类型的列相关。
    5. 在“创建关系”对话框中,确保想要关联的列显示在“主键表”和“外键表”列表中。
    6. 选择“确定”以创建关系。

    在图表中,关系的主键方由钥匙符号钥匙符号标明。在一对一关系中,由初始化关系的表确定主键方。例如,如果创建从publishers表的pub_id列到pub_info表的pub_id列的关系,则publishers表是关系的主键方。

    在“表设计器”中创建关系

    1. 单击“对象”下的“表”按钮图像,再单击关系外键方上的表,然后单击“数据库”窗口工具栏的“设计”
    2. 在“表设计器”中用右键单击,并选择“关系”。
    3. 单击“新建”按钮。
    4. “主键表”中的下拉列表中,选择将位于关系主键方的表。在下方的窗格中,输入用作表的主键的列。在每一列左侧的相邻网格中,输入外键表相应的外键列。
      “表设计器”将推荐一个关系名称。若要更改此名称,请编辑“关系名”文本框的内容。
    5. 选择“关闭”以创建关系。

    注释在数据库图表中创建结合表不会从相关的表向结合表插入数据。

上页:Access 2003完整教程:在查询中手动创建表、视图或函数之间的联接 (ADP) 下页:Access 2003完整教程:将子图表合并到主数据库图表中 (ADP)

Access 2003完整教程:将多对多关系映射到数据库图表中 (ADP)

Access 2003完整教程:将子图表合并到主数据库图表中 (ADP)Access 2003完整教程:重命名检查约束 (ADP)
Access 2003完整教程:修改外键约束 (ADP)Access 2003完整教程:修改查询中的联接运算符 (ADP)
Access 2003完整教程:修改主键约束 (ADP)Access 2003完整教程:将列从一个表移到另一个表中 (ADP)
Access 2003完整教程:打开触发器 (ADP)Access 2003完整教程:打印和预览数据库图表 (ADP)
Access 2003完整教程:使数据库图表与修改的数据库相一致 (ADP)Access 2003完整教程:从查询中删除列 (ADP)
Access 2003完整教程:从查询中删除表、视图或函数 (ADP)Access 2003完整教程:删除查询中的联接 (ADP)
Access 2003完整教程:在数据库图表中隐藏表 (ADP)Access 2003完整教程:重命名列 (ADP)
Access 2003完整教程:重命名索引 (ADP)Access 2003完整教程:重命名关系 (ADP)
Access 2003完整教程:重命名表 (ADP)Access 2003完整教程:重命名触发器 (ADP)
Access 2003完整教程:在查询中重新排序输出列 (ADP)Access 2003完整教程:调整属性列大小 (ADP)
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号