PowerDesigner學習--概念數據模型CDM概要介紹

一、定義實體

用鼠標雙擊實體的符號,可以進入實體的屬性頁。

1、General項目

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

Code:在模型轉化時一般作爲對象的物理名稱。Name用中文英文以便查詢,寫程序的時候方便,Code纔是最終產生的Table Name。

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

2、Attributes項目

窗口中下面表格裏的各項很類似於一個表結構的定義,但數據類型是經過抽象化的,採用獨立的表示方法,不與任何一個具體的數據庫系統相關。

在此項目中爲當前實體添加屬性。

後面的三列CheckBox分別代表:

  • M:此屬性不允許爲空值
  • P:此屬性爲主鍵標識
  • D:爲可顯示屬性

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

二、定義關係

雙擊關係(Relationship)的符號,進入關係的屬性頁,

1、General項目

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

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

2、Detail項目

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

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

根據以上關係,我們修改屬性頁,部門-僱員的方向採用默認的0,n,僱員-部門的方向修改爲強制約束(Mandatory),或者從下拉框中選擇“1,1”。

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

另外在關係的屬性中還有兩項:Dominant role和Dependent,可以表示更復雜的關係。

牢記:概念圖中,外鍵是通過關係Relationship自動來建立的,不需要手動建立。不然會產生多餘的鍵。所以設計時,關注實體本身的字段,以及實體間的關係,特別是多對多和依賴關係。

從CDM到PDM的轉換需要注意:

不能改變Diagram的名稱,在樹狀圖中,如果勾選紅色標出的Symbol表示覆蓋修改,不勾選表示保護修改。

參照完整性約束是對關係來說的:

限制(Restrict):不允許進行修改或刪除操作。若修改或刪除主表的主鍵時,如果子表中存在子記錄,系統將產生一個錯誤提示。這是缺少的參照完整性設置。

置空(Set Null):如果外鍵表允許爲空,若修改或刪除主表的主鍵時,把子表中參照的外鍵列設置爲空值(Null)。

置爲缺省(Set Default):如果指定了缺省值,若修改或刪除主表的主鍵時,把子表中參照的外鍵設置爲缺省值(Default)。

級聯(Cascade):把主表中主鍵修改爲一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。

注意理解以上的約束時,抓住操作的都是主表,子表的操作都是相對主表來說的,操作方式就是Update和Delete。

三、內部機制

1、PowerDesigner中複製一列時,實際上一個鏈接,源列的變動同時體現在複製列上;

2、數據庫設計通常步驟:CDM確定主要結構-->生成PDM-->在PDM上修改,必要時生成CDM;

3、對於Oracle而言,爲表設置選項(如tablespace GPSSYSTEM)可使其創建到正確的表空間;爲主鍵設置選項(using index tablespace GPSINDEX)使索引創建到正確的表空間中;

域(Domain):簡單地說,是用戶自定義類型,但域還可以定義它的取值範圍或默認值,採用域減少了維護字段類型的工作量,也減少數據的不一致性。

參照(Reference):在PowerDesigner中,可對參照完整性進行各項設置,參照的基數從0到n,對修改和刪除約束可分別設置爲None、Restrict、Cascade、Set Null、Set Default。由於insert包含在update操作中,因此沒有單獨的insert約束。

約束的不同設置產生不同的效果,以修改爲例(刪除相同):

None:父表修改,子表不影響。

Restrict:父表修改,如果子表相應記錄存在,則出錯。

Cascade:父表修改,如果子表存在,則相應的修改。

Set Null:父表修改,如果子表存在,則相應置空。

Set Default:父表修改,如果子表存在,則相應置默認值。

存儲(Storage):不同的數據庫中有不同的概念,sybase稱爲設備(Device),SQL Server稱爲文件或文件組(File、FileGroup),而Oracle稱爲表空間(tablespace)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章