【问题标题】:MySql table with potentially *very* many columnsMySql 表可能有*非常*很多列
【发布时间】:2019-08-28 19:41:20
【问题描述】:

一位从事软件工程师招聘的朋友希望我为他创建一个应用程序。

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

您可以想象,可能有成百上千种技能。

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

此外,未来可能会在数据库中添加更多技能。

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


@zohar 的[更新],这是模式的粗略第一遍。有cmets吗?

【问题讨论】:

  • 一个表映射技能到候选人将是关系方式。
  • !!没想到!!随时发布答案。感谢并点赞
  • 此架构中没有候选技能关系。
  • 技能与工作相关联。候选人在不同的工作上使用不同的技能,通过搜索与候选人相关的所有工作,可以获得所有技能的完整列表。这似乎对我来说没问题,但我当然欢迎改进 (+1)
  • 关注[EAV] 标签。祝你好运。

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


【解决方案1】:

你需要三个表(至少):

候选人的表格,其中包含所有详细信息,例如姓名、联系信息、简历(或指向它的链接)和所有其他相关详细信息。

skills 表格 - 将包含技能名称,可能还有简短描述(如果相关)

还有一个表将候选人与技能联系起来 - candidatesToSkills - 这两个表将具有一对多的关系 - 以及一个主键,即候选人 ID 和技能 ID 的组合。
这是创建多对多关系的关系方式。
作为奖励,您还可以添加技能级别列 - 初学者、中级、熟练、专家等。

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

【讨论】:

  • 因为我也想要工作经历,所以我添加了一个jobs 表。还有一个companies - 我在问题中添加了架构的图像。可能还缺少很多字段,但我认为此时重要的是外键,以显示表链接。
  • 赞成,但我更喜欢表名的单数形式。即Job 而不是Jobs
  • 根据this question,我无法访问架构。你能帮忙吗?
  • 我认为 Gordon 的回答可能是我见过的对该问题最好的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2015-03-22
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多