MySql table with potentially *very* many columns

懵懂的女人 提交于 2019-12-11 15:14:47

问题


A friend who is a recruiter for software engineers wants me to create an app for him.

He wants to be able to search candidates' CVs based on skills.

As you can imagine, there are potentially hundreds, possibly thousands of skills.

What's the best way to represent the candidate in a table? I am thinking skill_1, skill_2, skill_n, etc, but somewhere out there there is a candidate with more than n skills.

Also, it is possible that more skills will be added to the database in future.

So, what's the best way to represent a candidate's skills?


[Update] for @zohar, here's a rough first pass at teh schema. Any comments?


回答1:


You need three tables (at least):

One table for candidates, that will contain all the details such as name, contact information, the cv (or a link to it) and all other relevant details.

One table for skills - that will contain the skill name, and perhaps a short description (if that's relevant)

and one table to connect candidates to skills - candidatesToSkills - that will have a 1 to many relationship with both tables - and a primary key that is the combination of the candidate id and the skill id.
This is the relational way of creating a many to many relationship.
As a bonus, you can also add a column for skill level - beginner, intermediate, skilled, expert etc'.

You might also want to add a table for job openings and another table to connect that to the skills table, so that you can easily find the most suitable candidate for the job based on the required skills. (but please note that skills is not the only match needed - other points to match are geographic location, salary expectations, etc'.)



来源:https://stackoverflow.com/questions/55560171/mysql-table-with-potentially-very-many-columns

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!