使用 PowerDesigner 从 MySQL 反向工程生成物理数据模型并优化展示
在使用 PowerDesigner 进行数据库建模时,我们常常需要将已有数据库结构反向导入为物理数据模型(Physical Data Model, PDM),并对其进行中文命名与模块化整理,以提升可读性和维护效率。以下是完整的操作流程:
1. 创建物理数据模型并配置数据库连接
首先,新建一个 Physical Data Model 类型的文件。
接着,点击菜单栏中的 Database → Configure Connections,弹出 “Configure Data Connections” 窗口。在左侧选择 Connection Profiles,如下图所示:

2. 新建 MySQL 数据库连接
点击窗口左上角的 + 按钮(如下图红框所示),新建一个 MySQL 连接:

随后会弹出连接配置窗口,请根据实际情况填写数据库连接信息,例如主机地址、端口、用户名、密码及目标数据库名称等,参考如下界面:

填写完成后点击 Test Connection 验证连通性,确认无误后保存连接。
3. 从数据库反向生成模型
点击菜单栏 Database → Update Model from Database,弹出 “Database Reverse Engineering Options” 窗口。
在此窗口中,先点击右侧的 取消全选箭头(→|),清空默认选中的对象;再点击左侧的 选择数据库箭头(|←),选中目标数据库;最后再次点击 全选箭头(→|),选中该数据库下的所有表、视图等对象。
操作示意如下:


先点击右边箭头取消全选,在点左边箭头选择数据库之后,再点击全部选中,点击确定后就导入到了 pd。

确认选择后点击 OK,PowerDesigner 将自动将数据库结构导入到当前 PDM 中。
4. 批量将英文表名/字段名替换为中文注释
PowerDesigner 默认使用英文名称,但若数据库中已填写了中文注释(Comment),我们可以通过脚本将其同步为显示名称,便于阅读。
操作路径:Tools → Execute Commands → Edit/Run Script
粘贴并运行以下脚本:
Option ExplicitValidationMode = TrueInteractiveMode = im_Batch
Dim mdl ' 当前模型
' 获取当前活动模型Set mdl = ActiveModelIf (mdl Is Nothing) Then MsgBox "当前没有打开的模型!"ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "当前模型不是物理数据模型(PDM)!"Else ProcessFolder mdlEnd If
Private Sub ProcessFolder(folder) On Error Resume Next Dim Tab ' 表对象 For Each Tab In folder.tables If Trim(Tab.Name) <> "" Then Tab.Code = Tab.Name ' 备份原英文表名到 Code End If If Trim(Tab.Comment) <> "" Then Tab.Name = Tab.Comment ' 用 Comment 替换显示名 End If
Dim col ' 字段对象 For Each col In Tab.Columns If Trim(col.Name) <> "" Then col.Code = col.Name ' 保留原英文列名 End If If Trim(col.Comment) <> "" Then col.Name = col.Comment ' 用中文注释替换显示名 End If Next Next
Dim subFolder ' 子目录 For Each subFolder In folder.Packages ProcessFolder subFolder NextEnd Sub执行完成后,PDM 图中的表名和字段名将显示为数据库中的中文注释,而英文原名则保存在 Code 字段中,方便后续导出与比对。
5. 新增显示字段:Comment 与 Code
为了在图中同时显示注释与原始英文名,可以右键任意表格,选择:
Preferences → Table Display Preferences
勾选需要展示的内容,例如:
- Code(原始英文名)
- Comment(注释)
- Name(中文显示名)
如下图所示:

这样就可以在图中实现更完整的信息展示效果。
6. 按功能模块创建 Package 分类表
当数据库表较多时,建议按业务模块进行分组。
在左侧 Browser 面板中右键模型,选择 New → Package,新建多个功能包(如:用户模块、订单模块、支付模块等),再将相关表拖入对应模块中。
如下图所示:

这样既方便维护,也有利于后续导出局部图或按模块沟通设计。
7. 调整图形布局(重点)
模型导入后,表之间通常会重叠或挤在一起。建议使用自动布局与手动微调结合:
自动布局
点击菜单栏:
Layout → Automatic Layout
选择合适的布局方式(如 Hierarchical、Orthogonal 等),先让表自动分散开。
手动微调
随后可拖动关键业务表,使主干关系更清晰,比如:
- 把主表放中间
- 子表按一对多方向展开
- 弱关联表放外围
必要时可使用不同颜色区分不同模块,增强可视化效果。
8. 最终效果与用途
经过上述整理后,你将得到一份:
- 能从真实数据库反向生成
- 自动转中文可读名称
- 保留原始字段 Code
- 按业务模块分组
- 可清晰用于开发/汇报/设计评审
的高质量数据库物理模型图。
无论是做系统分析、交接文档,还是给非技术同事讲解数据库结构,这套方式都非常实用。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!