这是我的数据库设计:
USER SKILLS
id idUser
email 1-------* description
name selfAssesedLevel
lastname yearsExperience
?skills? reference
我怎么能处理这个?我有点迷失在我必须记下的东西上?技能? USER表的字段。
我的目的是让用户能够在他的个人资料中添加n项技能。
谢谢。
答案 0 :(得分:7)
使用三个表,而你不需要三个表用于一对多的关系,事情会发生变化,让数据库支持它,即使应用程序不会......但是。
你确实有很多人,因为你的技能应该是他们自己的桌子,因为两个人将分享相同的技能,不同的是他们的SelfAssesedLevel,YearsExperience和Reference
Users
----
UserId
Email
Name
LastName
Skills
------
SkillId
Description
UserSkills
----------
UserId
SkillId
SelfAssesedLevel
YearsExperience
Reference
然后你的SQL来获取用户和他们的技能将是
SELECT * FROM Users
JOIN UserSkills ON Users.UserId = UserSkills.UserId
JOIN Skills ON UserSkills.SkillId = Skills.SkillId
答案 1 :(得分:5)
您不需要USER表中的技能字段,因为您已经在用户和技能之间建立了链接:SKILLS.idUser字段。
因此,当您想为ID为666的用户添加技能时,您应该在SKILLS表中添加一个新条目,idUser = 666
额外: 我建议在SKILLS表中添加一个额外的字段:'id'或'skillid',它可以是此表的主键。
答案 2 :(得分:1)
?skills?
表中根本不需要USER
列。 <{1}}表中存在特定SKILLS
的行就足够了。
例如,要选择用户ID 4的所有技能,您可以写:
idUser
答案 3 :(得分:1)
由于用户可以拥有许多技能,并且技能在许多用户中都很常见,因此您需要一个多对多的JOIN表UserSkills。用户和技能将与UserSkills具有外键关系。