独特的关系,我该怎么做?

时间:2015-07-15 20:15:13

标签: php sql

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

但我想这样做,我不知道什么是正确的方法: 一个用户可以拥有许多技能,但它们必须是唯一的,例如:Jason在他的“技能组合”中不能拥有两次技能“PHP”。

- - - - - - - - EDIT 我在两个对象之间有一个联结表: JTBL_User_Skill 对于TBL_User和TBL_Skill

ID | USER_ID | skill_id也 1 | 4 | 20 1 | 4 | 20

问题: 我不想在JTBL_User_Skill中有任何双重条目,我该如何防止这种情况?

1 个答案:

答案 0 :(得分:2)

最好的办法是拥有一个桥接两者的表,并包含用户和技能的综合密钥(junction table

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

UserID (PK)
UserName

你的技能表: -

SkillID (PK)
SkillName

因此你的联络表......

SkillID (PK)
UserID (PK)

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