根据PostgreSQL 反向生成物理模型
文件 ->反向工程->Database
点击Database 填写模型名称,选取数据库类型,给到作者的sql是PostgreSQL 版本17 对应到 PowerDesigner 16 选最高版本的 PostgreSQL 9x ,点击确定后添加导入的sql文件,点击确定稍一会会,模型就全部生成好啦。
生成的模型有两个问题
1、没有注释 2、修改name编辑汉字注释,code列 随着name列变化
没有注释,设置注释列
选择表右击选择属性(Alt+Enter),弹出表属性对话框,选择Columns,默认是没显示Comment的,显示Comment列,点击漏斗后会出现一个列表找到Comment 勾选。如图是勾选后的样子 。作者设置了Comment列后,还是没有中文注释,又进行了一个设置,重新导入后才显示喔。
设置Comment列后导入还是没有汉字的注释 ,又设置了 [%QUALIFIER%]
Tools(工具栏)->Resources -> DBMS....
PostgreSQL9x -> Script -> Objects -> ColumnComment ->值增加 [%QUALIFIER%]
由于脚本导出的时候会增加限定符模式标识,而读取的时候也需要,PowerDesigner默认配置没有,加上就好了
sql
comment on column [%QUALIFIER%]%TABLE%.%COLUMN% is %.q:COMMENT%
sql 贴出来 ,base 对应 [%QUALIFIER%]
sql
DROP TABLE IF EXISTS "base"."t_log";
CREATE TABLE "base"."t_log" (
"id" int8 NOT NULL DEFAULT nextval('"base".t_log_id_seq'::regclass),
"support_platform_id" int8,
"url" varchar(128) COLLATE "pg_catalog"."default",
"content" text COLLATE "pg_catalog"."default",
"result" int2 DEFAULT 0,
"code" int4,
"message" text COLLATE "pg_catalog"."default",
"create_by" varchar(50) COLLATE "pg_catalog"."default",
"create_time" timestamp(6),
"last_update_by" varchar(50) COLLATE "pg_catalog"."default",
"last_update_time" timestamp(6),
"sync_data_type" int2 DEFAULT 1,
"customer_app_id" int8,
"customer_id" int8,
"sync_method" varchar(50) COLLATE "pg_catalog"."default"
)
;
COMMENT ON COLUMN "base"."t_log"."support_platform_id" IS '平台ID';
COMMENT ON COLUMN "base"."t_log"."url" IS '同步地址(全路径)';
COMMENT ON COLUMN "base"."t_log"."content" IS '同步内容,json字符串格式';
COMMENT ON COLUMN "base"."t_log"."result" IS '同步结果 0成功,1失败';
COMMENT ON COLUMN "base"."t_log"."code" IS '响应结果编码';
COMMENT ON COLUMN "base"."t_log"."message" IS '错误信息';
COMMENT ON COLUMN "base"."t_log"."sync_data_type" IS '同步数据类型:1. zq下发的数据,2. 管理平台数据';
COMMENT ON COLUMN "base"."t_log"."customer_app_id" IS '客户应用ID';
COMMENT ON COLUMN "base"."t_log"."customer_id" IS '客户ID';
COMMENT ON COLUMN "base"."t_log"."sync_method" IS '同步方法';
COMMENT ON TABLE "base"."t_log" IS '数据同步错误日志';
-- ----------------------------
-- Primary Key structure for table t_log
-- ----------------------------
ALTER TABLE "base"."t_log" ADD CONSTRAINT "t_log_pkey" PRIMARY KEY ("id");
列名排序显示
打开菜单 Tools (工具栏) ->Display Perferences (显示首选项) -> General Setting ->Table -> Advanced -> Columns -> 放大镜
设置展示的列名顺序 ,我把注释显示在前面,然后是code ,再然后是类型
Tools(工具栏) -> Execute Commands ->Edit/Run Script.. 或者用快捷键 Ctrl+Shift+X ,直接粘贴到运行框中,或者把下面的脚本保存成vbs结尾的脚本存储起来以后用。
vbnet
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim blankStr
blankStr = Space(1)
Dim mdl ' the current model
' get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl
End If
Private sub ProcessFolder(folder)
On Error Resume Next
Dim Tab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
tab.name = tab.comment
Dim col ' running column
for each col in tab.columns
if col.comment = "" or replace(col.comment," ", "")="" Then
col.name = blankStr
blankStr = blankStr & Space(1)
else
col.name = col.comment
end if
next
end if
next
Dim view 'running view
for each view in folder.Views
if not view.isShortcut then
view.name = view.comment
end if
next
' go into the sub-packages
Dim f ' running folder
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
code列 随着name列变化
工具 ->常规选项 (General Options)-> Dialog -> Name to Code mirroring 取消勾选
操作栏调色板不见了
Tools(工具栏) -> customsize toolbars(自定义菜单和工具栏) -> palette(调色板)勾选上
设置外键
双击Table -> 属性 -> Keys -> Properties -> Add Columns 选择要添加的外键列 - >检查外键是否设置成功切回 -> Preview 查看 SQL语句
设置模型之间的连线,可费老劲了,呜呜呜
作者受了误导一度以为先设置外键的 keys ,然后把reference拖拽到两个表之间,啪自动就连上了 ,作者试了并没有 ,不知道怎么神奇的拖拽有那根线了 ,再然后不能复盘行为 ,呜呜呜呜呜 ,多次尝试终于整理出来了 ,选中reference ,拖拽到 table1 再拖拽到 table2 ,拖拽的意思是鼠标左单击不放手!!!双击连线Joins -> 设置连接关系。
the object has no symbol
右键PhysicalDiagram ->show symbols -> select all
设置字体大小
设置左侧菜单
Tools( 工具 ) -> general options (常规选项) -> Fonts (字体)-> 项 -> defalut UI font ,择字体样式、大小。
设置数据模型Table的字体
Tools ( 工具 ) ->Display Prefrences (显示偏好)-> Table - >Format -> Modify ->字体 ,选择字体样式、大小。
设置Preview字体(sql预览)
Tools ( 工具 ) -> general options (常规选项) -> Fonts (字体)-> 项 -> Code editor ,选择字体样式、大小。
觉得列名杂乱想凸出模型关系,只显示模型名隐藏列名
Tools ( 工具 ) ->Display Prefrences (显示偏好)-> Table -> Content ->取消 Columns 勾选