
# 多对多
#### 什么是多对多
多对多关系中，首要方和次要方都不会发生任何的变化。唯一的变化是在多对多连线上，会默认添加两个字段用来分别指向关系的两侧。也就是说，一对多和聚合关系是通过在次要方添加主键和外键来表示的，而多对多关系是通过单独创建的关系表来表示的。
和一对多关系一样，删除多对多关系只代表两个对象之间的特定关系的结束，不会影响任何一个对象的生命周期。
图1编辑字段   
![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002148189358.png)
#### 关系属性设置
在业务设计页面，拖入两个BO业务对象（命名为Bo3、Bo4），单击"relations"中的"多对多"，为对象建立多对多关系。选中已创建的关系，在右侧页面即可设置关系属性，如[图2]所示。
图2多对多关系   
![](https://support.huaweicloud.com/usermanual-astropro/zh-cn_image_0000002148187150.png)
- 关系名称：设置多对多关系的名称。
- 关系类型：根据创建的多对多关系自动生成。
- 关系首要方：根据创建的多对多关系自动生成。
- 关系次要方：根据创建的多对多关系自动生成。
- 表名：设置关系表的名称，请按需自定义。在多对多关系中，会建立关系表用来保存首要方和次要方id的关系。
- DTO暴露方式 - NESTED：是否设置DTO的NESTED（嵌套）能力。默认为不设置。
  - 不设置：不生成NESTED。
  
  - 只生成DTO：只生成NESTED对象的类。
  
  - 生成DTO读API：只会生成一个get接口。
  
  - 生成DTO读写API：除了生成一个get接口，还会生成一个插入接口。
   
- DTO暴露方式 - CARTESIAN：设置DTO的CARTESIAN（笛卡尔积）能力。
  - 不设置：不生成CARTESIAN。
  
  - 只生成DTO：只生成CARTESIAN对象的类。
  
  - 生成DTO读API：只会生成一个get接口。
   
- 关系操作：对象关系可执行哪些操作，如新增、删除、查询、批量新增、批量删除和批量查询。
- 每个*Bo3* 关联最大*Bo4*数：一个首要方和次要方建立关联的数量上限。
- 每个*Bo4* 关联最大*Bo3*数：一个次要方和首要方建立关联的数量上限。
- 每个*Bo3* 关联最大*Bo4*维度上限预警值：首要方一条数据最多关联次要方多少条数据报出告警。
- 每个*Bo4* 最大关联*Bo3*维度上限预警值：次要方一条数据最多关联首要方多少条数据报出告警
- 字段：多对多的关系是通过一个关系表来表示的。单击"字段"，可为关系表添加字段。
 
