Database design 招聘数据库设计中的循环引用

Database design 招聘数据库设计中的循环引用,database-design,Database Design,设计 所以我需要为招聘场景设计数据库。共有7个表格,包括: 申请人:有关申请人资料 位置:用于位置数据 技能:用于技能数据 申请人技能:申请人技能列表 职位技能:职位所需的技能列表 空缺:空缺名单 应用程序:应用程序数据列表 有人告诉我,我的设计有一个循环参考。我搜索了一些设计示例,但没有找到任何适合我的案例。所有表都是必需的,无法删除。我想不出别的主意了 我如何摆脱循环引用?谢谢。正如您在这里介绍的,您的设计没有任何循环引用 申请人、技能和职位无推荐人 申请人技能、职位技能和空缺仅指上

设计

所以我需要为招聘场景设计数据库。共有7个表格,包括:

  • 申请人:有关申请人资料
  • 位置:用于位置数据
  • 技能:用于技能数据
  • 申请人技能:申请人技能列表
  • 职位技能:职位所需的技能列表
  • 空缺:空缺名单
  • 应用程序:应用程序数据列表
有人告诉我,我的设计有一个循环参考。我搜索了一些设计示例,但没有找到任何适合我的案例。所有表都是必需的,无法删除。我想不出别的主意了


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

正如您在这里介绍的,您的设计没有任何循环引用

  • 申请人、技能和职位无推荐人
  • 申请人技能、职位技能和空缺仅指上述内容
  • 应用程序仅指上述内容
  • 就这样
所以你没什么可修的


(注意:我忽略了“Jobtitle ID”这一点,因为相关的表没有出现在您的图表中。但不管怎样,该表似乎并不依赖于其中任何一个。)

正如您在这里介绍的,您的设计没有任何循环引用

  • 申请人、技能和职位无推荐人
  • 申请人技能、职位技能和空缺仅指上述内容
  • 应用程序仅指上述内容
  • 就这样
所以你没什么可修的


(注意:我忽略了“Jobtitle ID”这一点,因为相关的表格没有出现在您的图表中。但不管怎么说,该表格似乎并不依赖于其中任何一个。)

您担心什么?技能表放在你的模型上面,而且它是独立的。

你担心什么?模型顶部的技能表是独立的。

这里没有循环,唯一明显的问题是没有强制使用备用键,在图表中,这些键通常标记为
AK
——使用
唯一非空
创建它们

下面是这三个表的候选键

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\u TITLE\u ID
,如下所示
存在依赖关系
{POSITION\u ID}-->{JOB\u TITLE\u ID}
,因此它可能会失去同步并产生矛盾。

这里没有循环,唯一明显的问题可能是没有强制使用备用键,在图表中,这些键通常标记为
AK
--使用
唯一非空
来创建它们

下面是这三个表的候选键

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\u TITLE\u ID
,如下所示
存在依赖项
{POSITION\u ID}-->{JOB\u TITLE\u ID}
,因此它可能会不同步并产生矛盾。

是的,Jobtitle表仅引用POSITION表。使用JOIN查询时,设计是否会造成数据不一致威胁或冗余?非常感谢您的回答等一下,Jobtitle表是指Position表吗?在这种情况下,您确实有一个循环依赖项,因为Position表引用了Jobtitle表。为什么是分开的桌子?对不起,我弄错了。我的意思是职位表指的是职位。所以职位表中的FK jobtitle id是指jobtitle表中的jobtitle id。除此之外。。问题是我很困惑,因为有人说这种设计会产生冗余,并且会在查询连接时降低性能。这是因为所有的表都是无端连接的。只有当您要执行一个包含所有这些表的查询,并使用这些关系连接所有这些表时,这才可能被认为是一个潜在的问题。如果你不打算这样做,那就根本不相关了。是的,Jobtitle表只参考Position表。使用JOIN查询时,设计是否会造成数据不一致威胁或冗余?非常感谢您的回答等一下,Jobtitle表是指Position表吗?在这种情况下,您确实有一个循环依赖项,因为Position表引用了Jobtitle表。为什么是分开的桌子?对不起,我弄错了。我的意思是职位表指的是职位。所以职位表中的FK jobtitle id是指jobtitle表中的jobtitle id。除此之外。。问题是我很困惑,因为有人说这种设计会产生冗余,并且会在查询连接时降低性能。这是因为所有的表都是无端连接的。只有当您要执行一个包含所有这些表的查询,并使用这些关系连接所有这些表时,这才可能被认为是一个潜在的问题。如果你不打算那样做,那就根本没有关系了。在评论中,你说你说“Jobtitle表仅指职位表”。应用程序是否也有问题?请包括所有参考表格。2.职位职位头衔也必须出现在申请表中吗?如果是的话,您已经遗漏了一个FK。应用程序作业标题也必须出现在位置上吗?如果是的话,您已经遗漏了一个FK。这类FKs会影响圆度。在评论中,你说你说“Jobtitle表仅指职位表”。应用程序是否也有问题?请包括所有参考表格。2.职位职位头衔也必须出现在申请表中吗?如果是这样,你就离开了o