多对多关系和关系模型

时间:2014-01-14 12:28:46

标签: mysql hibernate jpa uml

我在Merise或UML中学习如果我们有多对多关系的表,我们必须在关系模型中创建一个新表(在Mysql中),这个表将包含其他表的两个id。登记/> 但我们真的必须创建一个新的,因为我认为我们不需要hibernate和mapping 因为每个表(实体)都有一个另一个表(实体)的列表 那么处理多对多关系的正确方法是什么?是否创建新表?

3 个答案:

答案 0 :(得分:1)

通常,您需要normalise数据库中的多对多关系(有些专家可能会choose not to)。但是Spring并不是其中之一,它只是简化了manual normalisation process的一部分。

答案 1 :(得分:1)

你仍然需要一个'Join Table',它将包含两列,其中包含两个其他表的外键。

使用hibernate,当一个实体有一个List时,你仍然需要能够在桌面上存储这种关系。

例如,如果你想要TableA和TableB之间的多对多..

//TableA class:    
@ManyToMany
@JoinTable(name="TABLEA_TABLEB",
    joinColumns=
        @JoinColumn(name="TABLEA_ID", referencedColumnName="ID"),
    inverseJoinColumns=
        @JoinColumn(name="TABLEB_ID", referencedColumnName="ID")
    )
public Set<TableB> bees;

//TableB Class: 
@ManyToMany(mappedBy="bees")
public Set<TableA> ays;

这将创建一个包含两列的连接表('tablea_id','tableb_id');这些列将与主要实体的“ids”(主键)具有外键关系。

答案 2 :(得分:0)

您提到了UML:

如果是Association Classjoin table除了keys之外还会有“额外”列。