如果关系具有属性,如何实现一对一的关系?

时间:2015-11-22 23:25:04

标签: database entity-relationship

我的数据库中有两个表Warning: preg_replace(): Compilation failed: missing ) at offset 51DepartmentAcademic_staff表中的主键为DepartmentdepId表中的主键为Academic_staff

每个部门只由一名学术人员管理,因此两个表格之间的关系是一对一的。

我需要记录学术人员开始管理某个部门的日期,因此该关系必须具有自己的属性(aNo)。

如何实现这个新属性?

起初我想创建一个包含三个属性(mStartDatedepIdaNo)的新表,并在新表和其他两个表之间建立两个关系,但是然后我意识到这不是多对多的关系。

那么如何将属性mStartDate添加到两个表之间的一对一关系中呢?

  

这两个表之间存在多个关系,其中一些关系是一对多的(部门雇用了多个学术人员),所以我无法合并这两个表。

2 个答案:

答案 0 :(得分:0)

<强>部门

  • depId
  • fk_aNo(独特)

***** - 主键(depId,fk_aNo)*****

academicStuffs

  • aNo(PK)

<强> newtable的

  • depId --- 重要&#34; depId,aNo来自部门,确定&#34;
  • aNo ---
  • mStartDate

    - 主键(depId,aNo)

  

约束 - &GT;一个学术论坛不能开始更多地管理一个部门   不止一次。如果此结构适合您并且您想要启用   aacademic stuff管理一个部门不止一次通知我。

答案 1 :(得分:0)

您提议的新表(我将其称为部门管理)原则上可以记录每个部门的管理人员的历史,在这种情况下,它将是部门与学术部门之间的多对多(时间)关系。 / p>

但是,如果您只想记录当前管理器,将DepartmentManager“吸收”到Department表中是合理的,在那里给出两列(Manager_aNo和Manager_StartDate)。从概念上讲,对象“部门管理”仍然存在,但它被吸收,它没有自己的表。

你也可以向另一个方向吸收它(进入学术界),但这不允许学术界管理多个部门。你现在可能不需要,但原则上它比拥有两个经理的部门更有可能。