我正在使用MS Access 2016,我创建了具有以下属性的表(实体)员工和经理:
Employees
-EmployeeId (Primary key)
-Name
-LastName
-Email
-Phone
Managers
-ManagerId (Primary Key)
-EmployeeId (Foreign Key & Unique)
-Position
我正在尝试在满足以下要求的2个实体之间建立关系:
我可以在表之间创建一对一的关系,我认为这很好,因为每ManagerId
只能有一个EmployeeId
(当员工实际上是经理时)但我的问题是当我在Employees
表中添加记录时,即使我在Employees表中添加了非管理器,Access也迫使我在管理器表中有一条记录。关于如何在2个表之间建立关系的任何建议都非常感谢。
答案 0 :(得分:2)
使用visual Relationships窗口定义关系时,Access通常可以很好地确定哪个是主表,哪个是基于相关字段索引的“相关”表。但是对于两个字段上的索引都是唯一的一对一关系,Access使用您单击的第一个表作为主表,而第二个表 - 您将第一个字段拖到 - 作为相关表。因此,它需要在可以添加相关表记录之前将值放在主表中。我假设你通过点击和拖动错误的顺序/方向来定义关系。
删除表之间的现有关系。然后,首先单击Employees.EmployeeId字段,然后将该字段拖到Managers.EmployeeId,重新定义关系。弹出的关系窗口应在左侧显示Table/Query: Employees
,右侧显示Related Table/Query: Managers
。