關于PowerDesigner的說明參考:
PowerDesigner 15 概述
http://www.cndba.cn/cndba/dave/article/1498
這篇主要了解一下CDM 模型及使用。
一、概念資料模型(CDM)概述
Conceptual Data Model:概念資料模型,它以實體-聯系(Entity-RelationShip, E-R)理論為基礎,并對這一理論進行了擴充。它從使用者的觀點出發對資訊進行模組化,主要用于資料庫的概念級設計。
通常人們先将現實世界抽象為概念世界,然後再将概念世界轉為機器世界。換句話說,就是先将現實世界中的客觀對象抽象為實體(Entity)和聯系 (Relationship),它并不依賴于具體的計算機系統或某個DBMS系統,這種模型就是我們所說的CDM;然後再将CDM轉換為計算機上某個 DBMS所支援的資料模型,這樣的模型就是實體資料模型,即PDM。
CDM是一組嚴格定義的模型元素的集合,這些模型元素精确地描述了系統的靜态特性、動态特性以及完整性限制條件等,其中包括了資料結構、資料操作和完整性限制三部分。
1)資料結構表達為實體和屬性;
2)資料操作表達為實體中的記錄的插入、删除、修改、查詢等操作;
3)完整性限制表達為資料的自身完整性限制(如資料類型、檢查、規則等)和資料間的參照完整性限制(如聯系、繼承聯系等)
二、實體、屬性及辨別符的定義
2.1 實體(Entity):
也稱執行個體,對應現實世界中可差別于其他對象的“事件”或“事物”。例如,學校中的每個學生,醫院中的每個手術。每個實體都有用來描述實體特征的一組性質,稱之為屬性,一個實體由若幹個屬性來描述。如學生實體可由學号、姓名、性别、出生年月、所在系别、入學年份等屬性組成。
2.2 實體集(EntitySet):
是具體相同類型及相同性質實體的集合。例如學校所有學生的集合可定義為“學生”實體集,“學生”實體集中的每個實體均具有學号、姓名、性别、出生年月、所在系别、入學年份等性質。
2.3 實體類型(EntityType):
是實體集中每個實體所具有的共同性質的集合,例如“患者”實體類型為:患者{門診号,姓名,性别,年齡,身份證号.............}。實體是實體類型的一個執行個體,在含義明确的情況下,實體、實體類型通常互換使用。實體類型中的每個實體包含唯一辨別它的一個或一組屬性,這些屬性稱為實體類型的辨別符(Identifier),如“學号”是學生實體類型的辨別符,“姓名”、“出生日期”、“信址”共同組成“公民”實體類型的辨別符。有些實體類型可以有幾組屬性充當辨別符,標明其中一組屬性作為實體類型的主辨別符,其他的作為次辨別符。
三、實體、屬性及辨別符的表達
四、建立概念資料模型
4.1選擇File-->New,彈出如圖所示對話框,選擇CDM模型(即概念資料模型)建立模型。
4.2 完成概念資料模型的建立。以下圖示,對目前的工作空間進行簡單介紹。
4.3 選擇新增的CDM模型,右擊,在彈出的菜單中選擇“Properties”屬性項,彈出如圖所示對話框。在“General”标簽裡可以輸入所模組化型的名稱、代碼、描述、建立者、版本以及預設的圖表等等資訊。在“Notes”标簽裡可以輸入相關描述及說明資訊。當然再有更多的标簽,可以點選 "More>>"按鈕,這裡就不再進行詳細解釋。
五、定義實體
5.1、建立實體
1)在CDM的圖形視窗中,單擊工具選項版上的Entity工具,再單擊圖形視窗的空白處,在單擊的位置就出現一個實體符号。點選Pointer工具或右擊滑鼠,釋放Entitiy工具。如圖所示
PowerDesigner工具面闆association,inheritance,association link 不可用 解決方法
http://www.cndba.cn/cndba/dave/article/1497
2)輕按兩下剛建立的實體符号,打開下列圖示視窗,在此視窗“General”标簽中可以輸入實體的名稱、代碼、描述等資訊。
Name:是用來在模型中辨別一個實體,一般用于模型在界面中的顯示(這個可以通過更改選項設定進行改變)。在一個模型當中,實體的名字不能重複。
Code:在模型轉化時一般作為對象的實體名稱,比如把實體屬性的Code轉化為資料庫中的列名。
Generate:預設是選擇狀态,如果取消,則在轉化為其他模型時,會忽略這個實體。
5.2、添加實體屬性
1)在上述視窗的“Attribute”選項标簽上可以添加屬性,如下圖所示。
注意:
資料項中的“添加屬性”和“重用已有資料項”這兩項功能與模型中Data Item的Unique code 和Allow reuse選項有關。
P 清單示該屬性是否為主辨別符;
D清單示該屬性是否在圖形視窗中顯示;
M清單示該屬性是否為強制的,即該列是否為空值。
如果一個實體屬性為強制的,那麼,這個屬性在每條記錄中都必須被指派,不能為空。
按“Crtl+U”呼出“定制列過濾器”的視窗,可以根據自己的喜好和實際需要選擇那些列出現在視窗中,那些隐藏。使用快捷鍵“Crtl+E”可以允許或者禁止目前過濾器。
2)在上圖所示視窗中,點選插入屬性按鈕,彈出屬性對話框,如下圖所示。
5.3、定義屬性的檢查限制
1)定義屬性的标準檢查
标準檢查限制是一組確定屬性有效的表達式。在實體屬性的特性視窗,打開如圖所示的檢查頁籤。
在這個頁籤可以定義屬性的标準檢查限制,視窗中每項的參數的含義,如下
參數 | 說明 |
Minimum | 屬性可接受的最小數 |
Maximum | 屬性可接受的最大數 |
Default | 屬性不指派時,系統提供的預設值 |
Unit | 機關,如公裡、噸、元 |
Format | 屬性的資料顯示格式 |
Lowercase | 屬性的指派全部變為小寫字母 |
Uppercase | 屬性的指派全部變為大寫字母 |
Cannot modify | 該屬性一旦指派不能再修改 |
List Of Values | 屬性指派清單,除清單中的值,不能有其他的值 |
Label | 屬性清單值的标簽 |
2)定義屬性的附加檢查
當Standard checks 或Rules 不能滿足檢查的要求時,可以在Additional Checks頁籤的Server子頁上,通過SQL語句中使用%MINMAX%、%LISTVAL%、%RULES%、%UPPER%、%LOWER% 幾個變量來定義Standard和Rule,如圖所示
%MINMAX%、%LISTVAL%、%UPPER%、%LOWER%:
在Standard Check中定義的Minimum 和Maximum、List values 、uppervalues、lowervalues
%RULES%:
在Rules特性視窗Expression頁籤中定義的有效性規則表達式
六、辨別符
辨別符是實體中一個或多個屬性的集合,可用來唯一辨別實體中的一個執行個體。要強調的是,CDM中的辨別符等價于PDM中的主鍵或候選鍵。每個實體都必須至少有一個辨別符。如果實體隻有一個辨別符,則它為實體的主辨別符。如果實體有多個辨別符,則其中一個被指定為主辨別符,其餘的辨別符就是次辨別符了。
6.1、定義主、次辨別符
1)選擇某個實體輕按兩下彈出實體的屬性對話框。在Identifiers頁籤上可以進行實體辨別符的定義。如下圖所示
2)選擇第一行“主辨別符”,點選屬性按鈕或輕按兩下第一行“主辨別符”,彈出屬性對話框,如圖所示
3)選擇"Attributes"頁籤,再點選“Add Attributes”工具,彈出如圖所示視窗,選擇某個屬性作為辨別符就行了。
七、資料項
資料項(Data Item)是資訊存儲的最小機關,它可以附加在實體上作為實體的屬性。
注意:模型中允許存在沒有附加至任何實體上的資料項。
7.1 建立資料項
1)使用“Model”---> Data Items 菜單,在打開的視窗中顯示已有的資料項的清單,點選 “Add a Row”按鈕,建立一個新資料項,如圖所示
2)當然您可以繼續設定具體資料項的Code、DataType、Length等等資訊。這裡就不再詳細說明了。
7.2 資料項的唯一性代碼選項和重用選項
使用Tools--->ModelOptions->Model Settings。在Data Item組框中定義資料項的唯一性代碼選項(Unique Code)與重用選項(Allow Reuse)。
注意:
如果選擇Unique Code複選框 ,每個資料項在同一個命名空間有唯一的代碼,而選擇Allow reuse ,一個資料項可以充當多個實體的屬性。
7.3 在實體中添加資料項
1)輕按兩下一個實體符号,打開該實體的屬性視窗。
2)單擊Attributes頁籤,打開如下圖所示視窗
注意:Add aDataItem 與 Reuse aDataItem的差別在于
Add a DataItem 情況下,選擇一個已經存在的資料項,系統會自動複制所選擇的資料項。如果您設定了UniqueCode選項,那系統在複制過程中,新資料項的Code會自動生成一個唯一的号碼,否則與所選擇的資料項完全一緻。
Reuse a DataItem情況下,隻引用不新增,就是引用那些已經存在的資料項,作為新實體的資料項。
八、 聯系
聯系(Relationship)是指實體集這間或實體集内部執行個體之間的連接配接。
實體之間可以通過聯系來互相關聯。與實體和實體集對應,聯系也可以分為聯系和聯系集,聯系集是實體集之間的聯系,聯系是實體之間的聯系,聯系是具有方向性的。聯系和聯系集在含義明确的情況之下均可稱為聯系。
按照實體類型中執行個體之間的數量對應關系,通常可将聯系分為4類:
一對一(ONE TO ONE)聯系、
一對多(ONE TO MANY)聯系、
多對一(MANY TO ONE)聯系
多對多聯系(MANY TO MANY)。
8.1、建立聯系
在CDM工具選項闆中除了公共的工具外,還包括如下圖所示的其它對象産生工具。
在圖形視窗中建立兩個實體後,單擊“實體間建立聯系”工具,單擊一個實體,在按下滑鼠左鍵的同時把光标拖至别一個實體上并釋放滑鼠左鍵,這樣就在兩個實體間建立了聯系,右鍵單擊圖形視窗,釋放Relationship工具。如下圖所示
在兩個實體間建立了聯系後,輕按兩下聯系線,打開聯系特性視窗,如圖所示。
8.2、 四種基本的聯系
即一對一(ONE TOONE)聯系、一對多(ONE TO MANY)聯系、多對一(MANYTO ONE)聯系和多對多聯系(MANY TO MANY)。如圖所示
8.3、 其他幾類特殊聯系
除了4種基本的聯系之外,實體集與實體集之間還存在标定聯系(Identify Relationship)、非标定聯系(Non-Identify RelationShip)和遞歸聯系(Recursive Relationship)。
8.3.1 标定聯系和非标定聯系:
每個實體類型都有自己的辨別符,如果兩個實體集之間發生聯系,其中一個實體類型的辨別符進入另一個實體類型并與該實體類型中的辨別符共同組成其辨別符時,這種聯系則稱為标定聯系,也叫依賴聯系。反之稱為非标定聯系,也叫非依賴聯系。
注意:
在非标定聯系中,一個實體集中的部分執行個體依賴于另一個執行個體集中的執行個體,在這種依賴聯系中,每個實體必須至少有一個辨別符。而在标定聯系中,一個實體集中的全部執行個體完全依賴于另個實體集中的執行個體,在這種依賴聯系中一個實體必須至少有一個辨別符,而另一個實體卻可以沒有自己的辨別符。沒有辨別符的實體用它所依賴的實體的辨別符作為自己的辨別符。
換句話來了解,在标定聯系中,一個實體(選課)依賴一個實體(學生),那麼(學生)實體必須至少有一個辨別符,而(選課)實體可以沒有自己的辨別符,沒有标辨別符的實體可以用實體(學生)的辨別符作為自己的辨別符。
8.3.2 遞歸聯系:
遞歸聯系是實體集内部執行個體之間的一種聯系,通常形象地稱為自反聯系。同一實體類型中不同實體集之間的聯系也稱為遞歸聯系。
例如:在“職工”實體集中存在很多的職工,這些職工之間必須存在一種上司與被上司的關系。又如“學生”實體信中的實體包含“班長”子實體集與“普通學生”子實體集,這兩個子實體集之間的聯系就是一種遞歸聯系。建立遞歸聯系時,隻需要單擊“實體間建立聯系”工具從實體的一部分拖至該實體的别一個部分即可。如圖
聯系符号說明:
在Power Designer中,關系符号靠近實體端的一個“橫線”代表強制性限制,“空心圓圈”代表無強制限制,即這一方可以無對象關聯;“非分岔”線代表為“1” 的關系,“分岔”線代表“多”的關系。以上四個符号共可以組合出16種關系(包含反向)。其中“多對多”的關系一般通過給出一個中間實體來進行分解,是以在許多概念圖中,是看不到實際的“多對多”的關系存在的。