pdm

PowerDesigner 是数据库建模功能很强大的工具,其可以生成pdm文件建立表结构及表间关联关系,也可以生成java 中bo,po,dao层的代码。还可以生成建库脚本,方便的创建数据库结构。因此,能够快速生成PDM文件是提高数据库建模的必要条件。一般powerdesiger生成PDM模型文件有几种方式:

1. 通过PD界面手动操作,一个一个建表,建字段说明,并建立表关系。 

2. 通过已有的sql脚本导入pd中生成pdm模型。

3. 通过连接数据库,对已有的数据表结构进行建模备份。

4. 通过pd的接口调用vb脚本,读取规定模板的文本来建模。  


  下面我一一说明下这几种方式建模的步骤。

  一、 工具选择

         a. PowerDesigner 15 ,

         b. mysql 5.6 

         

 二 , PD界面手动操作建模

     步骤如下,按图片顺序:建模-建表-建字段-建约束-建表关联关系保存生成pdm文件

 pdm

第二步:

pdm

第三步:

pdm

第四步:

pdm

第五步:

pdm

第六步:


pdm

第七步:

pdm


二,通过已有sql脚本导入pd中生成pdm文件

 第一步:创建sql脚本

pdm


  第二步;File ---> Reverse Engineer--->Databases..---> 确定库及归属模型

pdm

第三步:点确定按钮配置脚本目录及归属模型

pdm

第四步:

pdm

第五步:

pdm


三、通过连接数据库,对已有的数据表结构进行建模备份。


通过数据库脚本文件生成PDM的步骤为:选择File------->选择Reverse Engineer----->选择database,如下图:

pdm

----->点击确定----->选择Using script files,如下图所示:

pdm

----->并选择所要使用的数据库脚本 ----->最后点击确定就会自动生成PDM。

6.2 通过ODBC生成PDM

首先需要先设置一个数据库链接,设置方法如下:鼠标左键选择Database------>选择Confiure Connections----->如果还没有配置过数据库链接的话选择Add Data source----->设置链接的类型、设置链接的文件、选择链接的驱动文件以及配置ID、数据库等内容,如下图所示和:

pdm

----->配置完成点击旁边的Test Connection,测试一下是否能正常连接----->点击OK即可。

通过ODBC生成PDM的步骤:选择File------->选择Reverse Engineer----->选择database,如下图所示:

pdm

------->点击确定------->选择table将不需要生成PDM的表去掉,只选择需要生成的表(小技巧:使用shift来批量选择),如下图:

pdm

------->点击OK就生成了指定数据库的PDM图了。


四、 同步pd工具中提供的执行vb接口批量快速创建表(推荐)

   鼠标左键 Tools------>Execute Commands --->Edit/Run Script .. (Ctrl+Shift+X)   快速打开

pdm


第二步: 在编辑框内编写vb脚本内容,功能是读取D:\table.txt 文档中固定模板格式的数据,包括: 表名称,表描述,表code。 字段别名,字段code,字段类型,是否主键,是否外键,是否不为空约束。

具体内容如下:

  1. talbe-begin                                
  2. 表1 table1 表说明                          
  3. 字段1 test1 VARCHAR2(322) false true 说明  
  4. 字段2 test2 VARCHAR2(322) true true 说明   
  5. 字段3 test3 VARCHAR2(256) false true 说明  
  6. talbe-begin                                
  7. 表2 table2 表说明                          
  8. 字段1 test1 VARCHAR2(322) true true 说明   
  9. 字段2 test2 VARCHAR2(322) true true 说明   
  10. 字段3 test3 VARCHAR2(256) false true 说明  

注意:内容之间用空格分割,便于vb脚本中split函数拆分每行的字段。


此文件是txt的文档,内容格式根据要创建的字段配置项灵活配置。具体vb脚本如下:

  1. Dim system, file  
  2. Set system = CreateObject("Scripting.FileSystemObject"'创建文件对象  
  3.   
  4. Dim ForReading, ForWriting, ForAppending  
  5. dim str  
  6. dim tittle  
  7. dim first  
  8. ForReading   = 1 ' 设置文件只读   
  9. ForWriting   = 2 ' 设置文件写入  
  10. ForAppending = 8 ' 设置文件追加  
  11. '-----------------------------------------  
  12. ' 主要程序  
  13. '-----------------------------------------  
  14. Set file = system.OpenTextFile("D:\table.txt", ForReading)'打开文本文档  
  15. Dim noLine  
  16. Dim Tab  '定义一个表,vbscript中变量没有那么严格的类型,但此变量将来将用来表示table  
  17. ValidationMode = True  
  18. Dim mdl ' 定义当前**的模型,也就是mdl  
  19. Dim Col  
  20. dim dm, dmstr  
  21. Dim SSS  
  22. Dim isNewTable  
  23. dim tableCreateFlag  
  24. dim tableHeadFlag  
  25. dim tableContentFlag  
  26. dim exitFlag  
  27. Set mdl = ActiveModel '获取当前**模型  
  28. tableCreateFlag = false  
  29. tableHeadFlag = false  
  30. tableContentFlag = false  
  31. Do While file.AtEndOfStream <> True '循环读取文档的每一行  
  32.    SSS = file.ReadLine  
  33.    'msgbox  "tab.name:" &SSS  
  34.    if SSS ="talbe-begin" then  
  35.       tableCreateFlag = true  
  36.       tableHeadFlag = true  
  37.    elseif tableCreateFlag=true then  
  38.             if tableHeadFlag=true then  
  39.                 title=split(SSS)  
  40.                 exitFlag = isExitTable(mdl,title(0))  
  41.                  if exitflag=true then exit do  
  42.                 set tab = mdl.Tables.CreateNew '创建表,并设  置表属性  
  43.                  tab.name=title(0) 'name  
  44.                  'msgbox  "tab.name:" &title(0)  
  45.                  tab.code=title(1) 'code  
  46.                  tab.comment=title(2) 'comment  
  47.                  tableHeadFlag = false  
  48.                  tableContentFlag = true  
  49.             elseif tableContentFlag=true then  
  50.                 set col=tab.Columns.CreateNew '创建一行字段  
  51.                 str = split(SSS)  
  52.                 col.name = str(0) '依次设置属性,同表的属性,字段熟悉也可以设置更多,根据实际情况  
  53.                 col.Code = str(1)  
  54.                 col.datatype=str(2)  
  55.                 col.Primary=str(3)  
  56.                 if col.Primary=false then   
  57.                     col.Mandatory=str(4)  
  58.                     col.Comment=str(5)  
  59.                 end if  
  60.             end if   
  61.     end if  
  62. Loop  
  63. file.Close  
  64. private function isExitTable(model,tableName)  
  65.   dim tables  
  66.   dim table  
  67.   dim flag  
  68.   set tables = model.Tables  
  69.   flag = false  
  70.   for each table in tables  
  71.       if table.name=tableName then   
  72.          flag = true  
  73.          msgbox  "该模型中已存在此表"+tableName  
  74.          exit for  
  75.        end if  
  76.    next  
  77.    isExitTable = flag  
  78. end function  

关于vb脚本语法简单说明以下几点:

1. 基础语法说明

  1. Set 设置变量值,   
  1. Dim 定义变量, <pre name="code" class="vb"> function 定义函数,   
  1. if .. elseif ... end if  判断语句,     
  1. '做为注释行  
  1. msgbox 打印内容  
  1. + 链接变量与字符串  
  1. <pre name="code" class="vb">& 加上变量 可以输出变量内容  

2. 此脚本中几个关键函数说明

   

  1. file = system.OpenTextFile("D:\table.txt", ForReading) 读取指定目录下的txt文件  
  1. <pre name="code" class="vb">file.AtEndOfStream  读取文件流判断是否到结尾  
  1. <pre name="code" class="vb">file.ReadLine  读取一行内容 返回字符串  
  1. <pre name="code" class="vb">title=split(SSS)  默认按空格分割字符串,返回字符数组  
  1. <pre name="code" class="vb">title(0) 获取数组中第一变量值  
  1. Set mdl = ActiveModel '获取当前**模型  
  1. set tab = mdl.Tables.CreateNew '创建表,并设  置表属性  
  1. tab.name=title(0) 'name属性设置值  
  1. set col=tab.Columns.CreateNew '创建一行字段  

  1. col.name = str(0) '依次设置属性,同表的属性,字段熟悉也可以设置更多,根据实际情况  
  2. col.Code = str(1) '设置字段code  
  3. col.datatype=str(2)'设置字段datatype  
  4. col.Primary=str(3)'设置字段主键  
  5. if col.Primary=false then ' 判断主键  
  6. col.Mandatory=str(4) '设置强制不能为空项  
  7. col.Comment=str(5) '设置字段描述  
  1. file.Close 关闭文件流  

ok, 那这里目前所知的pdm创建方式流程均总结完毕,每种方式有自己的特定使用条件,可以根据需求场景自行选择。 我们这边奇葩领导要求在半天内(ˇˍˇ) 想~出一种快速创建pdm文件的方式,据说有了这个pdm文件,什么java层次的代码都有了,持久层也可以自动生成,设置前台页面增删改查都可以自动生成了,解决掉这个创建模型一环几乎就可以逆天了,god!