2016-03-28 60 views
0

所以我的目的是使“Employee”包含2个引用在“EmployeeContactInformation”表相同的主键。原因是,我希望我的员工包含同一张表的两个不同副本。例如。 1为work contact info,另一个为home contact info2的外键引用在这里1个主键

我将如何实现这一点以及我将使用哪种关系?
我假设1到许多?

当前数据库截图

Current database screenshot

回答

0

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

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

当您插入表联系人的Foreign-Key值:EmployeeContactInfo,你就必须Insert两行(一个存储对workContactInfo和一个与homeContactInfo的数值)。

0
  1. 员工可以有多个联系人的相关信息(家庭和工作像你提到)。因此,这种关系应该是一对多的关系
  2. 要建立这个模型,你应该把关系一边的外键添加到多边。因此,您应该在EmployeeContact表中添加一个employee_id列。这样,每个员工接触排将被连接到雇员
  3. “工作扩展名”雇员表列可以被移动到EmployeeContact表,并更名为“扩展”,因为它是一个电话号码的扩展,可能是家庭电话或工作电话
  4. EmployeeContact表中的“家庭电话号码”列应重命名为“电话号码”,因为该表适用于家庭和工作
  5. 应在EmployeeContact表中保存另一列以保存工作信息/ home
+0

我已经实施了你的评论,他们很好。但是,我的系统将通过访问该员工来工作,然后您将能够选择联系信息的类型。随你提供的答案。这可能吗? –

+0

如果您有员工编号,您可以使用这样的查询访问员工联系信息Select * From employee_contact_info where employee_id = ?如果您正在寻找别的东西,您应该传递员工编号为 – abhaybhatia

+0

的员工编号 – abhaybhatia