PowerDesigner之PDM(實體概念模型)
一、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