定義實體
用滑鼠雙擊實體的符號,可以進入實體的屬性頁。
general 專案
name:是用來在模型中標識乙個實體,一般用於模型在介面中的顯示(這個可以通過更改選項設定進行改變)。在乙個模型當中,實體的名字不能重複。
code:在模型轉化時一般作為物件的物理名稱,比如把實體屬性的code轉化為資料庫中的列名,當然我們現在不必為了這個實體將來叫什麼而費神,一般採取與name一致即可。
generate:預設是選擇狀態,如果取消,則在轉化為其他模型時,會忽略這個實體。
attributes 專案
視窗中下面**裡的各項很類似於乙個表結構的定義,但資料型別是經過抽象化的,採用獨立的表示方法,不與任何乙個具體的資料庫系統相關。在此專案中為當前實體新增屬性。
後面的三列checkbox分別代表:
按「crtl+u」呼出「定製列過濾器」的視窗,可以根據自己的喜好和實際需要選擇那些列出現在視窗中,那些隱藏。使用快捷鍵 「crtl+e」可以允許或者禁止當前過濾器。
定義關係
雙擊關係(relationship)的符號,進入關係的屬性頁,
general 專案
一般最好為關係取乙個貼切的名字,本例的業務關係描述如下:乙個部門有多個員工,我們使用「has」作為這個關係的名字。
同樣的我們也可以描述為:多個員工屬於乙個部門,可不可以使用「belong to」作為關係名字呢?一般不推薦這樣做,在概念圖中有乙個約定,關係的名字採用從「1,n」中「1」所在的方向向「n」所在一方進行讀取的語義。本例即 「1」在部門一方,從部門一方向雇員一方讀取語義,即:部門有(has)多個員工。
detail 專案
假定對於實體部門(department)和雇員(employee),具有如下關係:
根據以上關係,我們修改屬性頁,部門-雇員的方向採用預設的0,n,雇員-部門的方向修改為強制約束(mandatory),或者從下拉框中選擇「1,1」,如下圖:
注:在power designer中,關係符號靠近實體端的乙個「橫線」代表強制性約束,「空心圓圈」代表無強制約束,即這一方可以無物件關聯;「非分岔」線代表為「1」 的關係,「分岔」線代表「多」的關係。以上四個符號共可以組合出16種關係(包含反向)。其中「多對多」的關係一般通過給出乙個中間實體來進行分解,所以在許多概念圖中,是看不到實際的「多對多」的關係存在的。
另外在關係的屬性中還有兩項:dominant role 和dependent,可以表示更複雜的關係
處理多對多(n..n)的關係
企業中擁有帳號的雇員在系統中具有不同的操作許可權,這通過使用者角色來進行管理,許可權已經分配給了多個不同的角色,乙個使用者帳號至少屬於乙個角色,並 且可能會同時屬於多個角色,乙個角色可以包含0個或多個使用者帳號。根據以上描述,我們新增乙個實體「role」,它與實體「user」之間是n..n 的關係,為了表達這種關係,我們增加乙個「association」並分別使用「association link」與其他兩個實體建立關係,
工具對比
service
並不是每個設計都需要用到pd
用powerdesigner對付比較大型的專案,是很好的,對於短平快型別的專案,如果時間要求你1個星期完成乙個程式,那麼完全沒有必要用 powerdesigner,直接維護資料庫就可以了,當表的數量超過10個(乙個小系統的表在10個左右)的時候,建議還是用用 powerdesigner 。
我的看法:如果想做成乙個比較規範的資料庫,小專案也可以用。畢竟生成報表和正反向工程很有用。
零碎pd中的cdm設計時,可以將所有需要的字段都定義好。然後在設計實體是直接取出來。pd提供了這樣的統一管理的工具。在pd選單欄-model-data item下。
為了使自己設計的cdm看起來象樣一點,可以從工具欄中,拖動乙個title。其顯示的資訊,是當前cdm的屬性值。
為了使實體等symbol看起來顯眼和舒服。可以根據個人喜好進行外觀上的調整。當前設計介面中,右鍵-display perferences中進行設定。還可以增加shadow效果。選中symbol後,ctrl+w。或者右鍵選單。
為了使布局整齊。選中需要調整的symbol後,選單-symbol-align進行設定。快捷鍵:ctrl+up,ctrl+down,ctrl+left,ctrl+right即為上下左右對齊。
設計實體屬性時注意的細節:m:表示強制非空;p:是否為主鍵;d:是否在模型中顯示。gerenate:表示是否作為表生成。
預設情況下,cdm的實體會顯示identifier一欄。如果不想其顯示出來,在右鍵-display perferences中objectview-entity中設定。
關係的命名方法是:實體名1 實體名2。
關係中的角色(role)表示聯絡線上乙個方向上的含義。用乙個動詞來描述。role只是起乙個描述作用。
依賴(dependency):表示在聯絡中乙個實體的存在是否依賴於另乙個實體。寄生實體(dependent entity)是一種部分地被另一實體確定的實體。在依賴聯絡中,乙個實體與另一實體通過識別符號相聯絡,當乙個實體的存在沒有另乙個實體的存在作為參考就不能唯一確定時,兩個實體間就存在依賴聯絡。
主從表就是典型的依賴關係。
中間實體(associative entity):是為了解決多對多聯絡而產生的乙個人工實體,能夠為中間實體定義屬性。用滑鼠右鍵單擊多對多聯絡線,在彈出的選單中選擇「change to entity」,能夠把這個聯絡轉換成連線兩個實體的中間實體。
善於利用自動生成的中間實體,可以簡化設計工作,提高資料庫設計的正確性。
中間實體一般不用再加入新的字段。
牢記:外來鍵是通過關係relationship自動來建立的,不需要手動建立。不然會產生多餘的鍵。所以設計時,關注實體本身的字段,以及實體間的關係,特別是多對多和依賴關係。
從cdm到pdm的轉換需要注意:
不能改變diagram的名稱
在樹狀圖中,如果鉤選紅色標出的symbol表示覆蓋修改,不鉤選表示保護修改。
資料庫為了保證資料完整性和一致性,提出了約束。即表約束,列約束以及參照完整性約束。通常資料庫設計和程式開發不是絕對的分離的。所以前兩者在實際開發過程中逐漸的完善。需要注意的還是參照完整性約束。
在pd中前兩者的設定是對字段,後者是對關係。
參照完整性約束
限制(restrict)。不允許進行修改或刪除操作。若修改或刪除主表的主鍵時,如果子表中存在子記錄,系統將產生乙個錯誤提示。這是預設的參照完整性設定。
置空(set null)。如果外來鍵列允許為空,若修改或刪除主表的主鍵時,把子表中參照的外來鍵列設定為空值(null)。
置為預設(set default)。如果指定了預設值,若修改或刪除主表的主鍵時,把子表中參照的外來鍵設定為預設值(default)。
級聯(cascade)。把主表中主鍵修改為乙個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。
注意理解以上的約束時,抓住操作的都是主表。子表的操作都是相對主表來說的。操作方式就是update和delete。
引用基礎資料表的資料時,可以建立對應的檢視。選中需要作為檢視的表,選單欄-tools-create view
pd支援對已有資料的表更新表結構。不過需要謹慎操作,檢查生成的sql指令碼。
pd也可以生成隨機的測試資料。
觸發器就是dbms中提供的事件驅動機制。發生在表的insert,update和delete。執行sql語句或儲存過程。
在pd中可以完成儲存過程的編寫,也便於管理。
逆向工程可以通過資料庫指令碼或者通過odbc資料來源來實現。
PowerDesigner學習 基本步驟
資料庫最好從概念模型開始,概念模型中以實體為單位,可以比較清晰的反映實體間關係。需要特別注意的一點,在建立好乙個新的概念模型後,最好在model options中,將資料項的唯一 和允許重用兩個選項去掉。否則不同實體中的同名屬性會被認為是同乙個資料物件,改乙個另外的也會跟著改。大多數情況下都不需要這...
PowerDesigner學習之零散筆記
本篇文章不定時更新,主要記錄使用powerdesigner時學到的新操作方法 1.檢視 增加資源倉庫使用者和刪除 repository adminitration user 2.防止在模型中修改列 cplumns 中的name,code也會跟著變 tool general options dialo...
power Designer 使用步驟
1.開啟你使用的power designer 我使用的是pd11 file new conceptual data model 生成一張概念模型,這一步就是我們所說的設計 er,由於我們知道概念設計不設計到具體的資料庫,所以在這裡我們不必對資料庫進行配置。2.進行一些er設計的準備工作,這些只是我自...