`

Powerdesigner的逆向工程生成PDM及中文注释问题

阅读更多

使用Powerdesigner的逆向工程生成PDM 
来源: 51CMM.COM   作者: 徐异婕 
在数据建模过程中,我们建立概念数据模型,通过正向工程生成物理数据模型,生成数据库建库脚本,最后将物理数据模型生成关系数据库。系统数据库设计人员希望能够将数据库设计和关系数据库生成无缝地集成起来,如何保证物理数据模型与其对应数据库之间的双向同步成为数据建模非常关键的一点。 

Powerdesigner作为强大的Case工具,为我们提供了方便的逆向工程特性。可以将目前所有流行的后端数据库(包括Sybase、 DB2、Oracle等)的结构信息通过逆向工程加入到PowerDesigner的物理数据模型和概念数据模型中,包括表、索引、触发器、视图等。 

本文介绍的内容仅涉及PDM(物理数据模型)的逆向工程。 

PDM中的逆向工程是指从现有DBMS的用户数据库或现有数据库SQL脚本中生成PDM的过程。逆向工程有两种对象:1)通过ODBC数据源连接数据库 2) 现有数据库sql脚本。 

本文示例的系统环境如下: 

1、 数据库已创建完毕,访问用户和密码设置完成。数据库为Oracle9i。 

2、 ODBC数据源已由oracle 的Net Configuration Assistant 创建,本地网络命名服务“Database”。 

3、 sql脚本示例crebas.sql。 

4、 Powerdesigner9.5已安装完成。 一、 通过数据源连接数据库逆向工程生成PDM 
1、 配置用户数据库连接参数 

选择Database->configure connections,转到system dsn标签, 



点击Add按钮,选数据库类型Oracle,点击完成。显示如下:输入DataSource Name“PDMTest”;输入ServerName“Database”, 配置完成。 



点击“Test Connect”输入ServerName“Database”,用户名和密码,若连接成功,显示如下: 



以后每次连接,选择Database?connect,选择odbc数据源,输入ServerName“Database”,用户名和密码。若无提示,则说明连接成功。同时,可以通过Database?Connection Information 查看连接信息。 

2、 设置逆向工程选项,生成pdm 

创建一个PDM文件,选择与之匹配的数据库类型“oracle9i”。 

选择Database?Reverse Engineer Database,弹出Database Reverse Engineering对话框,选Using an ODBC data source选ODBC数据源“PDMTest” 



点击确定后,显示此数据库中所有表、视图、用户。根据需要选择后,转换成pdm。 



3、 查看数据 

对于生成好的PDM,选择一个表图形符号,点击右键,选择View Data,就可以访问表中的数据了。 

二、 通过SQL脚本逆向工程生成PDM 

1、 数据库SQL脚本文件crebas.sql。下为脚本实例: 
/*==============================================================*/ 
/* Database name: PhysicalDataModel_1 */ 
/* DBMS name: ORACLE Version 9i */ 
/* Created on: 2003-07-13 10:49:08 */ 
/*==============================================================*/ 
/*==============================================================*/ 
/* Table: "class" */ 
/*==============================================================*/ 
create table "class" ( 
"classID" NUMBER(2) not null, 
"className" VARCHAR2(24), 
constraint PK_CLASS primary key ("classID") 


/*==============================================================*/ 
/* Table: "student" */ 
/*==============================================================*/ 
create table "student" ( 
"studentID" NUMBER(10) not null, 
"studentName" VARCHAR2(4), 
"classID" NUMBER(2), 
constraint PK_STUDENT primary key ("studentID") 


alter table "student" 
add constraint FK_STUDENT_REFERENCE_CLASS foreign key ("classID") 
references "class" ("classID") 


2、 创建一个pdm,选择Database?Reverse Engineer Database,选择Using script files。 



3、 看到由脚本自动生成相关的PDM如下所示: 


下面是表名的中文及字段的name和comment的替换问题 

PowerDesigner中name和comment互換 
1 PowerDesigner中批量根据对象的name生成comment的脚本 

执行方法:Open PDM -- Tools -- Execute Commands -- Run Script 

Vb script代码 
Option Explicit 
ValidationMode = True 
InteractiveMode = im_Batch 

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 

'This routine copy name into code for each table, each column and each view 
'of the current folder 
Private sub ProcessFolder(folder) 
Dim Tab 'running table 
for each Tab in folder.tables 
if not tab.isShortcut then 
tab.comment = tab.name 
Dim col 'running column 
for each col in tab.columns 
col.comment= col.name 
next 
end if 
next 

Dim view 'running view 
for each view in folder.Views 
if not view.isShortcut then 
view.comment = view.name 
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 

Option Explicit 
ValidationMode = True 
InteractiveMode = im_Batch 

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 

'This routine copy name into code for each table, each column and each view 
'of the current folder 
Private sub ProcessFolder(folder) 
Dim Tab 'running table 
for each Tab in folder.tables 
if not tab.isShortcut then 
tab.comment = tab.name 
Dim col 'running column 
for each col in tab.columns 
col.comment= col.name 
next 
end if 
next 

Dim view 'running view 
for each view in folder.Views 
if not view.isShortcut then 
view.comment = view.name 
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 


2 PowerDesigner中逆向工程将数据库中comment脚本赋值到PDM的name 

执行方法:Open PDM -- Tools -- Execute Commands -- Run Script 


Vb script代码 
Option Explicit 
ValidationMode = True 
InteractiveMode = im_Batch 

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 

'This routine copy name into code for each table, each column and each view 
'of the current folder 
Private sub ProcessFolder(folder) 

Dim Tab 'running table 
for each Tab in folder.tables 
if not tab.isShortcut then 
if len(tab.comment) <> 0 then 
tab.name = tab.comment 
end if 
On Error Resume Next 
Dim col 'running column 
for each col in tab.columns 
if len(col.comment) <>0 then 
col.name =col.comment 
end if 
On Error Resume Next 
next 
end if 
next 
end sub 

分享到:
评论

相关推荐

    Powerdesigner逆向工程生成PDM 中文列名表名

    ### PowerDesigner逆向工程生成PDM(物理数据模型)及中文列名表名转换为注释 #### 一、PowerDesigner及其逆向工程概述 PowerDesigner是一款强大的CASE工具,广泛应用于数据库设计、业务流程建模等领域。通过...

    powerdesigner逆向生成工具将注释字段添加到name字段上

    powerdesigner逆向工程导入mysql脚本生成PDM带全注释

    PowerDesigner逆向工程-Mysql,并解决没有注释的问题!

    本文将深入探讨如何使用PowerDesigner进行MySQL数据库的逆向工程,并解决逆向工程过程中可能出现的没有注释的问题。 首先,让我们了解什么是逆向工程。逆向工程,也称为数据库反向设计,是指从已有的数据库中提取其...

    Powerdesigner逆向工程从现有数据库生成PDM

    ### PowerDesigner逆向工程从现有数据库生成PDM详解 #### 一、背景介绍 在数据建模领域,PowerDesigner是一款非常强大的工具,它能够帮助数据架构师和开发人员设计、构建以及维护高质量的数据模型。传统的数据建模...

    PowerDesigner逆向工程导入MYSQL数据库总结

    ### PowerDesigner逆向工程导入MYSQL数据库详解 #### 一、PowerDesigner与逆向工程...通过以上步骤,我们可以顺利地利用PowerDesigner逆向工程功能从现有的MYSQL数据库中生成数据模型,极大地提高了开发效率和质量。

    POWERDESIGNER逆向工程从现有数据库生成PDM

    3. **逆向工程生成PDM**:创建一个新的PDM文件,选择与数据库类型匹配的DBMS,如"IBM DB2 UDB 8.x Common Server"。然后在"Reverse Engineer Database"选项中,选择使用ODBC数据源,选择已配置的数据源,如“s2ms”...

    PowerDesigner逆向工程显示字段备注

    PowerDesigner16.5逆向工程显示字段备注,生成的更贴合。使用的是命令运行的方式,本人亲试,非常方便。

    PowerDesigner逆向工程时,将表字段的comment转换为PDM的name

    标题中提到的问题,即"PowerDesigner逆向工程时,将表字段的comment转换为PDM的name",可以通过编写和执行自定义脚本来实现。以下是这个过程的详细步骤: 1. 打开PowerDesigner中的PDM模型。 2. 进入"Tools"菜单,...

    Powerdesigner逆向工程Mysql.docx

    总结来说,PowerDesigner的逆向工程功能使得从MySQL数据库中提取结构信息变得简单易行,生成的PDM模型提供了清晰的数据库视图,有助于数据库设计、维护和理解。通过上述步骤,你可以有效地管理你的MySQL数据库,提升...

    PowerDesigner连接mysql逆向生成PDM及相关问题

    本文主要介绍如何使用PowerDesigner 16.5与MySQL数据库配合,进行逆向工程操作,生成PDM(Physical Data Model),以及解决在过程中可能出现的问题。 首先,你需要确保已经安装了PowerDesigner 16.5,可以从提供的...

    PowerDesigner生成数据字典(包含反向工程生成方法).docx

    标题和描述均提到了“PowerDesigner生成数据字典(包含反向工程生成方法)”,这表明文章主要聚焦于如何利用PowerDesigner这一强大的建模工具来生成数据字典,并特别强调了反向工程作为生成数据字典的一种方法。...

    powerdesigner,将name自动填充到注释(comment)。

    PowerDesigner是一款强大的数据库设计工具,它允许用户进行概念数据模型(CDM)、物理数据模型(PDM)以及数据库逆向工程等多种操作。在数据库建模过程中,为表、字段等对象添加注释(Comment)是十分重要的,因为它...

    PowerDesigner逆向工程

    **PowerDesigner逆向工程详解** PowerDesigner是一款强大的数据建模工具,它被广泛应用于数据库设计、数据仓库建模以及系统分析等领域。逆向工程是PowerDesigner的重要功能之一,它允许用户从现有的数据库中提取...

    PowerDesigner中文教程、逆向工程

    2. **PowerDesigner逆向工程** - **逆向工程概述**:逆向工程是将已存在的数据库结构转化为数据模型的过程,用于快速理解现有数据库的结构。 - **连接数据库**:设置数据库连接参数,包括数据库类型、服务器、...

    Microsoft-Word.zip_PowerDesigner_pdm

    3. **调整模型**:虽然逆向工程可以快速生成PDM,但生成的模型可能需要手动调整,比如修正字段注释、添加缺失的关系或调整索引等。 4. **保存并同步**:完成调整后,可以将PDM模型与数据库进行同步,确保模型与实际...

    PowerDesigner 逆向mysql用到的odbc

    5. **审查和编辑模型**:逆向工程完成后,PowerDesigner会显示一个可视化数据模型,你可以在这个模型基础上进行修改、优化,比如调整表关系、添加注释、设置属性等。 6. **同步到数据库**:当你对模型满意后,可以...

    PowerDesigner生成ER图

    PowerDesigner是一款强大的数据库设计和逆向工程软件,它提供了创建ER图的功能,帮助开发者高效地规划和设计数据库结构。这篇博文将深入探讨如何使用PowerDesigner来生成ER图。 **一、PowerDesigner简介** ...

Global site tag (gtag.js) - Google Analytics