共計 8303 個字符,預計需要花費 21 分鐘才能閱讀完成。
這篇文章主要講解了“怎么用 powerdesigner 畫 ER 圖”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“怎么用 powerdesigner 畫 ER 圖”吧!
powerdesigner 畫 ER 圖
ER 圖 即為 CDM 圖 – Conceptual Data Modal
CDM 可以轉(zhuǎn)換成 PDM、OOM、LDM 等圖,具體請詳查
一般,CDM 圖示在概要設(shè)計階段創(chuàng)建,PDM 圖示根據(jù) CDM 圖的基礎(chǔ)上產(chǎn)生的。
一、概念數(shù)據(jù)模型概述
數(shù)據(jù)模型是現(xiàn)實世界中數(shù)據(jù)特征的抽象。數(shù)據(jù)模型應(yīng)該滿足三個方面的要求:
1)能夠比較真實地模擬現(xiàn)實世界
2)容易為人所理解
3)便于計算機實現(xiàn)
概念數(shù)據(jù)模型也稱信息模型,它以實體-聯(lián)系 (Entity-RelationShip, 簡稱 E -R) 理論為基礎(chǔ),并對這一理論進行了擴充。它從用戶的觀點出發(fā)對信息進行建模,主要用于數(shù)據(jù)庫的概念級設(shè)計。
通常人們先將現(xiàn)實世界抽象為概念世界,然后再將概念世界轉(zhuǎn)為機器世界。換句話說,就是先將現(xiàn)實世界中的客觀對象抽象為實體 (Entity) 和聯(lián)系(Relationship), 它并不依賴于具體的計算機系統(tǒng)或某個 DBMS 系統(tǒng),這種模型就是我們所說的 CDM; 然后再將 CDM 轉(zhuǎn)換為計算機上某個 DBMS 所支持的數(shù)據(jù)模型,這樣的模型就是物理數(shù)據(jù)模型, 即 PDM。
CDM 是一組嚴格定義的模型元素的集合,這些模型元素精確地描述了系統(tǒng)的靜態(tài)特性、動態(tài)特性以及完整性約束條件等,其中包括了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分。
1)數(shù)據(jù)結(jié)構(gòu)表達為實體和屬性;
2)數(shù)據(jù)操作表達為實體中的記錄的插入、刪除、修改、查詢等操作;
3)完整性約束表達為數(shù)據(jù)的自身完整性約束(如數(shù)據(jù)類型、檢查、規(guī)則等)和數(shù)據(jù)間的參照完整性約束(如聯(lián)系、繼承聯(lián)系等); 二、實體、屬性及標識符的定義
實體(Entity),也稱為實例,對應(yīng)現(xiàn)實世界中可區(qū)別于其他對象的“事件”或“事物”。例如,學校中的每個學生,醫(yī)院中的每個手術(shù)。
每個實體都有用來描述實體特征的一組性質(zhì),稱之為屬性,一個實體由若干個屬性來描述。如學生實體可由學號、姓名、性別、出生年月、所在系別、入學年份等屬性組成。
實體集(Entity Set)是具體相同類型及相同性質(zhì)實體的集合。例如學校所有學生的集合可定義為“學生”實體集,“學生”實體集中的每個實體均具有學號、姓名、性別、出生年月、所在系別、入學年份等性質(zhì)。
實體類型(Entity Type)是實體集中每個實體所具有的共同性質(zhì)的集合,例如“患者”實體類型為:患者{門診號,姓名,性別,年齡,身份證號 ………….}。實體是實體類型的一個實例,在含義明確的情況下,實體、實體類型通?;Q使用。
實體類型中的每個實體包含唯一標識它的一個或一組屬性,這些屬性稱為實體類型的標識符(Identifier),如“學號”是學生實體類型的標識符,“姓名”、“出生日期”、“信址”共同組成“公民”實體類型的標識符。
有些實體類型可以有幾組屬性充當標識符,選定其中一組屬性作為實體類型的主標識符,其他的作為次標識符。
三、實體、屬性及標識符的表達
介紹 PowerDesigner 概念數(shù)據(jù)模型以及實體、屬性創(chuàng)建。
一、新建概念數(shù)據(jù)模型
1)選擇 File– New, 彈出如圖所示對話框,選擇 CDM 模型(即概念數(shù)據(jù)模型)建立模型。
2)完成概念數(shù)據(jù)模型的創(chuàng)建。以下圖示,對當前的工作空間進行簡單介紹。(以后再更詳細說明)
3)選擇新增的 CDM 模型,右擊,在彈出的菜單中選擇“Properties”屬性項,彈出如圖所示對話框。在“General”標簽里可以輸入所建模型的名稱、代碼、描述、創(chuàng)建者、版本以及默認的圖表等等信息。在“Notes”標簽里可以輸入相關(guān)描述及說明信息。當然再有更多的標簽,可以點擊 More 按鈕,這里就不再進行詳細解釋。
二、創(chuàng)建新實體
1)在 CDM 的圖形窗口中,單擊工具選項版上的 Entity 工具,再單擊圖形窗口的空白處,在單擊的位置就出現(xiàn)一個實體符號。點擊 Pointer 工具或右擊鼠標,釋放 Entitiy 工具。如圖所示
2)雙擊剛創(chuàng)建的實體符號,打開下列圖標窗口,在此窗口“General”標簽中可以輸入實體的名稱、代碼、描述等信息。
三、添加實體屬性
1)在上述窗口的“Attribute”選項標簽上可以添加屬性,如下圖所示。
注意:
數(shù)據(jù)項中的“添加屬性”和“重用已有數(shù)據(jù)項”這兩項功能與模型中 Data Item 的 Unique code 和 Allow reuse 選項有關(guān)。
P 列表示該屬性是否為主標識符;D 列表示該屬性是否在圖形窗口中顯示;M 列表示該屬性是否為強制的,即該列是否為空值。
如果一個實體屬性為強制的,那么,這個屬性在每條記錄中都必須被賦值,不能為空。2)在上圖所示窗口中,點擊插入屬性按鈕,彈出屬性對話框,如下圖所示。
注意:這里涉及到域的概念,即一種標準的數(shù)據(jù)結(jié)構(gòu),它可應(yīng)用至數(shù)據(jù)項或?qū)嶓w的屬性上
一、定義屬性的標準檢查約束
標準檢查約束是一組確保屬性有效的表達式。在實體屬性的特性窗口,打開如圖所示的檢查選項卡。
在這個選項卡可以定義屬性的標準檢查約束,窗口中每項的參數(shù)的含義,如下
參數(shù)說明 Minimum 屬性可接受的最小數(shù) Maximum 屬性可接受的最大數(shù) Default 屬性不賦值時,系統(tǒng)提供的默認值 Unit 單位,如公里、噸、元 Format 屬性的數(shù)據(jù)顯示格式 Lowercase 屬性的賦值全部變?yōu)樾懽帜?Uppercase 屬性的賦值全部變?yōu)榇髮懽帜?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 選項卡中定義的有效性規(guī)則表達式
一、標識符
標識符是實體中一個或多個屬性的集合,可用來唯一標識實體中的一個實例。要強調(diào)的是,CDM 中的標識符等價于 PDM 中的主鍵或候選鍵。
每個實體都必須至少有一個標識符。如果實體只有一個標識符,則它為實體的主標識符。如果實體有多個標識符,則其中一個被指定為主標識符,其余的標識符就是次標識符了。
二、如果定義主、次標識符
1)選擇某個實體雙擊彈出實體的屬性對話框。在 Identifiers 選項卡上可以進行實體標識符的定義。如下圖所示
2)選擇第一行“主標識符”,點擊屬性按鈕或雙擊第一行“主標識符”,彈出屬性對話框,如圖所示
3)選擇 Attributes 選項卡,再點擊“Add Attributes”工具,彈出如圖所示窗口,選擇某個屬性作為標識符就行了。
一、數(shù)據(jù)項
數(shù)據(jù)項(Data Item)是信息存儲的最小單位,它可以附加在實體上作為實體的屬性。
注意:模型中允許存在沒有附加至任何實體上的數(shù)據(jù)項。
二、新建數(shù)據(jù)項
1)使用“Model”— Data Items 菜單,在打開的窗口中顯示已有的數(shù)據(jù)項的列表,點擊“Add a Row”按鈕,創(chuàng)建一個新數(shù)據(jù)項,如圖所示
2)當然您可以繼續(xù)設(shè)置具體數(shù)據(jù)項的 Code、DataType、Length 等等信息。這里就不再詳細說明了。
三、數(shù)據(jù)項的唯一性代碼選項和重用選項
使用 Tools— Model Options- Model Settings。在 Data Item 組框中定義數(shù)據(jù)項的唯一性代碼選項 (Unique Code) 與重用選項(Allow Reuse)。
注意:
如果選擇 Unique Code 復選框,每個數(shù)據(jù)項在同一個命名空間有唯一的代碼,而選擇 Allow reuse,一個數(shù)據(jù)項可以充當多個實體的屬性。
四、在實體中添加數(shù)據(jù)項
1)雙擊一個實體符號,打開該實體的屬性窗口。
2)單擊 Attributes 選項卡,打開如下圖所示窗口
注意:
Add a DataItem 與 Reuse a DataItem 的區(qū)別在于
Add a DataItem 情況下,選擇一個已經(jīng)存在的數(shù)據(jù)項,系統(tǒng)會自動復制所選擇的數(shù)據(jù)項。如果您設(shè)置了 UniqueCode 選項,那系統(tǒng)在復制過程中,新數(shù)據(jù)項的 Code 會自動生成一個唯一的號碼,否則與所選擇的數(shù)據(jù)項完全一致。
Reuse a DataItem 情況下,只引用不新增,就是引用那些已經(jīng)存在的數(shù)據(jù)項,作為新實體的數(shù)據(jù)項
一、聯(lián)系
聯(lián)系(Relationship)是指實體集這間或?qū)嶓w集內(nèi)部實例之間的連接。
實體之間可以通過聯(lián)系來相互關(guān)聯(lián)。與實體和實體集對應(yīng),聯(lián)系也可以分為聯(lián)系和聯(lián)系集,聯(lián)系集是實體集之間的聯(lián)系,聯(lián)系是實體之間的聯(lián)系,聯(lián)系是具有方向性的。聯(lián)系和聯(lián)系集在含義明確的情況之下均可稱為聯(lián)系。
按照實體類型中實例之間的數(shù)量對應(yīng)關(guān)系,通??蓪⒙?lián)系分為 4 類,即一對一(ONE TO ONE)聯(lián)系、一對多(ONE TO MANY)聯(lián)系、多對一(MANY TO ONE)聯(lián)系和多對多聯(lián)系(MANY TO MANY)。 二、建立聯(lián)系
在 CDM 工具選項板中除了公共的工具外,還包括如下圖所示的其它對象產(chǎn)生工具。
在圖形窗口中創(chuàng)建兩個實體后,單擊“實體間建立聯(lián)系”工具,單擊一個實體,在按下鼠標左鍵的同時把光標拖至別一個實體上并釋放鼠標左鍵,這樣就在兩個實體間創(chuàng)建了聯(lián)系,右鍵單擊圖形窗口,釋放 Relationship 工具。如下圖所示
三、四種基本的聯(lián)系
即一對一(ONE TO ONE)聯(lián)系、一對多(ONE TO MANY)聯(lián)系、多對一(MANY TO ONE)聯(lián)系和多對多聯(lián)系(MANY TO MANY)。如圖所示
四、其他幾類特殊聯(lián)系
除了 4 種基本的聯(lián)系之外,實體集與實體集之間還存在標定聯(lián)系(Identify Relationship)、非標定聯(lián)系(Non-Identify RelationShip)和遞歸聯(lián)系(Recursive Relationship)。
標定聯(lián)系:
每個實體類型都有自己的標識符,如果兩個實體集之間發(fā)生聯(lián)系,其中一個實體類型的標識符進入另一個實體類型并與該實體類型中的標識符共同組成其標識符時,這種聯(lián)系則稱為標定聯(lián)系,也叫依賴聯(lián)系。反之稱為非標定聯(lián)系,也叫非依賴聯(lián)系。
注意:
在非標定聯(lián)系中,一個實體集中的部分實例依賴于另一個實例集中的實例,在這種依賴聯(lián)系中,每個實體必須至少有一個標識符。而在標定聯(lián)系中,一個實體集中的全部實例完全依賴于另個實體集中的實例,在這種依賴聯(lián)系中一個實體必須至少有一個標識符,而另一個實體卻可以沒有自己的標識符。沒有標識符的實體用它所依賴的實體的標識符作為自己的標識符。
換句話來理解,在標定聯(lián)系中,一個實體(選課)依賴 一個實體(學生),那么(學生)實體必須至少有一個標識符,而(選課)實體可以沒有自己的標識符,沒有標標識符的實體可以用實體(學生)的標識符作為自己的標識符。遞歸聯(lián)系:
遞歸聯(lián)系是實體集內(nèi)部實例之間的一種聯(lián)系,通常形象地稱為自反聯(lián)系。同一實體類型中不同實體集之間的聯(lián)系也稱為遞歸聯(lián)系。
例如:在“職工”實體集中存在很多的職工,這些職工之間必須存在一種領(lǐng)導與被領(lǐng)導的關(guān)系。又如“學生”實體信中的實體包含“班長”子實體集與“普通學生”子實體集,這兩個子實體集之間的聯(lián)系就是一種遞歸聯(lián)系。創(chuàng)建遞歸聯(lián)系時,只需要單擊“實體間建立聯(lián)系”工具從實體的一部分拖至該實體的別一個部分即可。如圖
五、定義聯(lián)系的特性
在兩個實體間建立了聯(lián)系后,雙擊聯(lián)系線,打開聯(lián)系特性窗口,如圖所示。
六、定義聯(lián)系的角色名
在聯(lián)系的兩個方向上各自包含有一個分組框,其中的參數(shù)只對這個方向起作用,Role Name 為角色名,描述該方向聯(lián)系的作用,一般用一個動詞或動賓組表。
如:“學生 to 課目”組框中應(yīng)該填寫“擁有”,而在“課目 To 學生”組框中填寫“屬于”。(在此只是舉例說明,可能有些用詞不太合理)。
七、定義聯(lián)系的強制性
Mandatory 表洋這個方向聯(lián)系的強制關(guān)系。選中這個復選框,則在聯(lián)系線上產(chǎn)生一個聯(lián)系線垂直的豎線。不選擇這個復選框則表示聯(lián)系這個方向上是可選的,在聯(lián)系線上產(chǎn)生一個小圓圈。
八、有關(guān)聯(lián)系的基數(shù)
聯(lián)系具有方向性,每個方向上都有一個基數(shù)。
舉例,
“系”與“學生”兩個實體之間的聯(lián)系是一對多聯(lián)系,換句話說“學生”和“系”之間的聯(lián)系是多對一聯(lián)系。而且一個學生必須屬于一個系,并且只能屬于一個系,不能屬于零個系,所以從“學生”實體至“系”實體的基數(shù)為“1,1”,從聯(lián)系的另一方向考慮,一個系可以擁有多個學生,也可以沒有任何學生,即零個學生,所以該方向聯(lián)系的基數(shù)就為“0,n”, 如圖所示
CDM 是大多數(shù)開發(fā)者使用 PD 時最先創(chuàng)建的模型,也是整個數(shù)據(jù)庫設(shè)計最高層的抽象。CDM 是建立在傳統(tǒng)的 ER 圖模型理論之上的,ER 圖中有三大主要元素:實體型,屬性和聯(lián)系。其中實體型對應(yīng)到 CDM 中的 Entity,屬性對應(yīng)到 CDM 中每個 Entity 的 Attribute,在概念上基本上是一一對應(yīng)的。但在聯(lián)系上,CDM 有了比較大的擴展,除了保留 ER 圖原有的 RelationShip 概念之外,還增加了 Association,Inheritance 兩種實體關(guān)系,下面就讓我們分別看看這些關(guān)系的用法和之間的區(qū)別(下圖中被標紅的工具欄按鈕就是用來向?qū)嶓w中添加這些關(guān)系的)。
另外,在介紹所有這些 CDM 中的元素之前,筆者先給出一個很簡單的 CDM 圖,是對我們最最熟悉的學校場景的一個建模,下文中提到的所有概念在圖中都有體現(xiàn),大家在看下文的時候可以對照著來看:
一. RelationShip(聯(lián)系)
先給出 PD 手冊里對聯(lián)系的定義:“A relationship is a link between entities. For example, in a CDM that manages human resources, the relationship Member links the entities Employee and Team, because employees can be members of teams. This relationship expresses that each employee works in a team and that each team has employees.”可見,也許聯(lián)系的概念真的太簡單了吧,所以反而不那么好表述,所以 PD 的文檔里也是用一個例子來說明出現(xiàn)了什么樣的情況我們就認為兩個實體間是有聯(lián)系的。
當我們提起實體間聯(lián)系的時候,最先想到的恐怕是 one to one,one to many 和 many to many 這三種聯(lián)系類型,這些聯(lián)系類型也是大家最熟悉的。筆者對 ER 圖原本的概念并不精通,但在 CDM 中,聯(lián)系還有另外三個可以設(shè)置的屬性:mandatory(強制性聯(lián)系), dependent(依賴性聯(lián)系 / 標定關(guān)聯(lián))和 dominant(統(tǒng)制聯(lián)系)。這些屬性對后面 PDM 的生成都有比較大的影響,需要我們一一有所了解。它們都是在聯(lián)系的屬性控制面板中設(shè)定的,見下圖:
1.mandatory
聯(lián)系是否具有強制性,指的是實體間是不是一定會出現(xiàn)這種聯(lián)系;或者換句話說,當我們在談及一個聯(lián)系的應(yīng)用場景的時候,聯(lián)系對應(yīng)的那兩個實體型的實體實例的個數(shù)可不可能為零。也許這樣的解釋還是有點抽象,讓我們舉兩個聯(lián)系的例子,一個是對兩邊的實體都有強制性的,另一個則不然。
(1)教師 – 學生 聯(lián)系
這個聯(lián)系首先是一個多對多聯(lián)系,因為每個老師可以教多個學生,每個學生也都有多個老師來負責他們的學業(yè)。同時,這個聯(lián)系對教師和學生都是強制性的,也就是說,不存在任何一個老師,他不負責任何一個學生的教學;也不存在任何一個學生,他沒有任何一個任課老師。
(2)學生 – 俱樂部 聯(lián)系
這個聯(lián)系也是一個多對多關(guān)系,但它對學生這個實體型而言就不是強制的(Optional, 可選的)。每個俱樂部都有至少一個學生參加,但并不是每個學生都要去參加俱樂部的活動。完全可以有一些學生,他們什么俱樂部都沒參加。
上面的例子主要是從概念的角度來區(qū)分了 mandatory 和 optional 的區(qū)別。實際上如果把這個模型對應(yīng)到我們最后生成的表,如果 A - B 間的聯(lián)系對 A 是 mandatory 的話,那么如果在 A 里面如果包含 B 的外鍵,這個外鍵不能為空值,反之可以為空值。后面我們談到 PDM 和實際數(shù)據(jù)庫的時候,大家會看到這一點。
2.dependent
每一個 Entity 型都有自己的 Identifier,如果兩個 Entity 型之間發(fā)生關(guān)聯(lián)時,其中一個 Entity 型的 Identifier 進入另一個 Entity 型并與該 Entity 型中的 Identifier 共同組成其 Identifier 時,這種關(guān)聯(lián)稱為標定關(guān)聯(lián), 也叫依賴性關(guān)聯(lián)(dependent relationship)。一個 Entity 型的 Identifier 進入另一個 Entity 型后充當其非 Identifier 時,這種關(guān)聯(lián)稱為非標定關(guān)聯(lián), 也叫非依賴關(guān)聯(lián)。
概念的定義說起來還是有些拗口,說白了其實就是主 - 從表關(guān)系,從表要依賴于主表。比如在我們系統(tǒng)里要記錄教師休假的情況,有一個實體型 Holiday,其屬性包括休假的開始時間和天數(shù),每次有教師休假的時候,都要在這個表留下記錄。從我們的場景描述中可以看到,實體型假期必須依附于實體型教師,即對于每一個假期實例,必須指向某一個教師實例。
對于依賴型聯(lián)系,必須注意它不可能是一個多對多聯(lián)系,在這個聯(lián)系中,必須有一個作為主體的實體型。一個 dependent 聯(lián)系的從實體可以沒有自己的 identifier.
3.dominant
這個聯(lián)系屬性是最為簡單的,它僅作用于一對一聯(lián)系,并指明這種聯(lián)系中的主從表關(guān)系。在 A,B 兩個實體型的聯(lián)系中,如果 A – B 被指定為 dominant,那么 A 為這個一對一聯(lián)系的主表,B 為從表,并且在以后生成的 PDM 中會產(chǎn)生一個引用(如果不指定 dominant 屬性的話會產(chǎn)生兩個引用)。比如老師和班級之間的聯(lián)系,因為每個班級都有一個老師做班主任,每個老師也最多只能做一個班級的班主任,所以是一個一對一關(guān)系。同時,我們可以將老師作為主表,用老師的工號來唯一確定一個班主任聯(lián)系。
二.Association(關(guān)聯(lián))
先來看一下 PD 給 association 的定義:“An association is a connection between entities. In the Merise modeling methodology an association is used to connect several entities that each represents clearly defined objects, but are linked by an event, which may not be so clearly represented by another entity.”。
在上一小段提到的那些 RelationShip,在很多情況下(特別是多對多關(guān)系中),我們會把聯(lián)系專門提出來,作為一個實體型放在兩個需要被關(guān)聯(lián)的實體型中間(在 PD 中,選中任何一個聯(lián)系,在右鍵的彈出菜單中選擇“Change to Entity”命令即可完成聯(lián)系轉(zhuǎn)實體的操作)。但有的時候,把若干個實體型之間的聯(lián)系抽象為一個實體型可能不太合適,這個時候你可以選擇為這些實體型建立一個 association,那么在生成 PDM 的時候,所有這些相關(guān)實體型的 identifier 都會被加入到 association 對應(yīng)生成的表模型中。所以,說白了,其實 association 就是實體型的一種特例,用來在建模的時候更確切的表達實體間的關(guān)聯(lián)信息。在 PD 的文檔中舉了一個錄音帶、顧客、商店三個實體型在租借錄音帶這個場景上發(fā)生關(guān)聯(lián),然后把租借定義為上述三個實體型之間的 association 的例子,非常確切。在我們的學校模型里,我定義了家訪做為老師和學生實體型中間的一個 association,在接下來產(chǎn)生的 PDM 中大家就可能看到這種定義所產(chǎn)生的效果。
感謝各位的閱讀,以上就是“怎么用 powerdesigner 畫 ER 圖”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么用 powerdesigner 畫 ER 圖這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!