我有一个名为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中有任何双重条目,我该如何防止这种情况?
答案 0 :(得分:2)
最好的办法是拥有一个桥接两者的表,并包含用户和技能的综合密钥(junction table)
例如,您的用户表可能如下所示:
UserID (PK)
UserName
你的技能表: -
SkillID (PK)
SkillName
因此你的联络表......
SkillID (PK)
UserID (PK)
...将两个ID链接在一起。这将允许您的多对多关系存在,但每个用户只能拥有相同技能,反之亦然。