2014-01-14 108 views
0

我学习Merise或UML时,如果我们有多对多关系的表,我们必须在关系模型(在Mysql中)中创建一个新表,并且此表将包含拖拽其他桌子的id。
但是我们真的必须创建一个新的,因为有了休眠和映射,我认为我们不需要。
因为每个表(实体)都会有另一个表(实体)的列表。
那么处理多对多关系的正确方法是什么?创建一个新表还是不?多对多关系和关系模型

回答

1

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

1

您仍然需要一个“连接表”,该连接表将包含两列与其他两个表的外键。

在hibernate中,当一个实体有一个List时,你仍然需要能够将这个关系存储在表上。

因此,举例来说,如果你想要一个多到多表A和表B之间..

//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”);这些列将与主实体的“ID”(主键)具有外键关系。

0

你提到UML:

Association Class的情况下,join table会有“额外”的栏目,除了keys