2个外键引用1个主键

时间:2016-03-28 07:43:30

标签: mysql database entity-relationship diagram visual-paradigm

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

我将如何实现这一点以及我将使用什么关系? 我假设1比1?

当前数据库屏幕截图

Current database screenshot

2 个答案:

答案 0 :(得分:0)

  1. 员工可以拥有多个联系人信息(家庭和工作,就像你提到的那样)。所以关系应该是一对多
  2. 要对此进行建模,您应该将关系一侧的外键添加到多方。因此,您应该在EmployeeContact表中添加employee_id列。这样,每个员工联系人行都将连接到员工
  3. "工作延期" employee表中的列可以移动到EmployeeContact表并重命名为" extension"因为它是可以用于家庭电话或工作电话的电话号码扩展名
  4. "家庭电话号码" EmployeeContact表中的列应重命名为"电话号码"因为该表适用于家庭和工作
  5. 应在EmployeeContact表中保存另一列,以保存有关work / home
  6. 的信息

答案 1 :(得分:0)

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

  • 创建一个名为ContactInfoTypes的表。它将保存您想要的每个ContactInfoTypes的定义(在您的情况下:workContactInfo和homeContactInfo)。它将有两列(contactTypeId,contactTypeName)
  • 在EmployeeContactInfo表中添加一个名为ContactInfoType(DATATYPE编号)的额外列。列ContactInfoType将保存{ContactInfoTypes
以上的Foreign-Key

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