--??PowerDesigner雜記
數據庫設計工具對比
????PowerDesign:PowerDesign是Sybase推出的主打數據庫設計工具。PowerDesign致力于采用基于Entiry-Relation的數據模型,分別從概念數據模型(Conceptual Data Model)和物理數據模型(Physical Data Model)兩個層次對數據庫進行設計。概念數據模型描述的是獨立于數據庫管理系統(DBMS)的實體定義和實體關系定義。物理數據模型是在概念數據模型的基礎上針對目標數據庫管理系統的具體化。
????ERWin:這個是CA公司的拳頭產品,它有一個兄弟是BPWin,這個是CASE工具的一個里程碑似的產品。ERWin界面相當簡潔漂亮,也是采用ER模型,如果你是開發中小型數據庫,極力推薦ERWin,它的Diagram給人的感覺十分清晰。在一個實體中,不同的屬性類型采用可定制的圖標顯示,實體與實體的關系也一目了然。ERWin不適合非常大的數據庫的設計,因為它對Diagram欠缺更多層次的組織。
如何一次性將表結構的腳本導出來?
????Database --->Generate Database ---> Genarate Script 就可實現。
Name用中文英文以便查詢、寫程序的時候方便, Code才是最終產生的Table Name
PowerDesigner中建了模型,如何把它作為文檔導出?
????利用REPORT。選擇一個模板,然后就生成了RTF或是HTM格式的文檔
如何將已經存在的數據庫所有表,導入到PowerDesign中?
????用PD里的反向工程file--->reverse engineering ===> and go on
概念數據模型(CDM)
????CDM表現數據庫的全部邏輯的結構,與任何的軟件或數據儲藏結構無關。一個概念模型經常包括在物理數據庫中仍然不實現的數據對象。它給運行計劃或業務活動的數據一個正式表現方式。不考慮物理實現細節,只考慮實體之間的關系。
物理數據模型 (PDM)
????PDM敘述數據庫的物理實現。主要目的是把CDM中建立的現實世界模型生成特定的DBMS腳本,產生數據庫中保存信息的儲存結構,保證數據在數據庫中的完整性和一致性。
面向對象模型 (OOM)
????一個OOM包含一系列包,類,接口和他們的關系。這些對象一起形成所有的(或部份)一個軟件系統的邏輯的設計視圖的類結構。一個OOM本質上是軟件系統的一個靜態的概念模型。
業務程序模型(BPM)
????BPM描述業務的各種不同內在任務和內在流程,而且客戶如何以這些任務和流程互相影響。BPM是從業務合伙人的觀點來看業務邏輯和規則的概念模型,使用一個圖表描述程序,流程,信息和合作協議之間的交互作用。
正向工程
????你能直接地從PDM產生一個數據庫, 或產生一個能在你的數據庫管理系統環境中運行的數據庫腳本。可以生成數據庫腳本,如果選擇ODBC方式,則可以直接連接到數據庫,從而直接產生數據庫表以及其他數據庫對象。
逆向工程
????將已存在的數據庫產生進新的PDM 之內。數據來源可能是從腳本文件或一個開放數據庫連接數據來源。
????并不是每個設計都需要用到Power Designer。 例如:小的系統,或Table數比較少的情況下就沒有必要采用Power Designer了。
設計步驟
CDM PDM OOM三者轉換關系
2004-08-22更新
PowerDesigner僅僅是實現的工具
????不要以為Power能幫你把關系什么的全部建立好,很多數據庫理論只是還是需要的,設計數據庫的時候,那些范式什么的,一定要掌握。
????設計一個好的數據庫,最好的工具不是必須的,但是基礎理論是一定要的。
PowerDesigner用途不局限于數據建模
????還可以用PowerDweigner設計web 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數據源來實現。