powerdesigner奇淫技
生活随笔
收集整理的這篇文章主要介紹了
powerdesigner奇淫技
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在日常開發(fā)中數(shù)據(jù)庫的設(shè)計常常需要建立模型,而powerdesigner是個不錯的選擇。但很多時候用powerdesigner生成模型后再去創(chuàng)建表結(jié)構(gòu),會覺得煩和別扭。那么能不能數(shù)據(jù)庫表建好后再生成模型呢?然而生成的模型是否符合我們的日常使用習(xí)慣呢?下面說說powerdesigner的奇淫技。
1、根據(jù)sql生成視圖模型(在不使用ODBC直接連接數(shù)據(jù)庫的情況下)
將表結(jié)構(gòu)導(dǎo)出sql文件后執(zhí)行以下操作
按確定后便可生成相應(yīng)的表視圖模型。但是生成的視圖模型name和code都是英文的,不好理解。因而有了奇淫技2。
2、將comment列值復(fù)制到name列
Ctr + O選擇轉(zhuǎn)換腳本?comment2name.vbs(將以下代碼片段保存成一個vbs)
'****************************************************************************** '* File: comment2name.vbs '* Purpose: 在PowerDesigner的PDM圖形窗口中顯示數(shù)據(jù)列的中文注釋 '* Title: 將字段的comment賦值到字段的name中 '* Category: 打開物理模型,運(yùn)行本腳本(Ctrl+Shift+X) '* Copyright:foxzz@163.com,2006/07/25 . '* Author: foxzz '* Created: '* Modified: '* Version: 1.0 '* Comment: 遍歷物理模型中的所有表,將字段的comment賦值到字段的name中。 ' 在將name置換為comment過程中,需要考慮的問題 ' 1、name必須唯一,而comment有可能不唯一。 ' 處理辦法是如果字段的comment重復(fù),則字段的name=comment+1、2、3... ' 2、comment值有可能為空,這種情況下對字段的name不處理。 ' 針對oracle數(shù)據(jù)庫,將comment on column 字段名稱 is '';添加到C:/pdcomment.txt文件中。 ' 在補(bǔ)充comment完畢后,便于在數(shù)據(jù)庫中執(zhí)行 '****************************************************************************** Option Explicit ValidationMode = True InteractiveMode = im_BatchDim 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)'判斷當(dāng)前model是否物理數(shù)據(jù)模型 Dim mdl Set mdl = ActiveModel If (mdl Is Nothing) ThenMsgBox "處理對象無模型" ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) ThenMsgBox "當(dāng)前模型不是物理數(shù)據(jù)模型" ElseProcessFolder mdl,file End If file.Close'****************************************************************************** Private sub ProcessFolder(folder,file)Dim i,j,k i=0:j=0:k=0'列數(shù)組,記錄字段里不重復(fù)的comment Dim ColumnComment() Dim ColumnCommentNumber() ReDim Preserve ColumnComment(i) ReDim Preserve ColumnCommentNumber(i)Dim tbl '當(dāng)前表 Dim col '當(dāng)前字段 dim curComment '當(dāng)前字段comment'處理模型中的表 for each tbl in folder.tables if not tbl.isShortcut then if len(trim(tbl.comment))<>0 then'可以在這里顯示table的comment'tbl.name = tbl.name+"("+trim(tbl.comment)+")"end if '處理表中的列for each col in tbl.columns k = 0curComment = trim(col.comment)if len(curComment)<>0 then'遍歷相異的comment數(shù)組for j = 0 to iif ColumnComment(j) = curComment then'如果找到相同的comment,則相關(guān)計數(shù)器加1ColumnCommentNumber(j) = ColumnCommentNumber(j) + 1k = jend if Next'如果沒有相同的comment,則k=0,此時ColumnCommentNumber(0)也為0'否則ColumnCommentNumber(k)不為0if ColumnCommentNumber(k) <> 0 thencol.name = curComment & cstr(ColumnCommentNumber(k))elsecol.name = curComment'ColumnComment(0)、ColumnCommentNumber(0)永遠(yuǎn)為空'將相異的comment記錄添加到數(shù)組中i = i + 1ReDim Preserve ColumnComment(i)ReDim Preserve ColumnCommentNumber(i)ColumnComment(i) = curCommentColumnCommentNumber(i) = 0end ifelse'寫入文件中file.WriteLine "comment on column "+ tbl.name+"."+col.code+" is '';" end ifnext end if '由于不同表的name允許相同,因此此時重新初始化。'因為ColumnComment(0)、ColumnCommentNumber(0)為空,可以保留ReDim Preserve ColumnComment(0)ReDim Preserve ColumnCommentNumber(0)i=0:j=0:k=0nextDim view '當(dāng)前視圖 for each view in folder.Views if not view.isShortcut then '可以在這里顯示view的comment'view.name = view.commentend if next'對子目錄進(jìn)行遞歸 Dim subpackage 'folder For Each subpackage In folder.Packages if not subpackage.IsShortcut then ProcessFolder subpackage , fileend if Nextend sub
最后點擊run按鈕,你會發(fā)現(xiàn)神奇的事情就這么發(fā)生了。
3、讓table視圖同時顯示name和code
至此,你便可在查詢工具里建立好表結(jié)構(gòu)。然后再生成表模型了,省省體力吧!
本文轉(zhuǎn)自秋楓博客園博客,原文鏈接:http://www.cnblogs.com/rwxwsblog/p/5041884.html,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的powerdesigner奇淫技的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是Session(session)
- 下一篇: [Unity3d]旋转拖动物体