PowerDesigner之PDM(物理概念模型)各種屬性建立如PK,AK等
一、PDM概述
PDM(物理數據模型),通俗地理解,就是在PowerDesigner中以圖形化的方式展示和設計數據庫。
PDM中涉及到的基本概念包括:
- 表;
- 列;
- 視圖;
- 主鍵;
- 候選鍵;
- 外鍵;
- 存儲過程;
- 觸發器;
- 索引;
- 完整性檢查約束;
以上這些都是數據庫的概念,不適合在PowerDesigner裏面表述。
二、創建PDM
創建PDM有4中方法:
- 使用設計環境直接創建PDM;
- 從現有數據庫或通過SQL腳本逆向工程創建PDM;
- 從CDM采用內部模型生成方法建立PDM;
- 從OOM中的類圖采用模型的內部生成方法建立PDM;
利用CDM生成PDM是最符合設計思路的方法,但在很多企業開發過程中,都是在設計環境中直接建立PDM,因為大部分企業沒錢發那麽多工資你設計那麽多圖。
1、在設計環境直接建立PDM
在設計環境直接建立PDM的步驟如下:
1、在PowerDesigner主窗口選擇File->New Model,在打開的創建左側選擇Physical Data Model選項
2、右側選項的意義
- Model name:模型名稱;
- DBMS:數據庫類型,也可以單擊後面的文件夾按鈕,選擇“瀏覽文件夾”,選擇xml文件作為目標(CDM轉PDM);
- Share the DBMS definition:共享數據庫定義;
- Copy the DBMS definition in model:從數據庫定義中拷貝,用於CDM轉PDM;
- First Diagram:創建一個PDM,默認會有一個Diagram,這裏是選擇這個Diagram的類型;
3、Extended Model Definitions選項卡的意義
當通過PowerBuilder來開發時,若選中PowerBuilder則生成的PDM可以從Catalog表中獲取表和列的擴展屬性。
4、點擊“確定”按鈕,打開新建的PDM設計窗口
工作區包括左側的瀏覽窗口、右側的設計窗口、下側的輸出窗口和浮動的工具窗口,可以利用工具窗口中的圖標在設計窗口中設計PDM。
5、各種圖標的作用
在建立PDM之前,可以定義PDM的顯示參數,以滿足PDM的顯示需求。
2、定義PDM的顯示參數
1、Tools->Display Preferences打開設置窗口,在General節點中設置整個模型的顯示參數。
各個選項含義如下:
- Window color:窗口顏色;
- Unit:長度度量單位。Inch(英尺)、Millineter(毫米)和Pixel(像素);
- Grid:網格線;
- Diagram:
- Show page delimiter:顯示分頁線;
- Constrain Labels:是否需要限定選項卡和連接對象的距離;
- Content節點:設置在圖形窗口PDM中每類對象的顯示樣式的參數。
- Format節點:設置每類對象的顯示格式,如大小、變現顏色、填充顏色、陰影、字體等;
- Modify:按鈕可以進行更詳細的設置;
3、定義PDM的模型屬性
在Model Properties(模型屬性)窗口中修改模型屬性的方法如下:
1、選擇Model->Model Propertise命令或右擊圖形窗口的背景,在彈出的快捷菜單中選擇Properties命令
各個選項的含義如下:
- Name:名稱;
- Code:代碼;
- Comment:註釋;
- File name:文件名;
- Author:作者;
- Version:版本;
- DBMS:數據庫管理系統
- Database:數據庫名稱
- Default diagram:打開模型時默認顯示的圖;
2、單擊Database後面的Create圖標,進入Database Propertise窗口。在窗口中可以配置創建數據庫選項
- General:通用屬性;
- Name:數據庫的名稱;
- Code:數據庫的代碼;
- DBMS:數據庫的類型;
- Rules:規則;
- Script:插入到數據庫SQL腳本開始和結束為止的腳本;
- Physical Options:數據庫可利用的物理選項;
三、創建表
創建表的方式,只點擊工具欄的Table圖標就可以了。
其他屬性頁的意義分別為:
Column(列)、Trigger(觸發器)、Keys(鍵)、Procedure(存儲過程)、Rules(規則)、Indexes(索引)和Check(約束);
四、創建列
1、創建列
1、列的基本屬性
列的基本屬性如下:
- Name:列名;
- Code:列的代碼;
- Data Type:數據類型;
- Domain:以域作為數據類型;
- Comment:註釋;
- M:非空;
- P:主鍵;
- D:在圖形窗口顯示;
選中某一列,單擊Propertise圖標(或雙擊列),打開Column Properties窗口,在其中可以定義列的其他屬性。
General選項卡屬性如下:
- Displayed:是否在圖形符號中顯示;
- Foreign Key:外部鍵;
- Computed:計算列;
- Mandatory:非空;
- Identiry:自增;
Detail選項卡可以定義的屬性如下:
- Column fill parameters:Null values(允許空值列個數的百分比)、Distince values(允許不同值列個數的百分比)和Average length(列值的平均長度);
- Test data parameters:Profile(測試數據的取值)。單擊右面的List按鈕,可以進一步定義測試的取值方式,可以是字符型、數值型或日期/時間型;
- Computed expression:定義計算列表達式;
2、創建計算列
計算列是通過表達式對其他列的值進行運算後得到的結果。
(1)、在列的通用的數據約束定義窗口中,單擊Computed expression列表框右面的Edit With SQL Editor按鈕,彈出計算列表達式定義窗口:
當數據庫選擇的是MySQL時,是沒有這個框的(因為是MySQL沒有計算列這個概念)。
3、約束
Standard Checks選項卡,用於在其中定義約束。
- Values:Minimum(最小值)、Maximum(最大值)和Default(默認值)。
- Characteristics:Format(顯示格式)、Unit(單位)、Uppercase(大寫字母)、Lowercase(小寫字母)和Cannot modify(不允許修改)。
- List of values:定義取值列表。
4、命名約束
Additional Checks選項卡專門用於定義命名約束
5、創建序列
雙擊列,進入列屬性
- Start with:起始數字
- Min value:最小值;
- Max value:最大值;
- Incremented by:增量值;
五、創建參照及參照完整性
參照是父表和子表之間的連接,它定義了兩個表中對應列之間的參照完整性約束。
1、參照模型設置
模型選項決定了參照的特性,可以通過Tools->Model Options打開模型選項(Model Options)窗口。
建議那兩個Auto什麽的屬性還是的勾去掉吧,手動搞,好像有點難看的明白這兩個選項的意思。
模型項與連接的關系
選項意義:
- Unique code:表示模型中的參照代碼唯一;
- Auto-reuse columns:表示同父表主鍵擁有相同的代碼列或子表列不是其他表的外鍵,則該列被當做子表的外部鍵;
- Auto-migrate columns:表示產生參照時,父表的主鍵將遷移到子表中成為外部鍵;
- Domain:表示如果選中Auto-migrate columns和Domain復選框,在建立參照時,主鍵的域將遷移到外部鍵上;
- Check:表示如果選中Auto-migrate columns和Check復選框,在建立參照時,主鍵的檢查參數將遷移到外部鍵上;
- Rules:表示如果選中Auto-migrate columns和Rules復選框,在建立參照時,主鍵的業務規則將遷移到外部鍵上;
- Primary Key:表示參照連接主鍵列到外部鍵列;
- User-defined:表示參照不產生連接;
Auto兩個復選框的意義:
2、創建參照及定義相關屬性
創建參照的具體方法:
1.在PDM模型的Palette工具欄中單擊Reference圖標;
2.雙擊新建立的連接,打開Reference Properties窗口,在其中可以修改參照的各個屬性:
- Name:參照名;
- Code:參照代碼;
- Comment:註釋;
- Parent table:參照的父表;
- Child table:參照的子表;
- Generate:是否在數據庫中生成參照;
- Joins選項卡可以定義表與表之間的連接;
3.Join(連接)可以用來連接主鍵、候選鍵和外部鍵,或在用戶指定的列之間建立連接;
4.連接可以通過上節的模型選項自動建立,也可以手工建立;如果手工指定,也可以利用Reuse Columns圖標、Migrate Columns圖標和Cancel Migration圖標實現列重用或遷移。
- Reuse Columns:重用子表中存在並與父表相同的列;
- Migrate Columns:表示將父表的主鍵遷移到子表中作為外部鍵;
- Cancel Migration:表示刪除從父表中遷移到子表的所有列;
5.Integrity選項卡用來定義參照完整性。主要用於設置父表中修改或刪除參照列的數據對子表的影響。
- Constraint name:約束名,生成SQL腳本時使用此名稱。
- Implementation:實現方式;
選項意義:
Declarative:聲明式,吧參照完整性約束定義為一種特殊引用。
Trigger:通過觸發器在相應DBMS中維護數據的有效性;
- Cardinality:基數。表示父表中的每個實例,子表中可能擁有的實例的最少和最多數。
- Update/Delete constraint:表示修改父表列值後子表列值如何修改:
None:修改或刪除父表,對子表無影響;
Restrict:如果子表中存在一個或多個對應值,不能修改或刪除父表中的值;
Cascade:修改或刪除父表中值的同事將子表中對應的值也修改或刪除;
Set null:修改或刪除父表中值的同時將子表中對應的值置為NULL;
Set Default:修改或刪除父表中值的同事將子表中對應的值置為默認值;
- Mandatory parent:是否強制子表中的外部鍵列值都必須在父表中有相應的列值;
- Check on commit:是否在提交時驗證參照完整性;
- Change parent allowed:是否允許修改父表中參照列的值;
6.此外,還可以修改參照圖符號上顯示的文本信息,以滿足不同系統的需求。
此PDM模型窗口中選擇Tools->Display Preferences命令,打開Display Preferences窗口,單擊Object View->Reference節點。
- Name:參照的名稱;
- Constraint name:參照完整性約束的名稱;
- Join:兩個表相同列的連接名稱;
- Rederential integrity:參照完整性;
- Cardinality:基數;
- Implementation:參照完整性實現的方式;
設置參照完整性後的例子如下:
六、創建域
在PDM中,使用域有助於識別信息的類型,易於使不同表中列的數據特征標準化。域為列定義了一組有效的值,可以把Data Type、Check、Rule、Mandatory等信息關聯到域上。
1、創建域
1、打開PDM模型,選擇Model->Domains命令,在空白行單擊,可以增加一行。分別在Name、Code和DataType欄中輸入名稱、代碼和數據類型;
2、單擊空白行可以增加一行;
3、雙擊行前面的箭頭,可以進入屬性設置:
其中General選項卡主要意思如下:
- Name:名稱;
- Code:代碼;
- Comment:註釋;
- Data type:數據類型;
- Length:長度;
- Profile:測試數據定義文件;
其他選項卡與前面的類似。
2、使用抽象數據類型
在為域選擇數據類型時,可以指定抽象數據類型。抽象數據類型是用戶自定義的數據類型。ADT數據類型因數據庫系統而存在差異,在PowerDesigner系統中允許使用的ADT數據類型如下表:
類型 | 描述 | 示例 |
Array | 固定長度元素的集合 | Varray Oracle8 |
List | 不固定長度對象的集合 | Table Oracle8 |
Java | Java類 | Java Adaptive Server Anywhere |
Object | 包含屬性列表的對象 | OBJECT Oracle8 |
Structured | 包含屬性列表的結構體 | NAMED ROW TYPEDB2 |
CLR | .Net通用語言運行時 | Microsoft SQL Server 2005 |
1、普通的抽象數據類型
打開PDM模型,選擇Model->Abstract Data Types命令。
雙擊行進入
2、OBJECT類型的抽象數據類型
如果在Type下拉列表框中選擇OBJECT選項,即可建立一個抽象數據類型對象。
選擇Attributes選項卡,在Name、Code和Data Type欄中分別輸入。
七、創建表中的鍵
鍵是表中可以唯一識別一條記錄的一個或多個列的集合。PDM支持兩種類型的鍵:主鍵、候選鍵。
1、主鍵
定義主鍵很簡單,選中作為主鍵列的P復選框即可。
如果利用了逆向工程,從已經存在的數據庫逆向到PDM模型,可能無法生成主鍵或者在你想工程數據庫時沒有選擇重建主鍵選項,此時需要重建主鍵。
重建主鍵的方法:
1、選擇Tools->Rebuild Objects->Rebuild Primary Keys命令。
2、打開Primary Key Rebuild窗口;
3、選擇要重建主鍵表前的復選框,確定;
2、候選鍵
候選鍵(Alternate Key)指一列或多列,表中每條記錄的列值都是唯一的。每個候選鍵都在數據庫中生成唯一索引或唯一約束。
1、打開表的Keys選項卡,在空白的Name或Code欄中單擊,系統自動增加一個新鍵。設置鍵的名稱和代碼;
2、雙擊新鍵行的行首箭頭,在打開的Key Properties(鍵屬性)窗口中選擇Columns選項卡,該選項卡列出了鍵包含的所有列;
3、單擊Add Columns圖標,在窗口中列出了表中包含的所有列,選擇一個或幾個需要的列;
3、鍵的約束名
利用PDM生成數據庫腳本時,鍵也包含在其中,為了方別識別和修改,需要為其定義統一的約束名。如果不指定,系統會自動建立一個默認的。
選擇定義了主鍵的表,雙擊鼠標打開表屬性,選擇Keys選項卡,顯示所有的主鍵和候選鍵,選中其中一個,單擊其中的Properties,在Constraint name文本框中輸入鍵的名稱。
八、創建索引
1、創建索引
建立索引的具體方法如下:
1、在表屬性窗口,選擇Indexes選項卡,空白行單擊,系統會自動給出索引的名稱和代碼,可以根據需要進行修改。
2、單擊Properties圖標,打開Index Properties,General選項卡的條目含義為:
- Name:索引名稱;
- Code:索引代碼;
- Comment:索引註釋;
- Table:包含索引的表;
- Type:索引的類型,普通索引、全文索引、Xml索引
- Unique:唯一索引;
- Cluster:聚集索引;
3、選擇Columns選項卡,可以選擇索引包含的列;
2、重建索引
重建索引具體方法如下:
Tools->Rebuild Objects->Rebuild Indexes命令,打開Index Rebuild(重建索引);
各選項含義如下:
- Primary key:重建主鍵索引;右邊輸入為主鍵索引名稱:%TABLE%_PK
- Other keys:重建候選鍵索引,右邊輸入為默認的候選鍵索引名稱:%TABLE%_AK
- Foreign key indexes:重建外部鍵索引,右邊輸入為%REFR%_FK
- Foreign key threshold:建立外部鍵索引所需的表最小記錄數
- Delete and Rebuild:重建索引之前刪除已存在的索引
- Add missing indexed:只增加缺少的索引
在Selection選項卡中選擇需要重建索引的表;
九、創建視圖
創建視圖有兩種方法:
1、選擇表,Tools->Create View命令,建立包含所選表全部字段的視圖;
2、建一個空視圖,然後選擇表或直接定義SQL語句。
第二種方式操作如下:
用工具欄的View圖標,創建一個視圖,雙擊進入視圖View Properties(視圖屬性)窗口。
其General選項卡的基本屬性含義如下:
- Name:視圖的名稱;
- Code:視圖的代碼;
- Comment:視圖的用途;
- Usage:視圖的用途;
- query only:只用於查詢;
- Updateable:用於查詢和修改;
- With check option:在視圖插入數據時要收到表中已定義約束的限制;
- Dimensional Type:維度類型;
- Generate:是否在數據庫中生成視圖;
- User-defined:在用戶自定義視圖時是否訪問查詢編輯器;
選擇SQL Query選項卡,為視圖定義對應的SQL語句。
點擊Edit With SQL Editor進入SQL編輯器能夠非常方便地書寫SQL語句。
文章轉載自:http://www.cnblogs.com/kissdodog/p/4140244.html
PowerDesigner之PDM(物理概念模型)各種屬性建立如PK,AK等