2个外键引用1个主键

2 foreign keys referencing 1 primary key

所以我的目的是让“Employee”包含 2 个对“EmployeeContactInformation”table 中相同主键的引用。这样做的原因是,我希望我的员工包含相同 table 的 2 个不同副本。例如。 1 个用于 work contact info,另一个用于 home contact info

我将如何实现它以及我将使用什么关系?
我假设 1 到许多?

当前数据库截图

  1. 员工可以有多个联系信息(如您提到的家庭和工作)。因此,关系应该是一对多
  2. 要对此建模,您应该将关系一侧的外键添加到多侧。因此,您应该在 EmployeeContact table 中添加一个 employee_id 列。这样每个员工联系人行都将连接到一个员工
  3. 可以将员工 table 中的
  4. "Work extension" 列移至 EmployeeContact table 并重命名为 "extension",因为它是一个 phone 号码分机,可以是为了家 phone 还是为了工作 phone
  5. EmployeeContact table 中的
  6. "Home phone number " 列应重命名为 "phone number",因为 table 既适用于家庭也适用于工作
  7. 应在 EmployeeContact table 中保存另一列,该列保存有关 work/home
  8. 的信息

让我们更改数据库的设计:

  • 创建一个名为 ContactInfoTypes 的 table。它将包含您想要的每个 ContactInfoTypes 的定义(在您的例子中:workContactInfo 和 homeContactInfo)。它将有两列(contactTypeId,contactTypeName)
  • 在您的 EmployeeContactInfo TABLE 中添加一个名为 ContactInfoType(DATATYPE 编号)的额外列。列 ContactInfoType 将包含 Foreign-Key 高于 TABLE ContactInfoTypes
的值

当您在 TABLE: EmployeeContactInfo 中插入联系人时,您必须 Insert 两行(一行包含针对 workContactInfo 存储的数值,另一行包含 homeContactInfo)。