PowerDesginer 初探 很不錯的一片入門blog

來源:互聯網
上載者:User
PowerDesigner使用教程 —— 概念資料模型 一、概念資料模型概述

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

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

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

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

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

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

   實體類型(EntityType)是實體集中每個實體所具有的共同性質的集合,例如“患者”實體類型為:患者{門診號,姓名,性別,年齡,社會安全號碼.............}。實體是實體類型的一個執行個體,在含義明確的情況下,實體、實體類型通常互換使用。實體類型中的每個實體包含唯一標識它的一個或一組屬性,這些屬性稱為實體類型的標識符(Identifier),如“學號”是學生實體類型的標識符,“姓名”、“出生日期”、“信址”共同組成“公民”實體類型的標識符。有些實體類型可以有幾組屬性充當標識符,選定其中一組屬性作為實體類型的主標識符,其他的作為次標識符。

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

四、建立概念資料模型

1)選擇File-->New,彈出對話方塊,選擇CDM模型(即概念資料模型)建立模型。

2)完成概念資料模型的建立。以示,對當前的工作空間進行簡單介紹。(以後再更詳細說明)

3)選擇新增的CDM模型,右擊,在彈出的菜單中選擇“Properties”屬性項,彈出對話方塊。在“General”標籤裡可以輸入所建模型的名稱、代碼、描述、建立者、版本以及預設的圖表等等資訊。在“Notes”標籤裡可以輸入相關描述及說明資訊。當然再有更多的標籤,可以點擊"More>>"按鈕,這裡就不再進行詳細解釋。

五、定義實體

1、建立實體
1)在CDM的圖形視窗中,單擊工具選項版上的Entity工具,再單擊圖形視窗的空白處,在單擊的位置就出現一個實體符號。點擊Pointer工具或右擊滑鼠,釋放Entitiy工具。

2)雙擊剛建立的實體符號,開啟下列表徵圖視窗,在此視窗“General”標籤中可以輸入實體的名稱、代碼、描述等資訊。

Name:是用來在模型中標識一個實體,一般用於模型在介面中的顯示(這個可以通過更改選項設定進行改變)。在一個模型當中,實體的名字不能重複。

Code:在模型轉化時一般作為對象的實體名稱,比如把實體屬性的Code轉化為資料庫中的列名,當然我們現在不必為了這個實體將來叫什麼而費神,一般採取與Name一致即可。

Generate:預設是選擇狀態,如果取消,則在轉化為其他模型時,會忽略這個實體。

2、添加實體屬性
1)在上述視窗的“Attribute”選項標籤上可以添加屬性,如所示。

注意:
資料項目中的“添加屬性”和“重用已有資料項目”這兩項功能與模型中Data Item的Unique code 和Allow reuse選項有關。
P列表示該屬性是否為主標識符;D列表示該屬性是否在圖形視窗中顯示;M列表示該屬性是否為強制的,即該列是否為空白值。

如果一個實體屬性為強制的,那麼, 這個屬性在每條記錄中都必須被賦值,不可為空。

按“Crtl+U”呼出“定製列過濾器”的視窗,可以根據自己的喜好和實際需要選擇那些列出現在視窗中,那些隱藏。使用快速鍵 “Crtl+E”可以允許或者禁止當前過濾器。

2)在所示視窗中,點擊插入屬性按鈕,彈出屬性對話方塊,如所示。

3、定義屬性的檢查約束

1)定義屬性的標準檢查
標準檢查約束是一組確保屬性有效運算式。在實體屬性的特性視窗,開啟的檢查選項卡。

在這個選項卡可以定義屬性的標準檢查約束,視窗中每項的參數的含義,如下

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

2)定義屬性的附加檢查
當Standardchecks 或Rules 不能滿足檢查的要求時,可以在AdditionalChecks選項卡的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中的主鍵或候選索引鍵。每個實體都必須至少有一個標識符。如果實體只有一個標識符,則它為實體的主標識符。如果實體有多個標識符,則其中一個被指定為主標識符,其餘的標識符就是次標識符了。

1、定義主、次標識符
1)選擇某個實體雙擊彈出實體的屬性對話方塊。在Identifiers選項卡上可以進行實體標識符的定義。如所示

2)選擇第一行“主標識符”,點擊屬性按鈕或雙擊第一行“主標識符”,彈出屬性對話方塊,

3)選擇"Attributes"選項卡,再點擊“Add Attributes”工具,快顯視窗,選擇某個屬性作為標識符就行了。

 

七、資料項目

資料項目(Data Item)是資訊儲存的最小單位,它可以附加在實體上作為實體的屬性。
注意:模型中允許存在沒有附加至任何實體上的資料項目。

1、建立資料項目
1)使用“Model”---> Data Items 菜單,在開啟的視窗中顯示已有的資料項目的列表,點擊 “Add a Row”按鈕,建立一個新資料項目,

2)當然您可以繼續設定具體資料項目的Code、DataType、Length等等資訊。這裡就不再詳細說明了。

2、資料項目的唯一性代碼選項和重用選項
使用Tools--->Model Options->Model Settings。在Data Item組框中定義資料項目的唯一性代碼選項(Unique Code)與重用選項(Allow Reuse)。
注意:
如果選擇Unique Code複選框 ,每個資料項目在同一個命名空間有唯一的代碼,而選擇Allow reuse ,一個資料項目可以充當多個實體的屬性。

3、在實體中添加資料項目
1)雙擊一個實體符號,開啟該實體的屬性視窗。
2)單擊Attributes選項卡,開啟如所示視窗

注意:
Add a DataItem 與 Reuse a DataItem的區別在於
Add a DataItem 情況下,選擇一個已經存在的資料項目,系統會自動複製所選擇的資料項目。如果您設定了UniqueCode選項,那系統在複製過程中,新資料項目的Code會自動產生一個唯一的號碼,否則與所選擇的資料項目完全一致。

Reuse a DataItem情況下,只引用不新增,就是引用那些已經存在的資料項目,作為新實體的資料項目。

八、 聯絡

    聯絡(Relationship)是指實體集這間或實體集內部執行個體之間的串連。

    實體之間可以通過聯絡來相互關聯。與實體和實體集對應,聯絡也可以分為聯絡和聯絡集,聯絡集是實體集之間的聯絡,聯絡是實體之間的聯絡,聯絡是具有方向性的。聯絡和聯絡集在含義明確的情況之下均可稱為聯絡。

    按照實體類型中執行個體之間的數量對應關係,通常可將聯絡分為4類,即一對一(ONE TO ONE)聯絡、一對多(ONE TO MANY)聯絡、多對一(MANY TO ONE)聯絡和多對多聯絡(MANY TO MANY)。

1、 建立聯絡
在CDM工具選項板中除了公用的工具外,還包括如所示的其它對象產生工具。

 在圖形視窗中建立兩個實體後,單擊“實體間建立聯絡”工具,單擊一個實體,在按下滑鼠左鍵的同時把游標拖至別一個實體上並釋放滑鼠左鍵,這樣就在兩個實體間建立了聯絡,按右鍵圖形視窗,釋放Relationship工具。如所示

<!--[if !vml]--><!--[endif]-->

在兩個實體間建立了聯絡後,雙擊聯絡線,開啟聯絡特性視窗,。

2、 四種基本的聯絡
即一對一(ONE TO ONE)聯絡、一對多(ONE TO MANY)聯絡、多對一(MANY TO ONE)聯絡和多對多聯絡(MANY TO MANY)。

3、 其他幾類特殊聯絡

除了4種基本的聯絡之外,實體集與實體集之間還存在標定聯絡(Identify Relationship)、非標定聯絡(Non-Identify RelationShip)和遞迴聯絡(Recursive Relationship)。

標定聯絡:
每個實體類型都有自己的標識符,如果兩個實體集之間發生聯絡,其中一個實體類型的標識符進入另一個實體類型並與該實體類型中的標識符共同組成其標識符時,這種聯絡則稱為標定聯絡,也叫依賴聯絡。反之稱為非標定聯絡,也叫非依賴聯絡。
 注意:
在非標定聯絡中,一個實體集中的部分執行個體依賴於另一個執行個體集中的執行個體,在這種依賴聯絡中,每個實體必須至少有一個標識符。而在標定聯絡中,一個實體集中的全部執行個體完全依賴於另個實體集中的執行個體,在這種依賴聯絡中一個實體必須至少有一個標識符,而另一個實體卻可以沒有自己的標識符。沒有標識符的實體用它所依賴的實體的標識符作為自己的標識符。

換句話來理解,在標定聯絡中,一個實體(選課)依賴 一個實體(學生),那麼(學生)實體必須至少有一個標識符,而(選課)實體可以沒有自己的標識符,沒有標標識符的實體可以用實體(學生)的標識符作為自己的標識符。

 遞迴聯絡:
遞迴聯絡是實體集內部執行個體之間的一種聯絡,通常形象地稱為自反聯絡。同一實體類型中不同實體集之間的聯絡也稱為遞迴聯絡。

例如:在“職工”實體集中存在很多的職工,這些職工之間必須存在一種領導與被領導的關係。又如“學生”實體信中的實體包含“班長”子實體集與“普通學生”子實體集,這兩個子實體集之間的聯絡就是一種遞迴聯絡。建立遞迴聯絡時,只需要單擊“實體間建立聯絡”工具從實體的一部分拖至該實體的別一個部分即可。

3、 定義聯絡的特性

雙擊關係(Relationship)的符號,進入關係的屬性頁面,在Detail項目中,我們可以對兩個實體的關係進行詳細的定義,如:

  1. General 項目

    一般最好為關係取一個貼切的名字,本例的業務關係描述如下:一個部門有多個員工,我們使用“Has”作為這個關係的名字。

    同樣的我們也可以描述為:多個員工屬於一個部門,可不可以使用“Belongto”作為關係名字呢?一般不推薦這樣做,在概念圖中有一個約定,關係的名字採用從“1,n”中“1”所在的方向向“n”所在一方進行讀取的語義。本例即“1”在部門一方,從部門一方向僱員一方讀取語義,即:部門有(Has)多個員工。

  2. Detail 項目

假定對於實體部門(Department)和僱員(Employee),具有如下關係:

  • 一個部門可以有多個僱員,新成立的部門也可以暫時沒有任何僱員;
  • 一個僱員必須屬於一個部門,並且同時只能屬於一個部門;

根據以上關係,我們修改屬性頁面,部門-僱員的方向採用預設的0,n,僱員-部門的方向修改為強制限制式(Mandatory),或者從下拉框中選擇“1,1”,如:

最後定義完成的關係(Relationship)在概念圖中表示如下:

註:在PowerDesigner中,關係符號靠近實體端的一個“橫線”代表強制性約束,“空心圓圈”代表無強制限制式,即這一方可以無對象關聯;“非分岔”線代表為“1”的關係,“分岔”線代表“多”的關係。以上四個符號共可以組合出16種關係(包含反向)。其中“多對多”的關係一般通過給出一個中間實體來進行分解,所以在許多概念圖中,是看不到實際的“多對多”的關係存在的。

另外在關係的屬性中還有兩項:Dominant role 和Dependent,可以表示更複雜的關係,會在後面講到。

使用依賴關係(Dependent)

還是使用上面的例子,我們假定這樣的業務描述:僱員享有假期,僱員每次休假,需要記錄僱員休假的起始日與結束日,假期以天為單位,一個僱員和一個開始日唯一確定一個假期。根據這個業務描述,我們知道,對於假期而言,其必須依存於實體“Employee”而存在,即一個休假,必定有一個主體僱員。我們在上一個模型的基礎之上,添加一個實體,名稱是“Holiday”,定義假期的屬性開始日與結束日,這裡並不需要重複定義一個僱員編號,而是替代的,使用依賴關係,來表示實體“Holiday”依賴於實體“Employee”,關係定義如:

 

在實體“Holiday”中,我們需要設定開始日為主鍵標識符,開始日與其依賴實體中的僱員編號一起作為實體“Holiday”的標識符,用來唯一確定一個假期。這種依賴關係在概念圖中表現如下:

 

從途中可以看出,在實體“Holiday”一端多了一個朝外的三角▲箭頭,這個含義就是這個實體“的依賴於三角箭頭所指的另外一個實體,在轉化出來的物理模型當中,實體“Employee”的empNo,在Holiday實體中不僅會作為一個外鍵,還同時會作為主鍵出現(與startData一起作為複合主鍵)。
使用Dominant role

當兩個實體之間的關係是1..1時(儘管這種關係比較少見,常見於物件導向的設計方法當中,依賴實體中的主鍵通常與外健重合),你需要明確指定這兩個實體,哪一個是父實體,哪一個是依賴實體,否則,系統在由概念性模型轉化為物理模型時,將不能確定需要在哪一端產生外鍵,這時就需要用到“Dominantrole”選項,這個選項只有在1..1的關係中才允許進行設定。我們假定這樣的業務描述,企業中的部分僱員擁有一個系統帳號,並且是唯一的一個帳號,這些僱員需要儲存一些額外的資訊,比如帳號名稱、密碼等等。我們添加了一個新的實體“User”,其與僱員之間為1..1的關係,由於一個使用者帳號必定屬於一個僱員,而一個僱員則可能沒有使用者帳號,所以我們定義實體“Employee”支配實體“User”。同時,由於“User”依賴於“Employee”而存在,所以再定義一個由前者到後者的依賴關係,如:

 

Dominant role 選項中,箭頭所指的實體為被支配的實體,即作為依賴實體。在模型圖中,支配實體的一方會出現一個用圓括弧括起來的大寫字母“D”。

 

轉化出來的物理模型中,表User中,empNo作為單獨的主鍵,同時也是引用Employee表的一個外鍵。

處理多對多(n..n)的關係

在概念性模型中,一般很少看見兩個實體之間是直接的n..n 的關係,一般這種情況下我們會增加一個中間實體,在Power Designer中,提供了一個專門的符號來對應,叫做“Association”。請考慮以下的情形:

企業中擁有帳號的僱員在系統中具有不同的操作許可權,這通過使用者角色來進行管理,許可權已經分配給了多個不同的角色,一個使用者帳號至少屬於一個角色,並且可能會同時屬於多個角色,一個角色可以包含0個或多個使用者帳號。根據以上描述,我們添加一個實體“Role”,它與實體“User”之間是n..n的關係,為了表達這種關係,我們增加一個“Association”並分別使用“Association Link”與其他兩個實體建立關係,表示如下:

使用一個普通的實體,合理定義關係,並選擇“Dependent”選項,是可以替代“Association”的,但使用 “Association”更方便、直觀,使模型更容易理解,並可以減少因不謹慎而可能導致的錯誤。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.