-- PowerDesigner雜記
數據庫設計工具對比
PowerDesign:PowerDesign是Sybase推出的主打數據庫設計工具。PowerDesign致力于采用基于Entiry-Relation的數據模型,分別從概念數據模型(Conceptual Data Model)和物理數據模型(Physical Data Model)兩個(gè)層次對數據庫進(jìn)行設計。概念數據模型描述的是獨立于數據庫管理系統(DBMS)的實(shí)體定義和實(shí)體關(guān)系定義。物理數據模型是在概念數據模型的基礎上針對目標數據庫管理系統的具體化。
ERWin:這個(gè)是CA公司的拳頭產(chǎn)品,它有一個(gè)兄弟是BPWin,這個(gè)是CASE工具的一個(gè)里程碑似的產(chǎn)品。ERWin界面相當簡(jiǎn)潔漂亮,也是采用ER模型,如果你是開(kāi)發(fā)中小型數據庫,極力推薦ERWin,它的Diagram給人的感覺(jué)十分清晰。在一個(gè)實(shí)體中,不同的屬性類(lèi)型采用可定制的圖標顯示,實(shí)體與實(shí)體的關(guān)系也一目了然。ERWin不適合非常大的數據庫的設計,因為它對Diagram欠缺更多層次的組織。
如何一次性將表結構的腳本導出來(lái)?
Database --->Generate Database ---> Genarate Script 就可實(shí)現。
Name用中文英文以便查詢(xún)、寫(xiě)程序的時(shí)候方便, Code才是最終產(chǎn)生的Table Name
PowerDesigner中建了模型,如何把它作為文檔導出?
利用REPORT。選擇一個(gè)模板,然后就生成了RTF或是HTM格式的文檔
如何將已經(jīng)存在的數據庫所有表,導入到PowerDesign中?
用PD里的反向工程file--->reverse engineering ===> and go on
概念數據模型(CDM)
CDM表現數據庫的全部邏輯的結構,與任何的軟件或數據儲藏結構無(wú)關(guān)。一個(gè)概念模型經(jīng)常包括在物理數據庫中仍然不實(shí)現的數據對象。它給運行計劃或業(yè)務(wù)活動(dòng)的數據一個(gè)正式表現方式。不考慮物理實(shí)現細節,只考慮實(shí)體之間的關(guān)系。
物理數據模型 (PDM)
PDM敘述數據庫的物理實(shí)現。主要目的是把CDM中建立的現實(shí)世界模型生成特定的DBMS腳本,產(chǎn)生數據庫中保存信息的儲存結構,保證數據在數據庫中的完整性和一致性。
面向對象模型 (OOM)
一個(gè)OOM包含一系列包,類(lèi),接口和他們的關(guān)系。這些對象一起形成所有的(或部份)一個(gè)軟件系統的邏輯的設計視圖的類(lèi)結構。一個(gè)OOM本質(zhì)上是軟件系統的一個(gè)靜態(tài)的概念模型。
業(yè)務(wù)程序模型(BPM)
BPM描述業(yè)務(wù)的各種不同內在任務(wù)和內在流程,而且客戶(hù)如何以這些任務(wù)和流程互相影響。BPM是從業(yè)務(wù)合伙人的觀(guān)點(diǎn)來(lái)看業(yè)務(wù)邏輯和規則的概念模型,使用一個(gè)圖表描述程序,流程,信息和合作協(xié)議之間的交互作用。
正向工程
你能直接地從PDM產(chǎn)生一個(gè)數據庫, 或產(chǎn)生一個(gè)能在你的數據庫管理系統環(huán)境中運行的數據庫腳本??梢陨蓴祿炷_本,如果選擇ODBC方式,則可以直接連接到數據庫,從而直接產(chǎn)生數據庫表以及其他數據庫對象。
逆向工程
將已存在的數據庫產(chǎn)生進(jìn)新的PDM 之內。數據來(lái)源可能是從腳本文件或一個(gè)開(kāi)放數據庫連接數據來(lái)源。
并不是每個(gè)設計都需要用到Power Designer。 例如:小的系統,或Table數比較少的情況下就沒(méi)有必要采用Power Designer了。
設計步驟
CDM PDM OOM三者轉換關(guān)系
2004-08-22更新
PowerDesigner僅僅是實(shí)現的工具
不要以為Power能幫你把關(guān)系什么的全部建立好,很多數據庫理論只是還是需要的,設計數據庫的時(shí)候,那些范式什么的,一定要掌握。
設計一個(gè)好的數據庫,最好的工具不是必須的,但是基礎理論是一定要的。
PowerDesigner用途不局限于數據建模
還可以用PowerDweigner設計web service
并不是每個(gè)設計都需要用到PD
用Powerdesigner對付比較大型的項目,是很好的,對于短平快類(lèi)型的項目,如果時(shí)間要求你1個(gè)星期完成一個(gè)程序,那么完全沒(méi)有必要用PowerDesigner,直接維護數據庫就可以了,當表的數量超過(guò)10個(gè)(一個(gè)小系統的表在10個(gè)左右)的時(shí)候,建議還是用用Powerdesigner 。
我的看法:如果想做成一個(gè)比較規范的數據庫,小項目也可以用。畢竟生成報表和正反向工程很有用。
零碎
PD中的CDM設計時(shí),可以將所有需要的字段都定義好。然后在設計實(shí)體是直接取出來(lái)。PD提供了這樣的統一管理的工具。在PD菜單欄-Model-Data Item下。
為了使自己設計的CDM看起來(lái)象樣一點(diǎn),可以從工具欄中,拖動(dòng)一個(gè)Title。其顯示的信息,是當前CDM的屬性值。
為了使實(shí)體等Symbol看起來(lái)顯眼和舒服??梢愿鶕€(gè)人喜好進(jìn)行外觀(guān)上的調整。當前設計界面中,右鍵-Display Perferences中進(jìn)行設置。還可以增加shadow效果。選中Symbol后,Ctrl+W?;蛘哂益I菜單。
為了使布局整齊。選中需要調整的Symbol后,菜單-Symbol-Align進(jìn)行設置??旖萱I:ctrl+UP,ctrl+Down,ctrl+Left,ctrl+Right即為上下左右對齊。
設計實(shí)體屬性時(shí)注意的細節:M:表示強制非空;P:是否為主鍵;D:是否在模型中顯示。gerenate:表示是否作為表生成。
默認情況下,CDM的實(shí)體會(huì )顯示Identifier一欄。如果不想其顯示出來(lái),在右鍵-Display Perferences中ObjectView-Entity中設置。
關(guān)系的命名方法是:實(shí)體名1 實(shí)體名2。
關(guān)系中的角色(Role)表示聯(lián)系線(xiàn)上一個(gè)方向上的含義。用一個(gè)動(dòng)詞來(lái)描述。Role只是起一個(gè)描述作用。
依賴(lài)(Dependency):表示在聯(lián)系中一個(gè)實(shí)體的存在是否依賴(lài)于另一個(gè)實(shí)體。寄生實(shí)體(Dependent Entity)是一種部分地被另一實(shí)體確定的實(shí)體。在依賴(lài)聯(lián)系中,一個(gè)實(shí)體與另一實(shí)體通過(guò)標識符相聯(lián)系,當一個(gè)實(shí)體的存在沒(méi)有另一個(gè)實(shí)體的存在作為參考就不能唯一確定時(shí),兩個(gè)實(shí)體間就存在依賴(lài)聯(lián)系。
主從表就是典型的依賴(lài)關(guān)系。
中間實(shí)體(Associative Entity):是為了解決多對多聯(lián)系而產(chǎn)生的一個(gè)人工實(shí)體,能夠為中間實(shí)體定義屬性。用鼠標右鍵單擊多對多聯(lián)系線(xiàn),在彈出的菜單中選擇“Change to entity”,能夠把這個(gè)聯(lián)系轉換成連接兩個(gè)實(shí)體的中間實(shí)體。
善于利用自動(dòng)生成的中間實(shí)體,可以簡(jiǎn)化設計工作,提高數據庫設計的正確性。
中間實(shí)體一般不用再加入新的字段。
牢記:外鍵是通過(guò)關(guān)系Relationship自動(dòng)來(lái)建立的,不需要手動(dòng)建立。不然會(huì )產(chǎn)生多余的鍵。所以設計時(shí),關(guān)注實(shí)體本身的字段,以及實(shí)體間的關(guān)系,特別是多對多和依賴(lài)關(guān)系。
從CDM到PDM的轉換需要注意:
數據庫為了保證數據完整性和一致性,提出了約束。即表約束,列約束以及參照完整性約束。通常數據庫設計和程序開(kāi)發(fā)不是絕對的分離的。所以前兩者在實(shí)際開(kāi)發(fā)過(guò)程中逐漸的完善。需要注意的還是參照完整性約束。
在PD中前兩者的設定是對字段,后者是對關(guān)系。
參照完整性約束
注意理解以上的約束時(shí),抓住操作的都是主表。子表的操作都是相對主表來(lái)說(shuō)的。操作方式就是Update和Delete。
引用基礎數據表的數據時(shí),可以建立對應的視圖。選中需要作為視圖的表,菜單欄-Tools-Create View
PD支持對已有數據的表更新表結構。不過(guò)需要謹慎操作,檢查生成的SQL腳本。
PD也可以生成隨機的測試數據。
觸發(fā)器就是DBMS中提供的事件驅動(dòng)機制。發(fā)生在表的Insert,Update和Delete。執行SQL語(yǔ)句或存儲過(guò)程。
在PD中可以完成存儲過(guò)程的編寫(xiě),也便于管理。
逆向工程可以通過(guò)數據庫腳本或者通過(guò)ODBC數據源來(lái)實(shí)現。
聯(lián)系客服