如何使用Microsoft Access Relationships工具创建IS_A关系

时间:2019-01-17 09:07:44

标签: ms-access

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

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

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

enter image description here

我已经设法创建了一种关系,但是必须存在一个约束,即雇员必须是贷款官员或分支经理,但不能两者兼而有之。现在,我不知道该怎么做,因为无论我做什么,我都可以一次在两个子实体表中分配相同的Employee_ID。

我已经通过PK连接了表格,如下所示: enter image description here

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

enter image description here enter image description here

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

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

“不能同时存在”的问题是验证逻辑的问题。应用此验证逻辑的位置可能是在表单对象级别(在数据输入期间),而不是表级别(最终用户绝对不能将任何数据直接输入到表中)。

答案 2 :(得分:1)

查看Access Data Macros。它们可以像插入记录,更新记录,删除记录等时触发SQL触发器一样使用。