最近我被要求设计一个门户网站,学生可以上传他们的技术技能,如:HTML,PHP,C ++等,大学可以根据强制和可选技能搜索学生。
最初我想到使用两个圆柱表来存储学生及其相关技能细节,其中第一列代表学生,第二列包含与逗号分隔的该学生相关的所有技能。例如, 001 HTML,C,C ++,JAVA 002 C,JAVA 003 HTML,.NET ... ...
但是现在我在查询和搜索具有相关技能的学生时遇到了问题。我尝试了很多,但最终却不知道如何实现这一目标。
关于存储技术和搜索算法等的任何指针都会有所帮助。非常感谢帮助。
由于
答案 0 :(得分:0)
处理此问题的一种简单方法是使用三个表。第一个表包含学生,并包含每个学生的唯一ID。第二个表包含技能,并且每个技能都有唯一的ID。第三个表用于交叉引用前两个表,并有两列:“学生ID”和“技能ID”。
E.G。假设技能表有一个ID为1的“C”条目,ID为2的“C ++”条目。我们有一个ID为1且知道C和C ++的学生。我们在交叉引用中放入两个条目,第一个条目的学生ID为1,技能ID为1,第二个条目的学生ID为1,技能ID为2.
当您需要了解学生的技能时,您只需找到该学生ID的交叉参考表中的所有行。相反,如果您想了解学生具备哪种技能,您只需找到具有该技能ID的所有行。