你如何推荐我处理一个USER可以有很多技能的数据库设计?

0 mysql sql database-design

这是我的数据库设计:

USER                  SKILLS
id                    idUser
email     1-------*   description
name                  selfAssesedLevel
lastname              yearsExperience
?skills?              reference
Run Code Online (Sandbox Code Playgroud)

我怎么能处理这个?我有点迷失在我必须记下的东西上?技能?USER表的字段.

我的目的是让用户能够在他的个人资料中添加n项技能.

谢谢.

Caf*_*eek 7

使用三个表,而你不需要三个表用于一对多关系,事情会发生变化,使数据库支持它,即使应用程序不会......

而且你确实有很多人,因为你的技能应该是他们自己的桌子,因为两个人将分享相同的技能,不同的是他们的SelfAssesedLevel,YearsExperience和Reference

Users
----
UserId
Email
Name
LastName


Skills
------
SkillId
Description


UserSkills
----------
UserId
SkillId
SelfAssesedLevel
YearsExperience
Reference
Run Code Online (Sandbox Code Playgroud)

那么你的SQL就可以获得用户和他们的技能

SELECT * FROM Users 
    JOIN UserSkills ON Users.UserId = UserSkills.UserId
    JOIN Skills ON UserSkills.SkillId = Skills.SkillId
Run Code Online (Sandbox Code Playgroud)


For*_*ega 5

您不需要USER表中的技能字段,因为您已经在用户和技能之间建立了链接:SKILLS.idUser字段.

因此,当您想为ID为666的用户添加技能时,您应该在SKILLS表中添加一个新条目,其idUser = 666

额外:我建议在SKILLS表中添加一个额外字段:'id'或'skillid',它可以是此表的主键.

  • @Sergio多个用户可以拥有相同的技能吗?如果是这样,那么您将希望使用Justin的解决方案以避免在SKILLS表中出现重复技能.否则,Fortega的解决方案是正确的. (2认同)