2014-02-13 53 views
0

我有兩個表格,一個是USERPROFILE,另一個是SKILLS。如何維護兩張表之間的關係。

兩個表都包含數據。一個用戶可以擁有很多技能,一個技能可能屬於多個用戶。 我應該如何保持他們之間的關係..?

我在UserProfile表中添加了關係表,作爲一對多的技能。 但是,當我將技能對象分配到userprofile並嘗試保存它時,獲取異常。 在另一種情況下,如果我創建新的Skill對象並將其分配給userprofile並保存userprofile對象,則會將其保存。但是新ID是針對相同技能生成的。

我不想要這個,我想維護兩個表之間沒有生成新ID的關係。

回答

0

我認爲最好有一個user_id & skill_id的用戶技能映射表。每次當用戶添加一個技能,在映射表中輸入它,所以它會更容易使用這個數據在未來

2

你應該使用一個映射表SkillsUserProfile將只保留ID這兩個表

它將幫助您檢索用戶的所有技能。並且也具有技能的所有用戶

它的結構應該像這樣

user_skills 
---------------------- 
ID | skill_id | user_id 
0

連接表是必要的(如:skills_per_user)
使用Hibernate使用@OneToMany@JoinTable

class UserProfile { 
    @Id 
    private int user_id; 

    @OneToMany 
    @JoinTable(name="skills_per_user", 
    joinColumns={@JoinColumn(name="user_id")}, 
    inverseJoinColumns={@JoinColumn(name="id_skill")} 
) 
    private Set<Skill> skills = new HashSet<Skill>(); 
} 

class Skill { 
    @Id 
    private int skill_id; 
} 

並且連接表skill_per_user被定義爲

skill_per_user 
--------------------- 
user_id | skill_id 
相關問題