天天看點

PowerDesigner16.5 逆向生成實體模型

一.根據SQL檔案生成ER圖

1.首先準備好創表語句的SQL檔案

2.選擇檔案 -> 反向工程(ReverseEngineer) -> Database

PowerDesigner16.5 逆向生成實體模型
  • ModelName自己随意寫,DBMS選擇你使用的資料庫類型
    PowerDesigner16.5 逆向生成實體模型
  • 選擇你的SQL檔案
    PowerDesigner16.5 逆向生成實體模型
  • 改編碼類型
    PowerDesigner16.5 逆向生成實體模型
PowerDesigner16.5 逆向生成實體模型

二.生成注釋

1.輕按兩下表檢視是否有字段注釋,如果沒有添加進去

PowerDesigner16.5 逆向生成實體模型

2.點選工具 -> ExecuteCommands -> Edit/Run Script

PowerDesigner16.5 逆向生成實體模型
'******************************************************************************
'* File:     comment2code.vbs
'* Purpose: 在PowerDesigner的PDM圖形視窗中顯示資料列的中文注釋
'* Title:    将字段的comment指派到字段的code中
'* Category: 打開實體模型,運作本腳本(Ctrl+Shift+X)
'* Copyright:[email protected],2006/07/25 .
'* Author:   foxzz
'* Created:
'* Modified:
'* Version: 1.0
'* Comment: 周遊實體模型中的所有表,将字段的comment指派到字段的code中。
'            在将code置換為comment過程中,需要考慮的問題
'            1、code必須唯一,而comment有可能不唯一。
'               處理辦法是如果字段的comment重複,則字段的code=comment+1、2、3...
'            2、comment值有可能為空,這種情況下對字段的code不處理。
'               針對Oracle資料庫,将comment on column 字段名稱 is '';添加到C:\pdcomment.txt檔案中。
'               在補充comment完畢後,便于在資料庫中執行      
'******************************************************************************
 
 
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
 
 
Dim system, file
Set system = CreateObject("Scripting.FileSystemObject")
Dim ForReading, ForWriting, ForAppending   '打開檔案選項
ForReading   = 1 ' 隻讀
ForWriting   = 2 ' 可寫
ForAppending = 8 ' 可寫并追加
'打開文本檔案
Set file = system.OpenTextFile("C:\pdcomment.txt", ForWriting, true)
 
 
 
 
'判斷目前model是否實體資料模型
Dim mdl
Set mdl = ActiveModel
If (mdl Is Nothing) Then
   MsgBox "處理對象無模型"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
   MsgBox "目前模型不是實體資料模型"
Else
   ProcessFolder mdl,file
End If
file.Close
 
 
 
 
'******************************************************************************
Private sub ProcessFolder(folder,file)
 
 
Dim i,j,k
i=0:j=0:k=0
 
 
'列數組,記錄字段裡不重複的comment
Dim ColumnComment()
Dim ColumnCommentNumber()
ReDim Preserve ColumnComment(i)
ReDim Preserve ColumnCommentNumber(i)
 
 
Dim tbl   '目前表
Dim col   '目前字段
dim curComment '目前字段comment
 
 
'處理模型中的表
for each tbl in folder.tables
    if not tbl.isShortcut then
       if len(trim(tbl.comment))<>0 then
          '可以在這裡顯示table的comment
          'tbl.code = tbl.code+"("+trim(tbl.comment)+")"
       end if 
 
 
       '處理表中的列
       for each col in tbl.columns
           k = 0
           curComment = trim(col.comment)
           if len(curComment)<>0 then
              '周遊相異的comment數組
              for j = 0 to i
                  if ColumnComment(j) = curComment then
                     '如果找到相同的comment,則相關計數器加1
                     ColumnCommentNumber(j) = ColumnCommentNumber(j) + 1
                     k = j
                  end if
              Next
              '如果沒有相同的comment,則k=0,此時ColumnCommentNumber(0)也為0
              '否則ColumnCommentNumber(k)不為0
              if ColumnCommentNumber(k) <> 0 then
                 col.name = curComment & cstr(ColumnCommentNumber(k))
              else
                 col.name = curComment
                 'ColumnComment(0)、ColumnCommentNumber(0)永遠為空
                 '将相異的comment記錄添加到數組中
                 i = i + 1
                 ReDim Preserve ColumnComment(i)
                 ReDim Preserve ColumnCommentNumber(i)
                 ColumnComment(i) = curComment
                 ColumnCommentNumber(i) = 0
              end if
           else
              '寫入檔案中
              file.WriteLine "comment on column "+ tbl.code+"."+col.name+" is '';"         
           end if
       next
    end if
    '由于不同表的code允許相同,是以此時重新初始化。
    '因為ColumnComment(0)、ColumnCommentNumber(0)為空,可以保留
    ReDim Preserve ColumnComment(0)
    ReDim Preserve ColumnCommentNumber(0)
    i=0:j=0:k=0
 
 
next
 
 
Dim view '目前視圖
for each view in folder.Views
    if not view.isShortcut then
       '可以在這裡顯示view的comment
       'view.code = view.comment
    end if
next
 
 
'對子目錄進行遞歸
Dim subpackage 'folder
For Each subpackage In folder.Packages
    if not subpackage.IsShortcut then
       ProcessFolder subpackage , file
    end if
Next
 
 
end sub
 
'******************************************************************************zzzz
           

三、顯示字段名

雖然注釋顯示出來了,但原字段不見了

1.工具-> 顯示參數選擇(Display Preferences)

PowerDesigner16.5 逆向生成實體模型

2.Table->Advanced

PowerDesigner16.5 逆向生成實體模型

3.設定columns,點選右邊的放大鏡

PowerDesigner16.5 逆向生成實體模型

4.勾選code上移到頂部

PowerDesigner16.5 逆向生成實體模型
PowerDesigner16.5 逆向生成實體模型

繼續閱讀