本文件不講述如何使用powerdesigner,而是講述如何將powerdesigner的特點結合資料庫設計 的方法更好的設計乙個資料庫系統 。
powerdesigner作為資料庫建模和設計的case工具之一,在資料庫系統開發中發揮著重要作用。
運用powerdesigner進行資料庫設計,不但給人直觀地理解模型,而且充分運用資料庫的技術,優化資料庫的設計。powerdesigner支援
sybase 、
oracle 、informix、
sql server 等多種資料庫系統,在應用系統做資料庫遷移時不必維護多個資料庫指令碼。
對於採用結構化分析(
sa ),e-r圖、資料流圖直至最後的資料庫物理圖都是系統設計時不可缺少的乙個部分,當資料庫物理圖完成後,應該產生系統的資料字典。運用powerdesigner完全能夠完成這一設計流程。
對於採用物件導向 的分析(ooa ),由於資料庫採用的是rdbms,因此存在物件 和關聯式資料庫之間的對映,也需要進行資料庫設計。
powerdesigner可以設計兩種資料庫模型圖:資料庫邏輯圖(即e-r圖或
概念模型 )和資料庫物理圖(物理模型),並且這兩種資料庫圖是互逆的。
資料庫邏輯圖是對現實世界的一種抽象,體現實體之間的關係,可以有1對1、1對多、多對多等關係。特別說一點,在擴充e-r圖中有概括這種關係,體現
型別 之間的一種子集聯絡,它定義了超
類 和子類。在powerdesigner設計的e-r圖中,不具備這種關係,但在e-rwin設計的模型中支援這種關係,因此在用e-rwin圖設計的模型轉化為powerdesigner的模型時注意這種關係。
資料庫物理圖中是邏輯模型的物理實現,體現了表間的參照關係。在物理模型中不可能存在多對多的關係。在邏輯圖向物理圖轉換時,多對多的關係變成兩個1對多的關係。
邏輯模型和物理模型有著緊密的聯絡,也有本質的區別。邏輯模型的設計遵循資料庫設計理論的
第三正規化 (在一般的資料庫應用達到第三
正規化 即可),邏輯模型要求具有應用系統所表達的所有資訊並消除資料冗餘。物理模型是在邏輯模型的基礎上,為了優化應用系統的效能而採用增加冗餘,建立
索引等資料庫技術,它主要用非規範化的一些理論。
在考慮設計的任何非規範化之前,資料庫應先完全規範化,在沒有完全理解資料和使用者
需求 之前,不能進行非規範化。否則導致資料的組織越來越混亂,應用
程式 越來越複雜。
因此邏輯模型和物理模型是相互矛盾又緊密聯絡的,這點需要設計人員好好把握。
用powerdesigner設計資料庫物理圖,包括多個物件,如表(table)、字段(column)、域(domain)等。設計時主要在powerdesigner的dictionary和
database 兩個選單中。
表是資料儲存的乙個邏輯物件,包括其它物件如欄位(column)、索引(index)、觸發器(
trigger )、儲存過程(procedure)等,表的優化設計有分割等技術,對於表的儲存,如果訪問資料量大,訪問頻率高則可考慮將表放在不同的儲存(storage)上。
在設計表時,應該估算表的大小和增長量,便於建立資料庫時分配資料庫空鍵,這樣減少了磁碟碎片的產生。
在關聯式資料庫中設計主鍵時,採用有意義的主鍵是致命的錯誤。如果使用者決定改變欄位的商業含義,則需要在所有使用到該資訊的地方進行修改。主鍵的作用應是保持唯一性和作為外來鍵使用。任何對主鍵的修改會導致巨大的資料庫維護工作量,顯然這是不合適宜的設計。就關聯式資料庫而言,設計主鍵策略採用的是**主鍵的方法。
設計主鍵時應該避免「熱點」現象,但也需要分析具體的應用系統的併發使用者而定。
定義乙個字段主要有欄位名、字段型別及長度、是否主外來鍵、是否空、約束、
預設值、域等。
變長和定長的資料型別在資料庫設計中討論比較多,作為一般原則,如果預期某列中的資料範圍變化很大,但變化並不頻繁,那末對這樣的列使用變長資料型別最為適宜。
決定行長時,既不能太浪費,又不能太吝惜。考慮到將來的需要,並且意識到,如果增加行長而沒有改變一頁中容納的行數,那末增加的空間就等於免費使用。
設計時,字段盡量使用域,方便維護欄位的型別。每個字段最好將預設值加上,因為在資料庫查詢中,有null值會影響查詢的效能。
通過check約束可限制欄位的取值。
簡單地說,是使用者自定義型別,但域還可以定義它的取值範圍或預設值,採用域減少了維護字段型別的工作量,也減少資料的不一致性。
參照在資料庫設計中是乙個比較複雜的問題,它是實現資料的完整性主要要素之一,詳細論述參考後面資料的約束。
在powerdesigner中,可對參照完整性進行各項設定,參照的基數從0到n,對修改和刪除約束可分別設定為none、restrict、cascade、set null、set default。由於insert包含在update操作中,因此沒有單獨的insert約束。
約束的不同設定產生不同的效果,以修改為例(刪除相同):
none:父表修改,子表不影響。
restrict:父表修改,如果子表存在,則出錯。
cascade:父表修改,如果子表存在,則相應的修改。
set null:父表修改,如果子表存在,則相應置空。
set default:父表修改,如果子表存在,則相應置預設值。
索引是優化查詢時採用一種資料庫技術,索引有簇索引、非簇索引、唯一索引等。
設計索引時,要注意索引寬度,儘量減少索引的寬度。索引的寬度不是由字段的多少決定的,而是由字段的長度來決定。對於窄索引關鍵字,在每一索引頁上放置更多的關鍵字和指標,這樣就能花銷更少的i/o找到資料。
對於復合索引,選擇首列相當重要,否則可能不能利用該索引,當利用復合索引查詢時。必須確保查詢從首列開始。
索引還有乙個填充因子(fillfactor),填充因子的大小視表的資料增長量和主鍵定義的情況而定。
觸發器在維護資料完整性起著重要作用,它比參照更具靈活性,
也能實現三層結構中資料層的業務規則。
儲存過程是採用
sql 及流程控制語句編寫的完成某種業務的指令碼。儲存過程在資料處理上具有處理速度快、處理靈活等優點。
但是,儲存過程極大地增加了與資料庫之間的耦合,在資料庫遷移時,需要重寫儲存過程,從而增加了版本維護的工作量。如果資料庫要求從遷移性考慮,應盡量避免使用儲存過程或者觸發器。
如果不人為修改powerdesigner的觸發器,其遷移性powerdesigner自動解決。
不同的資料庫中有不同的概念,sybase稱為裝置(device),sql server稱為
檔案 或檔案組(file、filegroup),而oracle稱為表空間(tablespace)。
根據系統建立乙個或多個儲存,按一定的優化規則存放。
資料庫的劃分以它的物理分布為原則,而不應資料量、表型別等原則來劃分,資料庫的多少對資料庫的效能影響不大。對於訪問資料量大、訪問頻繁的表來說,i/o操作很容易形成嚴重的瓶頸,因此減少i/o操作和i/o操作阻塞是資料庫設計考慮的主要問題,解決方法將將表放在多個裝置上,裝置需建立在不同的物理驅動器上,最好能用智慧型或陣列。
日誌和資料分開儲存在不同裝置上,如果索引多且占用空間大,也可以採用如此方式。
資料庫數量少的維護成本比數量大少。
因此資料庫劃分以物理分布為原則。
在powerdesigner提供計算資料庫或表的方法(compute database size),可幫助設計者完成資料庫的劃分。
資料庫完整性可通過儲存過程、宣告性參照完整性(dri)、
資料型別、約束、規則、預設值,以及觸發器來實現。在資料庫內,這些功能各以特有的方式發揮作用。綜合利用這些完整性功能,可以使資料庫靈活,易於管理,而且很安全。
資料完整性概念分為幾個方面。
◆ 表域完整性
通過主鍵來強制表的域完整性。
◆ 引用完整性
利用參照來加強表之間的邏輯關係。
◆ 數值域完整性
任何輸入的資料在型別和範圍上必須與指定的資料型別相匹配,只有當某列被說明允許null值,才允許向該列輸入null。
生成資料庫之後,應進行資料庫效能測試,以便優化資料庫的設計,因此需要生成測試資料,由於是效能測試,資料的規範性要求不高。通過powerdesigner可方便地生成測試資料(generate test data),完成效能測試。
對父表的insert、update、delete操作沒有限制。
對父表操作的約束:
父表的insert操作,對m-o約束,父表中間的記錄可以沒有任何約束地新增到表中,因為這種約束中不一定必須有子女。
父表的鍵值修改操作,只有在子表中其所有的子女對應均做修改後,才能修改,即一般採用級聯更新的方法。
父表的刪除,父親只有在其所有子女均被刪除或重新分配之後該父親才能被刪除。
強制對可選(m-o)約束
PowerDesigner模型設計
深藍居 部落格 sybase powerdesigner 簡稱pd 是最強大的資料庫建模工具,市場占有率第一,功能也確實十分強大,現在最新版本是15.1,已經支援最新的sql server 2008等資料庫,另外在pd15中還增加了好幾種模型,介面也得到了進一步的美化,做出來的圖更漂亮了。下面是乙個...
PowerDesigner設計實踐
一 資料模型 1 概念資料模型 cdm 1 cdm表現資料庫的全部邏輯的結構,與任何的軟體或資料儲藏結構無關。乙個概念模型經常包括在物理資料庫中仍然不實現的資料物件。它給執行計畫或業務活動的資料乙個正式表現方式。不考慮物理實現細節,只考慮實體之間的關係。2 概念資料模型的內容包括重要的實體及實體之間...
PowerDesigner模型設計
原文 緒論 sybase powerdesigner 簡稱pd 是最強大的資料庫建模工具,市場占有率第一,功能也確實十分強大,現在最新版本是15.1,已經支援最新的sql server 2008等資料庫,另外在pd15中還增加了好幾種模型,介面也得到了進一步的美化,做出來的圖更漂亮了。下面是乙個在p...