循环引用

问题描述:

设计循环引用

enter image description here

所以我需要设计数据库招聘方案。有7个表包括:

  • 申请人:对申请人的数据
  • 位置:位置数据的
  • 技巧:对于技术数据
  • 申请人技巧:应聘者技能列表
  • 岗位技能:职位所需技能列表
  • 职位空缺:职位空缺列表
  • 申请:申请数据列表

我被告知我的设计有循环引用。我搜索了一些设计实例,但没有找到适合我的案例。所有表格都是必需的,不能删除。我无法想出其他想法。

我该如何摆脱循环引用?谢谢。

+0

1.在评论中,你说你说“Jobtitle表只涉及位置表”。应用程序也是吗?请包括所有参考表格。 2.位置JobtitleID是否也必须出现在应用程序中?如果是这样,你已经忽略了FK。应用程序JobtitleID是否也必须出现在Position中?如果是这样,你已经忽略了FK。这种FK影响圆度。 – philipxy

这里没有任何循环,您可能遇到的唯一明显问题是不执行替代键,在图中这些通常标记为AK - 使用UNIQUE NOT NULL来创建它们。

这里是三个表的候选键。

ApplicantSkill {APPLICANT_ID, SKILL_ID, APPLICANT_SKILL_ID} 
      KEY {APPLICANT_ID, SKILL_ID} 
      KEY {APPLICANT_SKILL_ID} 

PositionSkill {POSITION_ID, SKILL_ID, POSITION_SKILL_ID} 
      KEY {POSITION_ID, SKILL_ID} 
      KEY {POSITION_SKILL_ID} 

Application {APPLICANT_ID, VACANCY_ID, APPLICATION_ID} 
     KEY {APPLICANT_ID, VACANCY_ID} 
     KEY {APPLICATION_ID} 

你介绍了代理键(额外_ID),并选择了他们作为主要为这些表, 但省略其他(AK) - 非常容易出错,易造成重复,冗余 和矛盾。

JOB_TITLE_ID应该从Application被删除,它看起来像 有依赖{POSITION_ID} --> {JOB_TITLE_ID}所以它可能无法同步,创造矛盾。

+0

你好,谢谢你指出这一点!我修正了他们:) – arukasa

正如你在这里介绍的那样,你的设计确实有而不是有任何循环引用。

  • 申请人,技能和职位没有提及。
  • 申请人技能,职位技能和职位空缺仅指上述内容。
  • 仅适用于上述应用。
  • 就是这样。

所以你没有什么可以解决的。 (注意:我忽略了“Jobtitle ID”这个东西,因为相关的表并没有出现在你的图表中,但是看起来好像这张表并不依赖于这些)。

+0

是的,Jobtitle表只涉及位置表。使用JOIN查询时,设计是否会造成数据不一致的威胁或冗余?非常感谢你回答 – arukasa

+0

等待一会儿 - Jobtitle表格指的是位置表格?在这种情况下,你*做*具有循环依赖性,因为位置表引用了Jobtitle表。为什么那些单独的表格? – ruakh

+0

我很抱歉我的错误。我的意思是位置表是指Jobtitle。因此位置表中的FK职位标识是指Jobtitle表中的职位标识ID。并没有别的..事情是我很困惑,因为有人说这个设计会造成冗余,并会降低查询JOIN时的性能。这是因为所有的桌子都没有尽头。 – arukasa

你担心什么?技能表在你的模型之上,并且它是不确定的。