存储和检索数据的最佳实践

use*_*746 0 mysql sql

我正在设计一个新的数据库,我有两个表,一个用户和一个技能表.用户可以拥有许多技能.什么是存储多种技能的最佳实践,逗号分隔的技能ID(1,2)或存储技能名称(PHP,Ruby)?这是数据库的简化版本.

用户表:

id int(),
name varcha(),
email varchar(),
skillID varchar()

ID  | name      | email                 | skillID   |

1   | John Doe  | johndoe@domain.com    |1,2        |

2   | Jane Doe  | janedoe@domain.com    |2,3        |

3   | James Smith| jamessmith@domain.com|3,4        |
Run Code Online (Sandbox Code Playgroud)

技能表:

Id int(),s
skill varchar()

ID  | skill       |

1   | PHP         |  
2   | Ruby        |    
3   | ColdFusion  |
4   | ASPX        |
Run Code Online (Sandbox Code Playgroud)

如何检索技能ID为1和4的所有用户.提前感谢您的见解.

And*_*own 6

扩大@Akhil Sidharth的评论.

user table
    userId
    name
    email

skill table
    skillId
    name

userSkills table
    userSkillId
    userId
    skillId
Run Code Online (Sandbox Code Playgroud)

编辑:

我错过了你问题的最后一部分.

SELECT * FROM `userSkills` as `us` LEFT JOIN `user` as `u` ON us.`userId` = u.`userId` WHERE us.`skillId` = '1' OR us.`skillId` = '4'`
Run Code Online (Sandbox Code Playgroud)