1. 程式人生 > >PowerDesigner教程系列

PowerDesigner教程系列

complete nsh 數據結構 del 彈出 特性 minimum pos all

PowerDesigner教程系列(一)概念數據模型


目標:
本文主要介紹PowerDesigner中概念數據模型 CDM的基本概念。

一、概念數據模型概述
數據模型是現實世界中數據特征的抽象。數據模型應該滿足三個方面的要求:
1)能夠比較真實地模擬現實世界
2)容易為人所理解
3)便於計算機實現

概念數據模型也稱信息模型,它以實體-聯系(Entity-RelationShip,簡稱E-R)理論為基礎,並對這一理論進行了擴充。它從用戶的觀點出發對信息進行建模,主要用於數據庫的概念級設計。

通常人們先將現實世界抽象為概念世界,然後再將概念世界轉為機器世界。換句話說,就是先將現實世界中的客觀對象抽象為實體(Entity)和聯系(Relationship),它並不依賴於具體的計算機系統或某個DBMS系統,這種模型就是我們所說的CDM;然後再將CDM轉換為計算機上某個DBMS所支持的數據模型,這樣的模型就是物理數據模型,即PDM。

CDM是一組嚴格定義的模型元素的集合,這些模型元素精確地描述了系統的靜態特性、動態特性以及完整性約束條件等,其中包括了數據結構、數據操作和完整性約束三部分。
1)數據結構表達為實體和屬性;
2)數據操作表達為實體中的記錄的插入、刪除、修改、查詢等操作;
3)完整性約束表達為數據的自身完整性約束(如數據類型、檢查、規則等)和數據間的參照完整性約束(如聯系、繼承聯系等);


二、實體、屬性及標識符的定義


實體(Entity),也稱為實例,對應現實世界中可區別於其他對象的“事件”或“事物”。例如,學校中的每個學生,醫院中的每個手術。
每個實體都有用來描述實體特征的一組性質,稱之為屬性,一個實體由若幹個屬性來描述。如學生實體可由學號、姓名、性別、出生年月、所在系別、入學年份等屬性組成。

實體集(Entity Set)是具體相同類型及相同性質實體的集合。例如學校所有學生的集合可定義為“學生”實體集,“學生”實體集中的每個實體均具有學號、姓名、性別、出生年月、所在系別、入學年份等性質。

實體類型(Entity Type)是實體集中每個實體所具有的共同性質的集合,例如“患者”實體類型為:患者{門診號,姓名,性別,年齡,身份證號.............}。實體是實體類型的一個實例,在含義明確的情況下,實體、實體類型通常互換使用。

實體類型中的每個實體包含唯一標識它的一個或一組屬性,這些屬性稱為實體類型的標識符(Identifier),如“學號”是學生實體類型的標識符,“姓名”、“出生日期”、“信址”共同組成“公民”實體類型的標識符。

有些實體類型可以有幾組屬性充當標識符,選定其中一組屬性作為實體類型的主標識符,其他的作為次標識符。

三、實體、屬性及標識符的表達


技術分享圖片

PowerDesigner教程系列(二)概念數據模型

目標: 本文主要介紹PowerDesigner概念數據模型以及實體、屬性創建。
一、新建概念數據模型 1)選擇File-->New,彈出如圖所示對話框,選擇CDM模型(即概念數據模型)建立模型。 技術分享圖片
2)完成概念數據模型的創建。以下圖示,對當前的工作空間進行簡單介紹。(以後再更詳細說明) 技術分享圖片
3)選擇新增的CDM模型,右擊,在彈出的菜單中選擇“Properties”屬性項,彈出如圖所示對話框。在“General”標簽裏可以輸入所建模型的名稱、代碼、描述、創建者、版本以及默認的圖表等等信息。在“Notes”標簽裏可以輸入相關描述及說明信息。當然再有更多的標簽,可以點擊 "More>>"按鈕,這裏就不再進行詳細解釋。 技術分享圖片


二、創建新實體 1)在CDM的圖形窗口中,單擊工具選項版上的Entity工具,再單擊圖形窗口的空白處,在單擊的位置就出現一個實體符號。點擊Pointer工具或右擊鼠標,釋放Entitiy工具。如圖所示 技術分享圖片

2)雙擊剛創建的實體符號,打開下列圖標窗口,在此窗口“General”標簽中可以輸入實體的名稱、代碼、描述等信息。 技術分享圖片

技術分享圖片

三、添加實體屬性 1)在上述窗口的“Attribute”選項標簽上可以添加屬性,如下圖所示。
註意: 數據項中的“添加屬性”和“重用已有數據項”這兩項功能與模型中Data Item的Unique code 和Allow reuse選項有關。 P列表示該屬性是否為主標識符;D列表示該屬性是否在圖形窗口中顯示;M列表示該屬性是否為強制的,即該列是否為空值。
如果一個實體屬性為強制的,那麽, 這個屬性在每條記錄中都必須被賦值,不能為空。

2)在上圖所示窗口中,點擊插入屬性按鈕,彈出屬性對話框,如下圖所示。

技術分享圖片

註意:這裏涉及到域的概念,即一種標準的數據結構,它可應用至數據項或實體的屬性上。在以下的教程中將另立章節詳細說明。

PowerDesigner教程系列(三)概念數據模型

目標: 本文主要介紹屬性的標準檢查約束、如何定義屬性的附加檢查。
一、定義屬性的標準檢查約束 標準檢查約束是一組確保屬性有效的表達式。在實體屬性的特性窗口,打開如圖所示的檢查選項卡。 技術分享圖片
在這個選項卡可以定義屬性的標準檢查約束,窗口中每項的參數的含義,如下

參數 說明
Minimum 屬性可接受的最小數
Maximum 屬性可接受的最大數
Default 屬性不賦值時,系統提供的默認值
Unit 單位,如公裏、噸、元
Format 屬性的數據顯示格式
Lowercase 屬性的賦值全部變為小寫字母
Uppercase 屬性的賦值全部變為大寫字母
Cannot modify 該屬性一旦賦值不能再修改
List Of Values 屬性賦值列表,除列表中的值,不能有其他的值
Label 屬性列表值的標簽


二、定義屬性的附加檢查
當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選項卡中定義的有效性規則表達式

PowerDesigner教程系列(四)概念數據模型

目標: 本文主要介紹如何定義實體的主、次標識符。
一、標識符 標識符是實體中一個或多個屬性的集合,可用來唯一標識實體中的一個實例。要強調的是,CDM中的標識符等價於PDM中的主鍵或候選鍵。 每個實體都必須至少有一個標識符。如果實體只有一個標識符,則它為實體的主標識符。如果實體有多個標識符,則其中一個被指定為主標識符,其余的標識符就是次標識符了。
二、如果定義主、次標識符 1)選擇某個實體雙擊彈出實體的屬性對話框。在Identifiers選項卡上可以進行實體標識符的定義。如下圖所示
技術分享圖片
2)選擇第一行“主標識符”,點擊屬性按鈕或雙擊第一行“主標識符”,彈出屬性對話框,如圖所示 技術分享圖片

3)選擇"Attributes"選項卡,再點擊“Add Attributes”工具,彈出如圖所示窗口,選擇某個屬性作為標識符就行了。 技術分享圖片

PowerDesigner教程系列(五)概念數據模型


目標: 本文主要介紹數據項、新增數據項、數據項的唯一性代碼選項和重用選項等。
一、數據項 數據項(Data Item)是信息存儲的最小單位,它可以附加在實體上作為實體的屬性。 註意:模型中允許存在沒有附加至任何實體上的數據項。
二、新建數據項 1)使用“Model”---> Data Items 菜單,在打開的窗口中顯示已有的數據項的列表,點擊 “Add a Row”按鈕,創建一個新數據項,如圖所示 技術分享圖片
2)當然您可以繼續設置具體數據項的Code、DataType、Length等等信息。這裏就不再詳細說明了。
三、數據項的唯一性代碼選項和重用選項 使用Tools--->Model Options->Model Settings。在Data Item組框中定義數據項的唯一性代碼選項(Unique Code)與重用選項(Allow Reuse)。 註意: 如果選擇Unique Code復選框 ,每個數據項在同一個命名空間有唯一的代碼,而選擇Allow reuse ,一個數據項可以充當多個實體的屬性。 技術分享圖片
四、在實體中添加數據項 1)雙擊一個實體符號,打開該實體的屬性窗口。 2)單擊Attributes選項卡,打開如下圖所示窗口 技術分享圖片
註意: Add a DataItem 與 Reuse a DataItem的區別在於 Add a DataItem 情況下,選擇一個已經存在的數據項,系統會自動復制所選擇的數據項。如果您設置了UniqueCode選項,那系統在復制過程中,新數據項的Code會自動生成一個唯一的號碼,否則與所選擇的數據項完全一致。
Reuse a DataItem情況下,只引用不新增,就是引用那些已經存在的數據項,作為新實體的數據項。

PowerDesigner教程系列(六)概念數據模型


目標:本文主要介紹聯系的定義及使用。

一、 聯系 聯系(Relationship)是指實體集這間或實體集內部實例之間的連接。
實體之間可以通過聯系來相互關聯。與實體和實體集對應,聯系也可以分為聯系和聯系集,聯系集是實體集之間的聯系,聯系是實體之間的聯系,聯系是具有方向性的。聯系和聯系集在含義明確的情況之下均可稱為聯系。
按照實體類型中實例之間的數量對應關系,通常可將聯系分為4類,即一對一(ONE TO ONE)聯系、一對多(ONE TO MANY)聯系、多對一(MANY TO ONE)聯系和多對多聯系(MANY TO MANY)。

技術分享圖片

二、 建立聯系 在CDM工具選項板中除了公共的工具外,還包括如下圖所示的其它對象產生工具。 在圖形窗口中創建兩個實體後,單擊“實體間建立聯系”工具,單擊一個實體,在按下鼠標左鍵的同時把光標拖至別一個實體上並釋放鼠標左鍵,這樣就在兩個實體間創建了聯系,右鍵單擊圖形窗口,釋放Relationship工具。如下圖所示 技術分享圖片
三、 四種基本的聯系 即一對一(ONE TO ONE)聯系、一對多(ONE TO MANY)聯系、多對一(MANY TO ONE)聯系和多對多聯系(MANY TO MANY)。如圖所示 技術分享圖片 四、 其他幾類特殊聯系
除了4種基本的聯系之外,實體集與實體集之間還存在標定聯系(Identify Relationship)、非標定聯系(Non-Identify RelationShip)和遞歸聯系(Recursive Relationship)。
標定聯系: 每個實體類型都有自己的標識符,如果兩個實體集之間發生聯系,其中一個實體類型的標識符進入另一個實體類型並與該實體類型中的標識符共同組成其標識符時,這種聯系則稱為標定聯系,也叫依賴聯系。反之稱為非標定聯系,也叫非依賴聯系。 註意: 在非標定聯系中,一個實體集中的部分實例依賴於另一個實例集中的實例,在這種依賴聯系中,每個實體必須至少有一個標識符。而在標定聯系中,一個實體集中的全部實例完全依賴於另個實體集中的實例,在這種依賴聯系中一個實體必須至少有一個標識符,而另一個實體卻可以沒有自己的標識符。沒有標識符的實體用它所依賴的實體的標識符作為自己的標識符。
換句話來理解,在標定聯系中,一個實體(選課)依賴 一個實體(學生),那麽(學生)實體必須至少有一個標識符,而(選課)實體可以沒有自己的標識符,沒有標標識符的實體可以用實體(學生)的標識符作為自己的標識符。

技術分享圖片

遞歸聯系: 遞歸聯系是實體集內部實例之間的一種聯系,通常形象地稱為自反聯系。同一實體類型中不同實體集之間的聯系也稱為遞歸聯系。
例如:在“職工”實體集中存在很多的職工,這些職工之間必須存在一種領導與被領導的關系。又如“學生”實體信中的實體包含“班長”子實體集與“普通學生”子實體集,這兩個子實體集之間的聯系就是一種遞歸聯系。創建遞歸聯系時,只需要單擊“實體間建立聯系”工具從實體的一部分拖至該實體的別一個部分即可。如圖

技術分享圖片
五、 定義聯系的特性
在兩個實體間建立了聯系後,雙擊聯系線,打開聯系特性窗口,如圖所示。

技術分享圖片
六、 定義聯系的角色名 在聯系的兩個方向上各自包含有一個分組框,其中的參數只對這個方向起作用,Role Name為角色名,描述該方向聯系的作用,一般用一個動詞或動賓組表。 如:“學生 to 課目 ” 組框中應該填寫“擁有”,而在“課目To 學生”組框中填寫“屬於”。(在此只是舉例說明,可能有些用詞不太合理)。

七、 定義聯系的強制性 Mandatory 表洋這個方向聯系的強制關系。選中這個復選框,則在聯系線上產生一個聯系線垂直的豎線。不選擇這個復選框則表示聯系這個方向上是可選的,在聯系線上產生一個小圓圈。
八、 有關聯系的基數 聯系具有方向性,每個方向上都有一個基數。
舉例, “系”與“學生”兩個實體之間的聯系是一對多聯系,換句話說“學生”和“系”之間的聯系是多對一聯系。而且一個學生必須屬於一個系,並且只能屬於一個系,不能屬於零個系,所以從“學生”實體至“系”實體的基數為“1,1”,從聯系的另一方向考慮,一個系可以擁有多個學生,也可以沒有任何學生,即零個學生,所以該方向聯系的基數就為“0,n”,如圖所示 技術分享圖片

PowerDesigner教程系列(七)概念數據模型

目標:本文主要介紹繼承聯系定義及使用。

一、定義

實體之間除了我們之前所講的聯系外,還存在分類關系、繼承關系。在CDM中我們統稱分類關系、繼承關系為繼承聯系。

通過特殊化或概化方法產生的實體類型之間的聯系稱為繼承聯系。

特殊化:在實體集內部分組並把這些分組存放在不同的實體類型中的過程稱為實體集的特殊化。

概化:從多個實體集的公共屬性中抽象出一個公共實體類型的過程為實體集的概化。

繼承聯系的一端是具有普遍性的實體集,為父實體集,另一端連接的是具體特殊的一個或多個實體集,為子實體集。

例如:“銀行賬戶”是“借記卡賬戶”與“信用卡賬戶”的父實體,相反“借記卡賬戶”與“信用卡賬戶”是“銀行賬戶”的子實體。

另外在繼承聯系中,還可以分為互斥性繼承聯系和非互斥性繼承聯系。

互斥性繼承聯系:父實體中的一個實例只能在一個子實體中。例如:“帳戶”主實體下的“個人賬戶”與“公司賬戶”兩個子實體之間的聯系是互斥的。

非互斥性繼承聯系:父實體中的一個實例可以在多個子實體中。例如:“職工”父實體下的“幹部”與“教師”子實體之間屬於非互斥繼承聯系,教師有可能也是幹部,幹部有可能也是教師。

這裏我就不再圖示了,望大夥要認真理解概念。

二、創建繼承聯系

註意: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

Mutually exclusive children表示父實體中的一條記錄只能在一個子實體上出現,子實體之間存在互斥的關系。

Complete表示父實體的所有實例必須是子實體之一,例如:“人”實體有“男人”和“女人”兩個子實體,每個“人”實體的實例可以是“男人”或“女人”。

四、定義繼承聯系的生成模式

技術分享圖片

圖示 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

PowerDesigner 教程系列(八)概念數據模型

目標:本文主要介紹域的概念以及使用。

一、概念

域:實際上就是一個取值範圍,也可擴展為一個數據類型。域可以定義檢查約束、取值範圍、最大值、最小值、默認值等。

域是通過用戶自定義類型實現的,定義一個域的後,可以實多個實體的屬性共享,這也模型設計中非常重要。

例如:“服務生”、“客戶”、“操作員”三個實體中都有“姓名”屬性,我們就可以定義一個“姓名”域,分別附加到三個實體中,修改域的同時,使用域的實體的相關屬性也會隨之更新。所圖所示

技術分享圖片

二、域的定義

菜單Model->Domains,在彈出窗口“List of Domains”中,增加新的域。如圖所示

技術分享圖片

三、附加域到實體屬性

打開實體的屬性選項卡,如圖所示,從Domain下拉列表中選擇一個域

技術分享圖片

註:設置域與數據項的分離關系,Tools->Model Options ->Model,設置“Domain/Attribute”,Enforce non-divergence 下的Data type(數據類型、長度、精度)、Check(檢查約束)、Rules(業務規則)、Mandatory等。如果都不選,則表示設置域與數據項是可分離的。默認為Data type 不可分離,可自行設置。如下圖所示

技術分享圖片

四、附加域到數據項上

菜單Model->Data Items,在彈出窗口“List Data Items”中,添加數據項以及附加域,所圖所示

技術分享圖片

PowerDesigner教程系列