Powerdesigner自定義DBMS(以derby數據庫為例)


Powerdesigner自定義DBMS

Powerdesigner以下簡稱PD.
PD默認支持的DBMS不夠用時,我們就需要自己定義了。
以apache derby數據庫為例。
1、DBMS的定義文件
PD的DBMS定義文件放在install_dir/Resource Files/DBMS目錄下。自定義DBMS的第一步是復制一個現成的DBMS文件,由於derby與Oracle相似之處比較多,所以可以選擇復制Oracle的DBMS文件,並重命名為derby.xdb

2、修改描述
用記錄本打開derby.xdb,將大概前16行的一些內容做修改。比如code、name等等。我的大體如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<?PowerDesigner AppLocale="UTF16" Code="DERBY" Family="DERBY" ID="{04DFD581-D1C0-43E8-B9AE-01951ECAB446}" LastModificationDate="1347972332" Name="Apache Derby" Objects="778" Symbols="0" Type="{4BA9F647-DAB1-11D1-9944-006097355D9B}" signature="XDB_XML" version="15.1.0.2850"?>
<!-- do not edit this file -->

<DBMS xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">

<o:DBMS Id="o1">
<a:ObjectID>04DFD581-D1C0-43E8-B9AE-01951ECAB446 </a:ObjectID>
<a:Name>Apache Derby </a:Name>
<a:Code>DERBY </a:Code>
<a:CreationDate>0 </a:CreationDate>
<a:Creator/>
<a:ModificationDate>1243501756 </a:ModificationDate>
<a:Modifier>test </a:Modifier>
<a:Comment> </a:Comment>
<a:Family>DERBY </a:Family>

這樣修改之后,我們在PD的database菜單里,選擇Change Current DBMS時,可以看到下拉選項中,有一項為Apache Derby。

3、修改數據類型轉換
由於我們復制的oracle的dmbs文件,與derby中,有些數據類型不一致,所以需要修改。在database菜單里,選擇Edit Current DBMS,彈出窗口如下:

左邊是樹型結構,點擊后右邊編輯內容。

修改數據類型時,選擇左側樹:Script -> Data Type。
插兩句話,講一下PD數據庫切換時字段處理的原理。PD本身定義了一套內部的數據類型,如A%n、N、N%s,%p等,其中:
%n is the length of the data type
%s is the size of the data type
%p is the precision of the data type
當我們由一個DBMS A 換成另一個DBMS B時,PD會首先將A的數據類型轉換成PD內部自己定義的數據類型,這個轉換的規則這里叫做 A-PD,然后再將內部的數據類型轉換成B的數據類型,這里叫做PD-B,通過上面兩步轉換實現A到B的類型轉換。

而A-PD的規則,定義在剛才打開的Data Type節點下的PhysDataType節點,PD-B規則定義在AmcdDataType節點下。
舉幾個簡單的例子:
A、Oracle NUMBER -> Derby BIGINT
首先要查看Oracle的dbms文件,注意是Oracle的,展開到PhysDataType節點下,看到有如下映射
Physical Model | Internal
NUMBER | N
所以,經過A-PD規則后,Oracle的NUMBER類型會轉換成PD的內部類型N。
接下來,查看Derby的dbms,打開AmcdDataType節點,找到如下映射:
Internal | Physical Model
N | NUMBER
把上面的NUMBER修改成BIGINT
這樣的話,經過PD-B規則,Derby里的字段就會變成BIGINT類型了。

B、Derby BIGINT -> Oracle NUMBER
與上面類型,不過需要查看Derby的PhysDataType和Oracle的AmcdDataType節點。

從上面兩個例子基本可以看出來PhysDataType節點用來將數據庫類型轉換成PD的類型,而AmcdDataType則將PD的內部類型轉換成數據庫的類型。
另外,可以使用%n,%s,%p實現更精細的轉換,且這三個標識也可以完全由數字代替。

4、注釋
修改列注釋,表格注釋在Script\Objects\Table和Script\Objects\Column節點下。其它修改也很類似,如索引、依賴等等。
實際上,我們最終通過PD生成的SQL,都是由Script\Objects標簽下定義的模板拼起來的。
Script\Sql\Syntax節點下則是一些基本的SQL語法規定,比如注釋以–開始,SQL結束符是;等等。

更多詳細說明可參考手冊:
1、derby:http://db.apache.org/derby/docs/10.9/ref/crefsqlj31068.html
2、PD:http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc38628.1510/doc/html/rad1232022090125.html
3、使用POWERDESIGNER設計數據庫的20條技巧

再說兩句其它的,關於PD生成數據庫設計文檔。
默認的模板生成的文檔,有相當多無用的東西,沒法兒看。所以我們可以自定義文檔模板。在Report -> Report Templates菜單下,在彈出窗口中,點新建,輸入名稱,然后出現編輯模板的界面,分成左右兩塊兒,可以把左邊一些需要的元素直接拖到右邊就OK。報告模板默認放在安裝目錄\Resource Files\Report Templates\下,我們也可以把這個目錄下的文件復制一份,改個名兒,然后在這個基礎上修改。

總之一句話,PD很強大。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM