天天看點

采用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 設計資料庫實體圖

用 PowerDesigner 設計資料庫實體圖,包括多個對象,如表(Table)、字段(Column)、域(Domain)等。設計時主要在 PowerDesigner 的Dictionary和 Database 兩個菜單中。

表(Table)

       表是資料存儲的一個邏輯對象,包括其它對象如字段(Column)、 索引 (Index)、觸發器( Trigger )、存儲過程(Procedure)等,表的優化設計有分割等技術,對于表的存儲,如果通路資料量大,通路頻率高則可考慮将表放在不同的存儲(Storage)上。        在設計表時,應該估算表的大小和增長量,便于建立資料庫時配置設定資料庫空鍵,這樣減少了磁盤碎片的産生。        在關系資料庫中設計主鍵時,采用有意義的主鍵是緻命的錯誤。如果使用者決定改變字段的商業含義,則需要在所有使用到該資訊的地方進行修改。主鍵的作用應是保持唯一性和作為外鍵使用。任何對主鍵的修改會導緻巨大的資料庫維護工作量,顯然這是不合适宜的設計。就關系資料庫而言,設計主鍵政策采用的是代理主鍵的方法。

       設計主鍵時應該避免“熱點”現象,但也需要分析具體的應用系統的并發使用者而定。

字段(Column)

       定義一個字段主要有字段名、字段類型及長度、是否主外鍵、是否空、限制、 預設 值、域等。        變長和定長的資料類型在資料庫設計中讨論比較多,作為一般原則,如果預期某列中的資料範圍變化很大,但變化并不頻繁,那末對這樣的列使用變長資料類型最為适宜。        決定行長時,既不能太浪費,又不能太吝惜。考慮到将來的需要,并且意識到,如果增加行長而沒有改變一頁中容納的行數,那末增加的空間就等于免費使用。        設計時,字段盡量使用域,友善維護字段的類型。每個字段最好将 預設 值加上,因為在資料庫查詢中,有NULL值會影響查詢的性能。        通過CHECK限制可限制字段的取值。

域(Domain)

簡單地說,是使用者自定義類型,但域還可以定義它的取值範圍或 預設 值,采用域減少了維護字段類型的工作量,也減少資料的不一緻性。

參照(Reference)

參照在資料庫設計中是一個比較複雜的問題,它是實作資料的完整性主要要素之一,詳細論述參考後面資料的限制。 在 PowerDesigner 中,可對參照完整性進行各項設定,參照的基數從0到n,對修改和删除限制可分别設定為None、Restrict、Cascade、Set Null、Set Default。由于INSERT包含在UPDATE操作中,是以沒有單獨的INSERT限制。 限制的不同設定産生不同的效果,以修改為例(删除相同): None:父表修改,子表不影響。 Restrict:父表修改,如果子表存在,則出錯。 Cascade:父表修改,如果子表存在,則相應的修改。 Set Null:父表修改,如果子表存在,則相應置空。 Set Default:父表修改,如果子表存在,則相應置 預設 值。

索引 (Index)

       索引 是優化查詢時采用一種資料庫技術, 索引 有簇 索引 、非簇 索引 、唯一 索引 等。        設計 索引 時,要注意 索引 寬度,盡量減少 索引 的寬度。 索引 的寬度不是由字段的多少決定的,而是由字段的長度來決定。對于窄 索引 關鍵字,在每一 索引 頁上放置更多的關鍵字和指針,這樣就能花銷更少的I/O找到資料。        對于複合 索引 ,選擇首列相當重要,否則可能不能利用該 索引 ,當利用複合 索引 查詢時。必須確定查詢從首列開始。        索引 還有一個填充因子(FillFactor),填充因子的大小視表的資料增長量和主鍵定義的情況而定。

觸發器和存儲過程(Trigger&&Procedure)

       觸發器在維護資料完整性起着重要作用,它比參照更具靈活性, 也能實作三層結構中資料層的業務規則。        存儲過程是采用 SQL 及流程控制語句編寫的完成某種業務的腳本。存儲過程在資料處理上具有處理速度快、處理靈活等優點。 但是,存儲過程極大地增加了與資料庫之間的耦合,在資料庫遷移時,需要重寫存儲過程,進而增加了版本維護的工作量。如果資料庫要求從遷移性考慮,應盡量避免使用存儲過程或者觸發器。        如果不人為修改 PowerDesigner 的觸發器,其遷移性 PowerDesigner 自動解決。

存儲(Storage)

不同的資料庫中有不同的概念,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),完成性能測試。

資料的限制

O-O 限制

對父表的INSERT、UPDATE、DELETE操作沒有限制。

M-O 限制

對父表操作的限制: 父表的INSERT操作,對M-O限制,父表中間的記錄可以沒有任何限制地添加到表中,因為這種限制中不一定必須有子女。     父表的鍵值修改操作,隻有在子表中其所有的子女對應均做修改後,才能修改,即一般采用級聯更新的方法。     父表的删除,父親隻有在其所有子女均被删除或重新配置設定之後該父親才能被删除。 強制對可選(M-O)限制