目標:
本文主要介紹PowerDesigner中概念數據模型 CDM的基本概念。
1、概念數據模型概述
數據模型是現實世界中數據特徵的抽象。數據模型應該知足三個方面的要求:
1)可以比較真實地模擬現實世界
2)容易爲人所理解
3)便於計算機實現
概念數據模型也稱信息模型,它以實體-聯繫(Entity-RelationShip,簡稱E-R)理論爲基礎,並對這一理論進行了擴充。它從用戶的觀點出發對信息進行建模,主要用於數據庫的概念級設計。
一般人們先將現實世界抽象爲概念世界,而後再將概念世界轉爲機器世界。換句話說,就是先將現實世界中的客觀對象抽象爲實體(Entity)和聯繫(Relationship),它並不依賴於具體的計算機系統或某個DBMS系統,這種模型就是咱們所說的CDM;而後再將CDM轉換爲計算機上某個DBMS所支持的數據模型,這樣的模型就是物理數據模型,即PDM。
CDM是一組嚴格定義的模型元素的集合,這些模型元素精確地描述了系統的靜態特性、動態特性以及完整性約束條件等,其中包括了數據結構、數據操做和完整性約束三部分。
1)數據結構表達爲實體和屬性;
2)數據操做表達爲實體中的記錄的插入、刪除、修改、查詢等操做;
3)完整性約束表達爲數據的自身完整性約束(如數據類型、檢查、規則等)和數據間的參照完整性約束(如聯繫、繼承聯繫等);
2、實體、屬性及標識符的定義
實體(Entity),也稱爲實例,對應現實世界中可區別於其餘對象的「事件」或「事物」。例如,學校中的每一個學生,醫院中的每一個手術。
每一個實體都有用來描述實體特徵的一組性質,稱之爲屬性,一個實體由若干個屬性來描述。如學生實體可由學號、姓名、性別、出生年月、所在系別、入學年份等屬性組成。
實體集(Entity Set)是具體相同類型及相同性質實體的集合。例如學校全部學生的集合可定義爲「學生」實體集,「學生」實體集中的每一個實體均具備學號、姓名、性別、出生年月、所在系別、入學年份等性質。
實體類型(Entity Type)是實體集中每一個實體所具備的共同性質的集合,例如「患者」實體類型爲:患者{門診號,姓名,性別,年齡,身份證號.............}。實體是實體類型的一個實例,在含義明確的狀況下,實體、實體類型一般互換使用。
實體類型中的每一個實體包含惟一標識它的一個或一組屬性,這些屬性稱爲實體類型的標識符(Identifier),如「學號」是學生實體類型的標識符,「姓名」、「出生日期」、「信址」共同組成「公民」實體類型的標識符。
有些實體類型能夠有幾組屬性充當標識符,選定其中一組屬性做爲實體類型的主標識符,其餘的做爲次標識符。
3、實體、屬性及標識符的表達
html
目標: 本文主要介紹PowerDesigner概念數據模型以及實體、屬性建立。
1、新建概念數據模型 1)選擇File-->New,彈出如圖所示對話框,選擇CDM模型(即概念數據模型)創建模型。
2)完成概念數據模型的建立。如下圖示,對當前的工做空間進行簡單介紹。(之後再更詳細說明)
3)選擇新增的CDM模型,右擊,在彈出的菜單中選擇「Properties」屬性項,彈出如圖所示對話框。在「General」標籤裏能夠輸入所建模型的名稱、代碼、描述、建立者、版本以及默認的圖表等等信息。在「Notes」標籤裏能夠輸入相關描述及說明信息。固然再有更多的標籤,能夠點擊 "More>>"按鈕,這裏就再也不進行詳細解釋。
2、建立新實體 1)在CDM的圖形窗口中,單擊工具選項版上的Entity工具,再單擊圖形窗口的空白處,在單擊的位置就出現一個實體符號。點擊Pointer工具或右擊鼠標,釋放Entitiy工具。如圖所示 2)雙擊剛建立的實體符號,打開下列圖標窗口,在此窗口「General」標籤中能夠輸入實體的名稱、代碼、描述等信息。
3、添加實體屬性 1)在上述窗口的「Attribute」選項標籤上能夠添加屬性,以下圖所示。
注意: 數據項中的「添加屬性」和「重用已有數據項」這兩項功能與模型中Data Item的Unique code 和Allow reuse選項有關。 P列表示該屬性是否爲主標識符;D列表示該屬性是否在圖形窗口中顯示;M列表示該屬性是否爲強制的,即該列是否爲空值。
若是一個實體屬性爲強制的,那麼, 這個屬性在每條記錄中都必須被賦值,不能爲空。數據庫
2)在上圖所示窗口中,點擊插入屬性按鈕,彈出屬性對話框,以下圖所示。 數據結構
注意:這裏涉及到域的概念,即一種標準的數據結構,它可應用至數據項或實體的屬性上。在如下的教程中將另立章節詳細說明。工具
目標: 本文主要介紹屬性的標準檢查約束、如何定義屬性的附加檢查。
1、定義屬性的標準檢查約束 標準檢查約束是一組確保屬性有效的表達式。在實體屬性的特性窗口,打開如圖所示的檢查選項卡。
在這個選項卡能夠定義屬性的標準檢查約束,窗口中每項的參數的含義,以下 post
參數 | 說明 |
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選項卡中定義的有效性規則表達式
spa
目標: 本文主要介紹如何定義實體的主、次標識符。
1、標識符 標識符是實體中一個或多個屬性的集合,可用來惟一標識實體中的一個實例。要強調的是,CDM中的標識符等價於PDM中的主鍵或候選鍵。 每一個實體都必須至少有一個標識符。若是實體只有一個標識符,則它爲實體的主標識符。若是實體有多個標識符,則其中一個被指定爲主標識符,其他的標識符就是次標識符了。
2、若是定義主、次標識符 1)選擇某個實體雙擊彈出實體的屬性對話框。在Identifiers選項卡上能夠進行實體標識符的定義。以下圖所示
2)選擇第一行「主標識符」,點擊屬性按鈕或雙擊第一行「主標識符」,彈出屬性對話框,如圖所示 設計
3)選擇"Attributes"選項卡,再點擊「Add Attributes」工具,彈出如圖所示窗口,選擇某個屬性做爲標識符就好了。 3d
目標: 本文主要介紹數據項、新增數據項、數據項的惟一性代碼選項和重用選項等。
1、數據項 數據項(Data Item)是信息存儲的最小單位,它能夠附加在實體上做爲實體的屬性。 注意:模型中容許存在沒有附加至任何實體上的數據項。
2、新建數據項 1)使用「Model」---> Data Items 菜單,在打開的窗口中顯示已有的數據項的列表,點擊 「Add a Row」按鈕,建立一個新數據項,如圖所示
2)固然您能夠繼續設置具體數據項的Code、DataType、Length等等信息。這裏就再也不詳細說明了。
3、數據項的惟一性代碼選項和重用選項 使用Tools--->Model Options->Model Settings。在Data Item組框中定義數據項的惟一性代碼選項(Unique Code)與重用選項(Allow Reuse)。 注意: 若是選擇Unique Code複選框 ,每一個數據項在同一個命名空間有惟一的代碼,而選擇Allow reuse ,一個數據項能夠充當多個實體的屬性。
4、在實體中添加數據項 1)雙擊一個實體符號,打開該實體的屬性窗口。 2)單擊Attributes選項卡,打開以下圖所示窗口
注意: Add a DataItem 與 Reuse a DataItem的區別在於 Add a DataItem 狀況下,選擇一個已經存在的數據項,系統會自動複製所選擇的數據項。若是您設置了UniqueCode選項,那系統在複製過程當中,新數據項的Code會自動生成一個惟一的號碼,不然與所選擇的數據項徹底一致。
Reuse a DataItem狀況下,只引用不新增,就是引用那些已經存在的數據項,做爲新實體的數據項。code
目標:本文主要介紹聯繫的定義及使用。orm
1、 聯繫 聯繫(Relationship)是指實體集這間或實體集內部實例之間的鏈接。
實體之間能夠經過聯繫來相互關聯。與實體和實體集對應,聯繫也能夠分爲聯繫和聯繫集,聯繫集是實體集之間的聯繫,聯繫是實體之間的聯繫,聯繫是具備方向性的。聯繫和聯繫集在含義明確的狀況之下都可稱爲聯繫。
按照實體類型中實例之間的數量對應關係,一般可將聯繫分爲4類,即一對一(ONE TO ONE)聯繫、一對多(ONE TO MANY)聯繫、多對一(MANY TO ONE)聯繫和多對多聯繫(MANY TO MANY)。
2、 創建聯繫 在CDM工具選項板中除了公共的工具外,還包括以下圖所示的其它對象產生工具。 在圖形窗口中建立兩個實體後,單擊「實體間創建聯繫」工具,單擊一個實體,在按下鼠標左鍵的同時把光標拖至別一個實體上並釋放鼠標左鍵,這樣就在兩個實體間建立了聯繫,右鍵單擊圖形窗口,釋放Relationship工具。以下圖所示
3、 四種基本的聯繫 即一對一(ONE TO ONE)聯繫、一對多(ONE TO MANY)聯繫、多對一(MANY TO ONE)聯繫和多對多聯繫(MANY TO MANY)。如圖所示 4、 其餘幾類特殊聯繫
除了4種基本的聯繫以外,實體集與實體集之間還存在標定聯繫(Identify Relationship)、非標定聯繫(Non-Identify RelationShip)和遞歸聯繫(Recursive Relationship)。
標定聯繫: 每一個實體類型都有本身的標識符,若是兩個實體集之間發生聯繫,其中一個實體類型的標識符進入另外一個實體類型並與該實體類型中的標識符共同組成其標識符時,這種聯繫則稱爲標定聯繫,也叫依賴聯繫。反之稱爲非標定聯繫,也叫非依賴聯繫。 注意: 在非標定聯繫中,一個實體集中的部分實例依賴於另外一個實例集中的實例,在這種依賴聯繫中,每一個實體必須至少有一個標識符。而在標定聯繫中,一個實體集中的所有實例徹底依賴於另個實體集中的實例,在這種依賴聯繫中一個實體必須至少有一個標識符,而另外一個實體卻能夠沒有本身的標識符。沒有標識符的實體用它所依賴的實體的標識符做爲本身的標識符。
換句話來理解,在標定聯繫中,一個實體(選課)依賴 一個實體(學生),那麼(學生)實體必須至少有一個標識符,而(選課)實體能夠沒有本身的標識符,沒有標標識符的實體能夠用實體(學生)的標識符做爲本身的標識符。
遞歸聯繫: 遞歸聯繫是實體集內部實例之間的一種聯繫,一般形象地稱爲自反聯繫。同一實體類型中不一樣實體集之間的聯繫也稱爲遞歸聯繫。
例如:在「職工」實體集中存在不少的職工,這些職工之間必須存在一種領導與被領導的關係。又如「學生」實體信中的實體包含「班長」子實體集與「普通學生」子實體集,這兩個子實體集之間的聯繫就是一種遞歸聯繫。建立遞歸聯繫時,只須要單擊「實體間創建聯繫」工具從實體的一部分拖至該實體的別一個部分便可。如圖
5、 定義聯繫的特性
在兩個實體間創建了聯繫後,雙擊聯繫線,打開聯繫特性窗口,如圖所示。
6、 定義聯繫的角色名 在聯繫的兩個方向上各自包含有一個分組框,其中的參數只對這個方向起做用,Role Name爲角色名,描述該方向聯繫的做用,通常用一個動詞或動賓組表。 如:「學生 to 課目 」 組框中應該填寫「擁有」,而在「課目To 學生」組框中填寫「屬於」。(在此只是舉例說明,可能有些用詞不太合理)。
7、 定義聯繫的強制性 Mandatory 表洋這個方向聯繫的強制關係。選中這個複選框,則在聯繫線上產生一個聯繫線垂直的豎線。不選擇這個複選框則表示聯繫這個方向上是可選的,在聯繫線上產生一個小圓圈。
8、 有關聯繫的基數 聯繫具備方向性,每一個方向上都有一個基數。
舉例, 「系」與「學生」兩個實體之間的聯繫是一對多聯繫,換句話說「學生」和「系」之間的聯繫是多對一聯繫。並且一個學生必須屬於一個系,而且只能屬於一個系,不能屬於零個系,因此從「學生」實體至「系」實體的基數爲「1,1」,從聯繫的另外一方向考慮,一個系能夠擁有多個學生,也能夠沒有任何學生,即零個學生,因此該方向聯繫的基數就爲「0,n」,如圖所示
目標:本文主要介紹繼承聯繫定義及使用。
1、定義
實體之間除了咱們以前所講的聯繫外,還存在分類關係、繼承關係。在CDM中咱們統稱分類關係、繼承關係爲繼承聯繫。
經過特殊化或概化方法產生的實體類型之間的聯繫稱爲繼承聯繫。
特殊化:在實體集內部分組並把這些分組存放在不一樣的實體類型中的過程稱爲實體集的特殊化。
概化:從多個實體集的公共屬性中抽象出一個公共實體類型的過程爲實體集的概化。
繼承聯繫的一端是具備廣泛性的實體集,爲父實體集,另外一端鏈接的是具體特殊的一個或多個實體集,爲子實體集。
例如:「銀行帳戶」是「借記卡帳戶」與「信用卡帳戶」的父實體,相反「借記卡帳戶」與「信用卡帳戶」是「銀行帳戶」的子實體。
另外在繼承聯繫中,還能夠分爲互斥性繼承聯繫和非互斥性繼承聯繫。
互斥性繼承聯繫:父實體中的一個實例只能在一個子實體中。例如:「賬戶」主實體下的「我的帳戶」與「公司帳戶」兩個子實體之間的聯繫是互斥的。
非互斥性繼承聯繫:父實體中的一個實例能夠在多個子實體中。例如:「職工」父實體下的「幹部」與「教師」子實體之間屬於非互斥繼承聯繫,教師有可能也是幹部,幹部有可能也是教師。
這裏我就再也不圖示了,望大夥要認真理解概念。
2、建立繼承聯繫
注意:PowerDesigner 15 的版本,工具欄上的Inheritance圖標默認是禁用的。打開方法以下:
Tools->Model Options->Model Settings->Notation 設爲「E/R+Merise」就好了。
圖示 1
圖示 2
在CDM中建立兩個實體,A與B,單擊工具選項板上的繼承工具鏈接A與B實體。圖示1
A是父實體,B是子實體。再建立實體C以一樣的方法鏈接到C實體上。如圖2所示,表示B、C與A之間存在繼承聯繫。
3、定義互斥性繼承聯繫
雙擊繼承聯繫的半圓符號,打開繼承聯繫的屬性窗口。如圖3所示
圖示 3
Mutually exclusive children表示父實體中的一條記錄只能在一個子實體上出現,子實體之間存在互斥的關係。
Complete表示父實體的全部實例必須是子實體之一,例如:「人」實體有「男人」和「女人」兩個子實體,每一個「人」實體的實例能夠是「男人」或「女人」。
4、定義繼承聯繫的生成模式
圖示 4
定義由CDM生成PDM或者生成OOM中的class圖的生成模式。
說明:
Generate parent:表示繼承聯繫中的父實體會生成PDM中的表或Class圖中的類。
Generate children:
1) 選擇Inherit all attributes表示繼承聯繫中的子實體生成PDM中的表或Class圖中的類,而且繼承父實體中的全部實體屬性
2) 選擇Inherit only primary attributes,表示繼承聯繫中子實體生成PDM中的表或Class圖中的類,但只繼承父實體中的標識符屬性。
5、繼承聯繫狀態表
圖示 5
PowerDesigner 教程系列(八)概念數據模型
目標:本文主要介紹域的概念以及使用。
1、概念
域:實際上就是一個取值範圍,也可擴展爲一個數據類型。域能夠定義檢查約束、取值範圍、最大值、最小值、默認值等。
域是經過用戶自定義類型實現的,定義一個域的後,能夠實多個實體的屬性共享,這也模型設計中很是重要。
例如:「服務生」、「客戶」、「操做員」三個實體中都有「姓名」屬性,咱們就能夠定義一個「姓名」域,分別附加到三個實體中,修改域的同時,使用域的實體的相關屬性也會隨之更新。所圖所示
2、域的定義
菜單Model->Domains,在彈出窗口「List of Domains」中,增長新的域。如圖所示
3、附加域到實體屬性
打開實體的屬性選項卡,如圖所示,從Domain下拉列表中選擇一個域
注:設置域與數據項的分離關係,Tools->Model Options ->Model,設置「Domain/Attribute」,Enforce non-divergence 下的Data type(數據類型、長度、精度)、Check(檢查約束)、Rules(業務規則)、Mandatory等。若是都不選,則表示設置域與數據項是可分離的。默認爲Data type 不可分離,可自行設置。以下圖所示
4、附加域到數據項上
菜單Model->Data Items,在彈出窗口「List Data Items」中,添加數據項以及附加域,所圖所示