MS Access表关系

时间:2017-08-16 03:11:52

标签: database ms-access relational-database entity-relationship relationships

我正在使用MS Access 2016,我创建了具有以下属性的表(实体)员工和经理:

 Employees
    -EmployeeId (Primary key)
    -Name
    -LastName
    -Email
    -Phone

  Managers
    -ManagerId (Primary Key)
    -EmployeeId (Foreign Key & Unique)
    -Position

我正在尝试在满足以下要求的2个实体之间建立关系:

  1. 经理(EmployeeId)是一个独特的价值。
  2. 对于Managers表中的每条记录,Employees表中必须有一条记录(因为经理是员工)
  3. 我可以在表之间创建一对一的关系,我认为这很好,因为每ManagerId只能有一个EmployeeId(当员工实际上是经理时)但我的问题是当我在Employees表中添加记录时,即使我在Employees表中添加了非管理器,Access也迫使我在管理器表中有一条记录。关于如何在2个表之间建立关系的任何建议都非常感谢。

1 个答案:

答案 0 :(得分:2)

使用visual Relationships窗口定义关系时,Access通常可以很好地确定哪个是主表,哪个是基于相关字段索引的“相关”表。但是对于两个字段上的索引都是唯一的一对一关系,Access使用您单击的第一个表作为主表,而第二个表 - 您将第一个字段拖到 - 作为相关表。因此,它需要在可以添加相关表记录之前将值放在主表中。我假设你通过点击和拖动错误的顺序/方向来定义关系。

删除表之间的现有关系。然后,首先单击Employees.EmployeeId字段,然后将该字段拖到Managers.EmployeeId,重新定义关系。弹出的关系窗口应在左侧显示Table/Query: Employees,右侧显示Related Table/Query: Managers