使用 PowerDesigner 从 MySQL 反向工程生成物理数据模型并优化展示

1223 字
6 分钟
使用 PowerDesigner 从 MySQL 反向工程生成物理数据模型并优化展示

在使用 PowerDesigner 进行数据库建模时,我们常常需要将已有数据库结构反向导入为物理数据模型(Physical Data Model, PDM),并对其进行中文命名与模块化整理,以提升可读性和维护效率。以下是完整的操作流程:

1. 创建物理数据模型并配置数据库连接#

首先,新建一个 Physical Data Model 类型的文件。

接着,点击菜单栏中的 Database → Configure Connections,弹出 “Configure Data Connections” 窗口。在左侧选择 Connection Profiles,如下图所示:

image
image

2. 新建 MySQL 数据库连接#

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

image
image

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

image
image

填写完成后点击 Test Connection 验证连通性,确认无误后保存连接。

3. 从数据库反向生成模型#

点击菜单栏 Database → Update Model from Database,弹出 “Database Reverse Engineering Options” 窗口。

在此窗口中,先点击右侧的 取消全选箭头(→|),清空默认选中的对象;再点击左侧的 选择数据库箭头(|←),选中目标数据库;最后再次点击 全选箭头(→|),选中该数据库下的所有表、视图等对象。

操作示意如下:

image
image

image
image

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

image
image

确认选择后点击 OK,PowerDesigner 将自动将数据库结构导入到当前 PDM 中。


4. 批量将英文表名/字段名替换为中文注释#

PowerDesigner 默认使用英文名称,但若数据库中已填写了中文注释(Comment),我们可以通过脚本将其同步为显示名称,便于阅读。

操作路径:Tools → Execute Commands → Edit/Run Script

粘贴并运行以下脚本:

Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl ' 当前模型
' 获取当前活动模型
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "当前没有打开的模型!"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "当前模型不是物理数据模型(PDM)!"
Else
ProcessFolder mdl
End 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
Next
End Sub

执行完成后,PDM 图中的表名和字段名将显示为数据库中的中文注释,而英文原名则保存在 Code 字段中,方便后续导出与比对。


5. 新增显示字段:Comment 与 Code#

为了在图中同时显示注释与原始英文名,可以右键任意表格,选择:

Preferences → Table Display Preferences

勾选需要展示的内容,例如:

  • Code(原始英文名)
  • Comment(注释)
  • Name(中文显示名)

如下图所示:

image
image

这样就可以在图中实现更完整的信息展示效果。


6. 按功能模块创建 Package 分类表#

当数据库表较多时,建议按业务模块进行分组。

在左侧 Browser 面板中右键模型,选择 New → Package,新建多个功能包(如:用户模块、订单模块、支付模块等),再将相关表拖入对应模块中。

如下图所示:

image
image

这样既方便维护,也有利于后续导出局部图或按模块沟通设计。


7. 调整图形布局(重点)#

模型导入后,表之间通常会重叠或挤在一起。建议使用自动布局与手动微调结合:

自动布局#

点击菜单栏:

Layout → Automatic Layout

选择合适的布局方式(如 Hierarchical、Orthogonal 等),先让表自动分散开。

手动微调#

随后可拖动关键业务表,使主干关系更清晰,比如:

  • 把主表放中间
  • 子表按一对多方向展开
  • 弱关联表放外围

必要时可使用不同颜色区分不同模块,增强可视化效果。


8. 最终效果与用途#

经过上述整理后,你将得到一份:

  • 能从真实数据库反向生成
  • 自动转中文可读名称
  • 保留原始字段 Code
  • 按业务模块分组
  • 可清晰用于开发/汇报/设计评审

的高质量数据库物理模型图。

无论是做系统分析、交接文档,还是给非技术同事讲解数据库结构,这套方式都非常实用。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
使用 PowerDesigner 从 MySQL 反向工程生成物理数据模型并优化展示
https://blog.yuxh.cc/posts/powerdesigner-reverse-engineering/
作者
Firefly
发布于
2026-05-19
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Firefly
Hello, I'm Firefly.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
16
分类
3
标签
30
总字数
16,769
运行时长
0
最后活动
0 天前

文章目录