Mysql 2个外键引用1个主键

Mysql 2个外键引用1个主键,mysql,database,entity-relationship,diagram,visual-paradigm,Mysql,Database,Entity Relationship,Diagram,Visual Paradigm,因此,我在这里的目的是使“Employee”包含对“EmployeeContactInformation”表中相同主键的两个引用。原因是,我希望我的员工包含同一表的两个不同副本。例如,工作联系信息为1,家庭联系信息为另一个 我将如何实现这一点?我将使用什么关系? 我假设一对多 当前数据库屏幕截图 员工可以有多个联系人信息(如您所述的家庭和工作)。因此,这种关系应该是一对多的 要对此进行建模,您应该将关系的一侧的外键添加到多一侧。因此,您应该在EmployeeContact表中添加employe

因此,我在这里的目的是使“
Employee
”包含对“
EmployeeContactInformation
”表中相同主键的两个引用。原因是,我希望我的员工包含同一表的两个不同副本。例如,
工作联系信息
为1,家庭联系信息为另一个

我将如何实现这一点?我将使用什么关系?
我假设一对多

当前数据库屏幕截图

  • 员工可以有多个联系人信息(如您所述的家庭和工作)。因此,这种关系应该是一对多的
  • 要对此进行建模,您应该将关系的一侧的外键添加到多一侧。因此,您应该在EmployeeContact表中添加employee_id列。这样,每个员工联系人行将连接到一个员工
  • 员工表中的“工作分机”列可以移动到EmployeeContact表并重命名为“分机”,因为它是一个电话号码分机,可以用于家庭电话或工作电话
  • EmployeeContact表中的“家庭电话号码”列应重命名为“电话号码”,因为该表同时用于家庭和工作
  • 应在EmployeeContact表中保存另一列,该列保存有关工作/家庭的信息

  • 允许更改数据库的设计:

    创建一个名为ContactInfoTypes的表。它将保存您想要的每个ContactInfo类型的定义(在您的案例中:workContactInfo和homeContactInfo)。它将有两列(contactTypeId、contactTypeName)
  • 在EmployeeContactInfo表中添加一列名为ContactInfoType(数据类型编号)。ContactInfoType列将保存上表ContactInfoType的
    外键值

  • 当您在表:EmployeeContactInfo中插入联系人时,您必须
    插入两行(一行带有存储在workContactInfo中的数字值,另一行带有homeContactInfo)。

    我已经实现了您的注释,它们很好。但是,我的系统将通过访问员工来工作,然后您将能够选择联系人信息的类型。与你提供的答案。这可能吗?如果您有员工id
    Select*From employee\u contact\u info,其中employee\u id=,您可以使用类似这样的查询来访问员工联系信息如果您正在寻找其他东西,您应该通过带有问号的employeeId让我知道