在mysql的单列中存储多个值

时间:2013-08-15 17:01:10

标签: php mysql database multiple-value

表名:实习,现在我想存储公司名称XYZ的“skill_required”技能如下:php,java等mow问题是在公司注册时我必须指定文本或复选框..等等如何将它存储在数据库中?id为id for like for php 2 for java

第二。当学生搜索实习然后在感兴趣的领域他指定php其他学生指定java,那么公司xyz必须显示为学生搜索,因为公司提供php和java两者的实习,那么如何检索那个表格数据库,?对于具有技能名称和技能ID的技能,应该有单独的表格吗?

1 个答案:

答案 0 :(得分:3)

您应该有一个单独的表格,将每个公司与他们需要的所有技能联系起来,例如Company表:

CompanyId  CompanyName
_________  ___________
1          BobCo
2          PeteCo
...

...以及Internship表中所需的技能:

CompanyID  SkillID
_________  _______
1          1
1          2
2          1
...

...然后你可以有一个单独的Skill表映射技能ID到技能名称:

SkillID  SkillName
_______  _________
1        PHP
2        Java
3        MySQL
...

例如,如果Java是技能2,您可以这样做:

SELECT CompanyID FROM Internship WHERE SkillID=2;

该查询返回需要Java的公司。或者,更复杂的查询:

SELECT CompanyName 
FROM Company JOIN Internship USING(CompanyID)
  JOIN Skill USING(SkillID)
WHERE SkillName = 'Java'

您应该将多个值放在一个列中,因为这样做会导致first normal form。请查看该链接,了解您可能遇到的问题的示例,以及如何解决这些问题。