【问题标题】:How to create an IS_A relationship using Microsoft Access Relationships Tool如何使用 Microsoft Access 关系工具创建 IS_A 关系
【发布时间】:2019-01-17 09:07:44
【问题描述】:

我无法找到有关如何在 Access 中创建 IS_A 关系的明确答案。

这里有同样的问题,但没有简明的答案: IS_A relationship primary key validation rules

我有实体 Employee,以及两个子实体 Loan_Officer 和 Branch_Manager。这确实是 IS_A 关系的学校示例。

我已经成功地创建了 A 关系,但需要限制员工必须是信贷员或分行经理,但不能两者兼而有之。现在,我不知道该怎么做,因为无论我做什么,我都可以同时在两个子实体表中分配相同的 Employee_ID。

我已经通过 PK 连接了表,如下所示:

现在,这个表格设计只是我所做的,以便能够通过一对一的关系将它们连接起来。我必须将 Loan_Officer 的 PK 设置为“Number”而不是“AutoNumber”,以便能够连接它们。另一种选择是在 Loan_Officer 中有一个单独的 PK,如“Loan_Officer_ID”,在 Loan_Officer 表中有一个外键“Employee_ID”,但结果再次相同(也根据 ER 图,子实体不'没有单独的PK)。

【问题讨论】:

  • 我将创建一个实体而不是 2 个实体 - 具有自己的自动编号 PK 的官员,具有 2 个可能值(贷款和经理)的字段 OfficerType 和 FK 到 Employee 表。
  • 我也在考虑这个。在这种简单的情况下,它实际上可能是一个最佳选择。但是在某些情况下,两个不同的子类实体有很多不同的属性,我们会在各自的字段中有很多空值吗?

标签: ms-access


【解决方案1】:

你不能。这不是 Access 数据库的功能。

您可以创建CHECK 约束来检查此类条件,但这些条件不提供级联操作的功能。

有关如何创建 CHECK 约束的示例,请参阅 this answer

【讨论】:

    【解决方案2】:

    在数据库中,表之间不存在“Is A”关系。这是 Employee 表或 Employee History 表中的一个字段。

    “不能两者兼有”的问题是验证逻辑问题。应用此验证逻辑的地方可能是表单对象级别(在数据输入期间),而不是表级别(最终用户不应直接将数据输入到表中)。

    【讨论】:

    • 谢谢,我想我可能会在表格中实现它,正如你所说,数据不应该直接输入到表格中
    【解决方案3】:

    查看Access Data Macros 。它们可以用作当记录被插入、更新、删除等时触发的 SQL 触发器。

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2021-11-10
      相关资源
      最近更新 更多