1. 程式人生 > >powerdesign、navacat、ER圖、uml、類圖、時序圖

powerdesign、navacat、ER圖、uml、類圖、時序圖

dea timezone 初始化 num idt 找到 源地址 more 選擇

關於建表和生成實體以及ER圖的簡便方法

a:用navacat客戶端生成簡單的ER圖,並生成建表sql,執行生成表。

b:用powerdesign連接數據庫,反向生成帶有註釋的ER圖。

c:用ideal的Database插件,連接數據庫,生成pojo類(帶註釋)。

d : 用ideal的PlantUML integration 插件創建UML圖,時序圖,java類圖(鼠標先點到一個包目錄下,右擊new才能創建uml圖)

相關軟件安裝包見(https://pan.baidu.com/s/14L37Ai3yVM2ak47VqM3gMA)

技術分享圖片

1 關於powerdesign的版本(16.5)

powerdesign有view版本,不能創建模型(按鈕均為灰色顯示),安裝的時候註意。安裝正式版本,一路next即可。

所有的安裝需要的資源地址:

2 powerdesign創建物理模型

file ----> new model ---> model types ---> physical data model --->physical diagram --->ok

技術分享圖片

創建模型之後可以創建ER圖

2 如何將ER圖導出為sql

crl + A 全選中所有的ER圖,Database ---> Generate Database----

技術分享圖片

3 powerdesign 連接數據庫

DataBase(必須要創建了模型才出現此工具欄) ------>Configure Connections ---> Connection Profiles --->添加數據庫連接

技術分享圖片

技術分享圖片

此處點擊Test Connection 測試的時候請註意:

a:只能執行32位系統下的JDK指令。所以需要安裝32位的JDK(安裝包在壓縮文件內),將環境變量JAVA_HOME指向32的JDK地址。否則會報錯:PowerDesigner Could not Initialize JavaVM!

b:連接的url最好加上?serverTimezone=GMT%2B8否則可能報錯: The server time zone value ‘?D1ú±ê×?ê±??‘ is unrecognized or represents more than one time zone

4 利用powerdesign將數據庫導的表導入為ER圖,並帶上註釋

技術分享圖片

選擇數據源:

技術分享圖片

輸入密碼

技術分享圖片

選擇要生成的表,ok,但是此時一般不會讀取註釋,想顯示字段的註釋,請如下操作。

在powerdesign中菜單 Tools——>Display Preference...——>Table——>Advanced...

技術分享圖片

接下來,我們執行腳本,在桌面建立文件powerdesign-name-comment.vbs ,文件名稱可隨便寫,但是必須是vbs文件,名稱最好用英文,該文件內容為(詳細見壓縮包):

‘******************************************************************************* 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

‘******************************************************************************

在powerdesign中菜單Tools——>Excute Commands——>Edit/Run Script... 選擇上一步創建的文件,點擊執行,然後註釋會顯示出來。

powerdesign、navacat、ER圖、uml、類圖、時序圖