Php 独特的关系,我如何做到这一点?

Php 独特的关系,我如何做到这一点?,php,sql,Php,Sql,我有一个名为User的对象,这个对象与对象技能有关系。 一个用户可以拥有多个技能,一个技能可以属于多个用户 但我想这样做,我不知道什么是正确的方法: 一个用户可以拥有许多技能,但这些技能必须是独一无二的,例如:Jason的“技能集”中不能有两次“PHP”技能 -----编辑----- 我在两个对象之间有一个连接表: JTBL_用户_技能 对于TBL_用户和TBL_技能 ID |用户ID |技能ID 1 |4|20 1 | 4 | 20 问题是: 我不想在JTBL_User_Skill中出现任何双

我有一个名为User的对象,这个对象与对象技能有关系。 一个用户可以拥有多个技能,一个技能可以属于多个用户

但我想这样做,我不知道什么是正确的方法: 一个用户可以拥有许多技能,但这些技能必须是独一无二的,例如:Jason的“技能集”中不能有两次“PHP”技能

-----编辑----- 我在两个对象之间有一个连接表: JTBL_用户_技能 对于TBL_用户和TBL_技能

ID |用户ID |技能ID 1 |4|20 1 | 4 | 20

问题是:
我不想在JTBL_User_Skill中出现任何双重条目,如何防止这种情况发生?

最好的办法是创建一个表,将两者连接起来,并包含一个User和Skill(a)的复合键

例如,您的用户表可能如下所示:

UserID (PK)
UserName
您的技能表:-

SkillID (PK)
SkillName
所以你的连接表

SkillID (PK)
UserID (PK)

…将两个ID链接在一起。这将允许存在多对多关系,但每个用户只能拥有一个相同的技能,反之亦然。

您需要在其他两个表之间添加一个多对多表,新表中每个用户/技能的唯一配对都有一行。有关“方法”的问题根据专家经验得出某种程度的意见,但对这个问题的回答往往几乎完全基于意见,而不是事实、参考资料或具体的专业知识。我建议你找一个发展论坛(也许?)来概括一下。然后,如果您有特定的编码问题,请返回StackOverflow,我们将很乐意提供帮助。如果您正在查看此问题,并且拥有工具,您应该投票结束此问题#KeepStackOverflowClean最后一部分“新表中每个用户/技能的唯一配对都有一行”,我该怎么做?我有一个连接表(JTBL_user_skill),我该怎么做才能保证这个表中不会有任何双条目?如果SkillID和UserID是一个复合键,那么就不可能有重复的条目。太棒了,这对我帮助很大。我搜索了复合键,发现需要将这两个字段(User\u ID和Skill\u ID)都设置为主键。现在它们是独一无二的,你给了我一个足够我自己研究的答案,这样我就可以在过程中学习。谢谢你。