1、去掉Oracle生成的SQL創(chuàng )建語(yǔ)句中的雙引號
用powerdesigner導出orale數據庫的建表sql時(shí),默認會(huì )給表名和字段名加上雙引號,如下圖:
PowerDesign的使用主要是DBMS的配置
3、修改建表腳本生成規則。
如果每個(gè)表格都有相同的字段,可以如下修改:
Database -> Edit Current DBMS 展開(kāi) Script -> Object -> Table -> Create 見(jiàn)右下的Value值,可以直接修改如下:
/* tablename: %TNAME% */
create table [%QUALIFIER%]%TABLE% (
%TABLDEFN%
ts char(19) null default convert(char(19),getdate(),20),
dr smallint null default 0
)
[%OPTIONS%]
其中的 ts、dr 兩列會(huì )在生成SQL腳本的時(shí)候自動(dòng)的插入每個(gè)表格中,其中的%TNAME% 變量是給每個(gè)表格的SQL添加一個(gè)該表的Name值注釋。
4、修改字段生成規則。
要給每個(gè)字段都添加一個(gè)注釋的話(huà),同一窗口中展開(kāi) Script -> Object -> Column -> Add 的 Value修改為:
%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/
其中的%COLNNAME%就是列的Name值(可以是中文)
5、修改外鍵命名規則。
選擇Database—>Edit Current DBMS
選擇Scripts-》Objects-》Reference-》ConstName
可以發(fā)現右側的Value為:
FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%
可見(jiàn),該命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,你可以根據這中模式自定義為:
FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,
可以使FK名稱(chēng)變?yōu)镕K_TABLE_2_RELATIONS_TABLE_1
掌握這種方法后就可以按照自己的想法修改了
生成建庫腳本SQL文件中的表頭注釋很討厭,可以在 Databse -> Generate Database (Ctrl+G)窗口中,選擇Options卡片,去掉Usage的Title鉤選項即可。
6、添加外鍵
Model -> References新建一條外鍵后,雙擊進(jìn)入外鍵屬性,在“Joins”卡片中可以選擇子表的外鍵字段。如下圖:
7、取消name和code聯(lián)動(dòng)
在修改name的時(shí)候,code的值將跟著(zhù)變動(dòng),很不方便。修改方法:PowerDesign中的選項菜單里修改,在[Tool]-->[General Options]->[Dialog]->[Operating modes]->[Name to Code mirroring],這里默認是讓名稱(chēng)和代碼同步,將前面的復選框去掉就行了。如圖:

/* tablename: %TNAME% */
create table [%QUALIFIER%]%TABLE% (
%TABLDEFN%
ts char(19) null default convert(char(19),getdate(),20),
dr smallint null default 0
)
[%OPTIONS%]
其中的 ts、dr 兩列會(huì )在生成SQL腳本的時(shí)候自動(dòng)的插入每個(gè)表格中,其中的%TNAME% 變量是給每個(gè)表格的SQL添加一個(gè)該表的Name值注釋。
2、修改字段生成規則。要給每個(gè)字段都添加一個(gè)注釋的話(huà),同一窗口中展開(kāi) Script -> Object -> Column -> Add 的 Value修改為:
%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/
其中的%COLNNAME%就是列的Name值(可以是中文)
3、修改外鍵命名規則。選擇Database—>Edit Current DBMS
選擇Scripts-》Objects-》Reference-》ConstName
可以發(fā)現右側的Value為:
FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%
可見(jiàn),該命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,你可以根據這中模式自定義為:
FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,
可以使FK名稱(chēng)變?yōu)镕K_TABLE_2_RELATIONS_TABLE_1
掌握這種方法后就可以按照自己的想法修改了
生成建庫腳本SQL文件中的表頭注釋很討厭,可以在 Databse -> Generate Database (Ctrl+G)窗口中,選擇Options卡片,去掉Usage的Title鉤選項即可。
4、添加外鍵
Model -> References新建一條外鍵后,雙擊進(jìn)入外鍵屬性,在“Joins”卡片中可以選擇子表的外鍵字段
5、去掉生成的SQL腳本雙引號的問(wèn)題:ORACLE 8I2::Script\Sql\Format\CaseSensitivityUsingQuote改成No,默認是Yes所以會(huì )有雙引號。
PowerDesigner設計數據庫規范
----初稿 by 羅軍
需求:
雖然目前我們的數據庫設計模式能夠滿(mǎn)足開(kāi)發(fā)要求,也節省了開(kāi)發(fā)時(shí)間,但是這樣的設計會(huì )對以后工程項目的維護、改版造成成本上的增加。數據庫表的字段在修改上將對主程序造成影響;另外對于開(kāi)發(fā)和維護人員來(lái)說(shuō),字段的編碼也需要規范化,這樣可以統一字段編碼,讓維護人員一看就懂,增添的字段對以后接手項目的人員來(lái)說(shuō)則很容易上手。
針對上述問(wèn)題,我建議數據開(kāi)發(fā)需要定義一套簡(jiǎn)明扼要的規范。規范中包括三個(gè)部分:一是編碼的規范;二是字段類(lèi)型長(cháng)度的定義;三是表設計的特殊說(shuō)明。
設計:
數據庫開(kāi)發(fā)流程先知:在PowerDesigner中,我們主要設計物理數據模型(PDM文件),這時(shí)需要定義一個(gè)工程項目的數據字段域,定義字段域有一個(gè)好處就是以后設計數據表時(shí),字段的類(lèi)型可以選擇用域中定義好的類(lèi)型,更改了域的類(lèi)型信息,表中與域引用相關(guān)的字段信息也相應改變,這樣方便修改字段,也統一了字段類(lèi)型和長(cháng)度。
定義好域之后,就可以設計數據表以及字段了。設計完表,可以選擇導出的數據庫類(lèi)型,并生成建數據和建表的sql,再通過(guò)數據庫連接工具執行sql語(yǔ)句,一個(gè)工程項目的數據庫就建立好了。以后只要有數據庫的修改要求,則重新生成sql語(yǔ)句并執行之即可。注意:重新執行sql之前需要確定是否保留原表的數據,若需要保留則只能通過(guò)alert語(yǔ)句來(lái)修改,否則原表的數據將被沖洗掉。

圖I 數據庫設計流程圖
如圖(圖I)所示為數據庫設計流程圖,如果有修改內容,我們只需要重新執行箭頭2所指的三個(gè)步驟就行。
以下說(shuō)明數據庫設計過(guò)程中的一些要求。
1) 編碼規范
編碼主要是要注意編碼的前后綴,以便看到編碼則知道是什么類(lèi)型。
A. 主鍵pk_ [字符串or長(cháng)整型] 例如:pk_company
B. 外鍵fk_ [字符串or長(cháng)整型] 例如:fk_employee
C. 字符串 v 例如:vdetail
D. 字符型 c 例如:ccolor
E. 時(shí)間 d 例如:ddatetime
F. 邏輯 b 例如:bisdeleted
G. 整型 i 例如:itype
H. 數字型(浮點(diǎn)行) n 例如:nprice
I. 文本型 t 例如:tdescription
J. 對象類(lèi)型 o 例如:opicture
給各個(gè)表與字段編碼時(shí),盡量保持編碼的長(cháng)度在20個(gè)字符以?xún)?,編碼要求有一定意義,并且易懂。
2) 字段類(lèi)型長(cháng)度定義
主鍵、外鍵如果是字符串行的話(huà),建議用20個(gè)字符的長(cháng)度。字符串的長(cháng)度一般定義20、30、50、100、256、512、1024、2048、4096,超過(guò)4096個(gè)字符可以建議用文本類(lèi)型來(lái)定義。定義字段的長(cháng)度主要用于定義域的字段長(cháng)度,從而規范表字段的類(lèi)型及長(cháng)度。
3) 表設計的特殊說(shuō)明
一般,表中的記錄如果是假刪除的話(huà),則每個(gè)表需要統一的刪除字段,另外,時(shí)間字段一般每一個(gè)表也要求出現,這樣設計可以考慮目前或者以后做多線(xiàn)程訪(fǎng)問(wèn)的控制判斷(即允許多讀,但不允許多寫(xiě)),以后還有可能對一類(lèi)表有固定必需字段的要求,這樣的需求可以利用powerdesigner來(lái)統一添加。另外,每一表建議只有主鍵非空,其余字段均可空,字段的非空判斷交由程序來(lái)處理,不用數據庫來(lái)判斷。
聯(lián)系客服