
# 反向建模概述
反向建模是从数据库物理表到数据模型的映射。当您的本地服务器中已有数据库和大量物理表，且希望通过工业数字模型驱动引擎-数据建模引擎（xDM Foundation，简称xDM-F）统一管理所有模型时，可使用xDM-F的反向建模功能，将已有物理表反向建模至xDM-F的数据模型中，帮助您无需再次执行创建模型的操作，即可快速创建数据模型，节省了大量时间成本。
反向建模主要分为如下两部分：
- **数据库管理：**提供新增、编辑、删除和查看数据库功能，可读取数据库表信息，进入数据库建模状态。
- **建模管理** **：**提供建模、批量建模、批量修改建模、查看物理表信息、查看模型等功能。
#### 建模流程
图1反向建模流程图   
![](https://support.huaweicloud.com/usermanual-idme/figure/zh-cn_image_0000001674085369.png)
1. 预置反向建模策略
   - 建模范围：反向建模前，您需要根据业务需求确定需要将哪些物理表反向生成为数据模型。 此过程需要确定数据库类型，物理表名称，物理表中的字段名称和类型。读取到的物理表和表字段后续将会被反向生成相应数据模型和模型属性。
     
   
   - 建模规则：确定反向生成的数据模型的类型、属性及命名规范。
    
2. 添加数据源 连接本地数据库，是读取数据和反向建模的前提。具体操作请参见[创建数据源](https://support.huaweicloud.com/usermanual-idme/idme_usermanual_0051.html)。
   
3. 读取数据 xDM-F会根据您设置的反向建模策略进行读取，生成出待创建的建模信息。具体操作请参见[读取数据库数据](https://support.huaweicloud.com/usermanual-idme/idme_usermanual_0054.html)。
   
4. 确认建模信息 xDM-F初步生成的建模信息可能会存在偏差，您需要根据业务需求进行建模信息的调整。例如，更改物理表中建模信息的实体类型、中英文名称、沿用表名称、父模型等基本信息。具体操作请参见[修改建模信息](https://support.huaweicloud.com/usermanual-idme/idme_usermanual_0060.html)。
   
5. 生成最终模型 建模完成后，您可以查看生成的模型信息和状态。查看建模失败的错误信息，快速定位问题并及时处理。
   建模成功的数据模型会被存放至"数据模型管理"中，您可以前往"数据模型管理"页面查看并进行后续的管理操作。具体操作请参见[数据模型管理](https://support.huaweicloud.com/usermanual-idme/idme_usermanual_0005.html)。
   
 
#### 约束与限制
- 仅支持将数据库的物理表反向创建为数据实体和关系实体。
- 反向建模时，对应物理表的索引、主键、外键等字段约束将被舍弃。如果物理表的"字段"与"从父模型继承的属性"重名，该字段也将被舍弃。
- 读取数据成功后，物理表中的"物理信息"不支持修改。
- 待反向建模的数据库需允许公网访问。
- 同一个应用下，反向建模最多只能新增10个数据源。同时，每个数据源最多只能读取或更新1000个物理表的数据库数据。
 
#### 数据库物理表字段类型对照表
通过如下对照表，帮助您在反向建模过程中，精准实现数据库结构到xDM-F数据模型的转换。
| MySQL                           | PostgreSQL                    | 属性类型       |
|:---|:---|:---|
| VARCHAR                         | VARCHAR                       | 文本         |
| LONGTEXT                        | LONGTEXT                      | 长文本        |
| INT                             | INT4                          | 整型         |
| BIGINT                          | INT8                          | 长整型        |
| DECIMAL                         | NUMERIC                       | 浮点型        |
| DECIMAL                         | NUMERIC                       | 浮点型（自定义精度） |
| VARCHAR(60)、VARCHAR(255)、BIGINT | VARCHAR(60)、VARCHAR(255)、INT8 | 参考对象       |
| -                               | -                             | 文件         |
| TINYINT                         | BOOL                          | 布尔值        |
| DATETIME                        | TIMESTAMP(6)                  | 日期         |
| ENUM                            | VARCHAR(255)                  | 枚举         |
| VARCHAR(255)                    | VARCHAR(255)                  | 人员         |
| JSON                            | JSON                          | 分类         |
| VARCHAR(3000)                   | VARCHAR(3000)                 | URL        |
| JSON                            | JSON                          | JSON       |
   
