循环引用
问题描述:
设计循环引用
所以我需要设计数据库招聘方案。有7个表包括:
- 申请人:对申请人的数据
- 位置:位置数据的
- 技巧:对于技术数据
- 申请人技巧:应聘者技能列表
- 岗位技能:职位所需技能列表
- 职位空缺:职位空缺列表
- 申请:申请数据列表
我被告知我的设计有循环引用。我搜索了一些设计实例,但没有找到适合我的案例。所有表格都是必需的,不能删除。我无法想出其他想法。
我该如何摆脱循环引用?谢谢。
答
这里没有任何循环,您可能遇到的唯一明显问题是不执行替代键,在图中这些通常标记为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”这个东西,因为相关的表并没有出现在你的图表中,但是看起来好像这张表并不依赖于这些)。
答
你担心什么?技能表在你的模型之上,并且它是不确定的。
1.在评论中,你说你说“Jobtitle表只涉及位置表”。应用程序也是吗?请包括所有参考表格。 2.位置JobtitleID是否也必须出现在应用程序中?如果是这样,你已经忽略了FK。应用程序JobtitleID是否也必须出现在Position中?如果是这样,你已经忽略了FK。这种FK影响圆度。 – philipxy