MySql表可能*非常*很多列

时间:2019-04-07 14:44:01

标签: mysql database-design entity-attribute-value

一个担任软件工程师招聘人员的朋友要我为他创建一个应用程序。

他希望能够根据技能搜索候选人的简历。

您可以想象,可能有数百种甚至数千种技能。

在表格中代表候选人的最佳方法是什么?我在考虑skill_1skill_2skill_n等,但是在某个地方,有一个候选人的技能超过n

此外,将来可能还会有更多技能添加到数据库中。

那么,代表候选人技能的最佳方法是什么?


[zohar]的[更新],这是架构的第一步。有任何评论吗?

enter image description here

1 个答案:

答案 0 :(得分:5)

您至少需要三个表:

一个供候选人使用的表,其中将包含所有详细信息,例如姓名,联系方式,简历(或指向它的链接)以及所有其他相关详细信息。

一张用于技能的表格-其中将包含技能名称以及简短说明(如果相关)

和一个用于将候选人与技能联系起来的表格- candidatesToSkills -这两个表格之间具有一对多的关系-一个主键是候选人ID和技能ID的组合。
这是建立多对多关系的关系方式。
此外,您还可以添加技能级别列-初学者,中级,熟练者,专家等。

您可能还想添加一个职位空缺表,并将其连接到技能表,以便您可以根据所需技能轻松找到最适合该职位的候选人。 (但请注意,技能不是唯一需要的技能,其他要匹配的要素是地理位置,薪资期望等。)