14個資料庫的設計技巧

2022-05-09 04:54:07 字數 2798 閱讀 8792

隨著計算機技術越來越廣泛地應用於國民經濟的各個領域,在計算機硬體不斷微型化的同時,應用系統向著複雜化、大型化的方向發展。資料庫是整個系統的 核心,它的設計直接關係系統執行的效率和系統的穩定性。因此在軟體系統開發中,資料庫設計應遵循必要的資料庫正規化理論,以減少冗餘、保證資料的完整性與正 確性。只有在合適的資料庫產品上設計出合理的資料庫模型,才能降低整個系統的程式設計和維護難度,提高系統的實際執行效率。雖然對於小專案或中等規模的專案 開發人員可以很容易地利用正規化理論設計出一套符合要求的資料庫,但對於乙個包含大型資料庫的軟體專案,就必須有一套完整的設計原則與技巧。

一、成立資料小組

大型資料庫資料元素多,在設計上有必要成立專門的資料小組。由於資料庫設計者不一定是使用者,對系統設計中的資料元素不可能考慮周全,資料庫設計出來後,往往難以找到所需的庫表,因此資料小組最好由熟悉業務的專案骨幹組成。

數 據小組的職能並非是設計資料庫,而是通過需求分析,在參考其他相似系統的基礎上,提取系統的基本資料元素,擔負對資料庫的審核。審核內容包括審核新的資料 庫元素是否完全、能否實現全部業務需求;對舊資料庫(如果存在舊系統)的分析及資料轉換;資料庫設計的審核、控制及必要調整。

二、設計原則

1.規範命名。所有的庫名、表名、網域名稱必須遵循統一的命名規則,並進行必要說明,以方便設計、維護、查詢。

2.控制欄位的引用。在設計時,可以選擇適當的資料庫設計管理工具,以方便開發人員的分布式設計和資料小組的集中審核管理。採用統一的命名規則,如果設計的字段已經存在,可直接引用;否則,應重新設計。

3.庫表重複控制。在設計過程中,如果發現大部分欄位都已存在,開發人員應懷疑所設計的庫表是否已存在。通過對欄位所在庫表及相應設計人員的查詢,可以確認庫表是否確實重複。

4.併發控制。設計中應進行併發控制,即對於同乙個庫表,在同一時間只有乙個人有控制權,其他人只能進行查詢。

5.必要的討論。資料庫設計完成後,資料小組應與相關人員進行討論,通過討論來熟悉資料庫,從而對設計中存在的問題進行控制或從中獲取資料庫設計的必要資訊。

6.資料小組的審核。庫表的定版、修改最終都要通過資料小組的審核,以保證符合必要的要求。

7.標頭檔案處理。每次資料修改後,資料小組要對相應的標頭檔案進行修改(可由管理軟體自動完成),並通知相關的開發人員,以便進行相應的程式修改。

三、設計技巧

1.分類拆分資料量大的表。對於經常使用的表(如某些參數列或**對照表),由於其使用頻率很高,要儘量減少表中的記錄數量。例如,銀行的戶主賬表 原來設計成一張表,雖然可以方便程式的設計與維護,但經過分析發現,由於資料量太大,會影響資料的迅速定位。如果將戶主賬表分別設計為活期戶主賬、定期戶 主賬及對公戶主賬等,則可以大大提高查詢效率。

2.索引設計。對於大的資料庫表,合理的索引能夠提高整個資料庫的操作效率。在索引設計 中,索引欄位應挑選重複值較少的字段;在對建有復合索引的字段進行檢索時,應注意按照復合索引字段建立的順序進行。例如,如果對乙個5萬多條記錄的流水表 以日期和流水號為序建立復合索引,由於在該表中日期的重複值接近整個表的記錄數,用流水號進行查詢所用的時間接近3秒;而如果以流水號為索引字段建立索引 進行相同的查詢,所用時間不到1秒。因此在大型資料庫設計中,只有進行合理的索引字段選擇,才能有效提高整個資料庫的操作效率。

3.數 據操作的優化。在大型資料庫中,如何提高資料操作效率值得關注。例如,每在資料庫流水表中增加一筆業務,就必須從流水控制表中取出流水號,並將其流水號的 數值加一。正常情況下,單筆操作的反應速度尚屬正常,但當用它進行批量業務處理時,速度會明顯減慢。經過分析發現,每次對流水控制表中的流水號數值加一時 都要鎖定該錶,而該錶卻是整個系統操作的核心,有可能在操作時被其他程序鎖定,因而使整個事務操作速度變慢。對這一問題的解決的辦法是,根據批量業務的總 筆數批量申請流水號,並對流水控制表進行一次更新,即可提高批量業務處理的速度。另乙個例子是對插表的優化。對於大批量的業務處理,如果在插入資料庫表時 用普通的insert語句,速度會很慢。其原因在於,每次插表都要進行一次i/o操作,花費較長的時間。改進後,可以用put語句等緩衝區形式等滿頁後再 進行i/o操作,從而提高效率。對大的資料庫表進行刪除時,一般會直接用delete語句,這個語句雖然可以進行小表操作,但對大表卻會因帶來大事務而導 致刪除速度很慢甚至失敗。解決的方法是去掉事務,但更有效的辦法是先進行drop操作再進行重建。

4.資料庫引數的調整。資料庫引數的調整是乙個經驗不斷積累的過程,應由有經驗的系統管理員完成。以informix資料庫為例,記錄鎖的數目太少會造成鎖表的失敗;邏輯日誌的檔案數目太少會造成插入大表失敗等,這些問題都應根據實際情況進行必要的調整。

5.必要的工具。在整個資料庫的開發與設計過程中,可以先開發一些小的應用工具,如自動生成庫表的標頭檔案、插入資料的初始化、資料插入的函式封裝、錯誤跟蹤或自動顯示等,以此提高資料庫的設計與開發效率。

6. 避免長事務。對單個大表的刪除或插入操作會帶來大事務,解決的辦法是對引數進行調整,也可以在插入時對檔案進行分割。對於乙個由一系列小事務順序操作共同 構成的長事務(如銀行交易系統的日終交易),可以由一系列操作完成整個事務,但其缺點是有可能因整個事務太大而使不能完成,或者,由於偶然的意外而使事務 重做所需的時間太長。較好的解決方法是,把整個事務分解成幾個較小的事務,再由應用程式控制整個系統的流程。這樣,如果其中某個事務不成功,則只需重做該 事務,因而既可節約時間,又可避免長事務。

7.適當超前。計算機技術發展日新月異,資料庫的設計必須具有一定前瞻性,不但要滿足當前的應用要求,還要考慮未來的業務發展,同時必須有利於擴充套件或增加應用系統的處理功能。

相對於中小型資料庫,大型資料庫的設計與開發要複雜得多,因此在設計、開發過程中,除了要遵循資料庫正規化理論、增加系統的一致性和完整性外,還要 在總體上根據具體情況進行分布式設計,緊緊把握集中控制、統一審核的基本原則,保證資料庫設計結構緊湊、分布平衡、定位迅速。在資料庫操作上,要採用一定 的技巧提高整個應用系統的執行效率,並注意適當超前,以適應不斷變化的應用及系統發展的要求。

資料庫設計中的14個技巧

1.原始單據與實體之間的關係 可以是一對 一 一對多 多對多的關係。在一般情況下,它們是一對一的關係 即一張原始單據對應且只對應乙個實體。在特殊情況下,它們可能是一對多或多對一的關係,即一張原始單據對應多個實體,或多張原始單據對應乙個實體。這裡的實體可以理解為基本表。明確這種對應關係後,對我們設計錄...

資料庫設計中的14個技巧

1.原始單據與實體之間的關係 可以是一對 一 一對多 多對多的關係。在一般情況下,它們是一對一的關係 即一張原始單據對應且只對應乙個實體。在特殊情況下,它們可能是一對多或多對一的關係,即一張原始單據對應多個實體,或多張原始單據對應乙個實體。這裡的實體可以理解為基本表。明確這種對應關係後,對我們設計錄...

14個MySQL Mysql的14個資料庫優化方法

mysql的14個資料庫優化方法 閱讀 107 在php 開發中,我們經常用到mysql資料庫,對mysql資料庫的應用,不僅僅是能用這麼簡單,為了使我們的程式發揮最大的效率,而資料庫又是 速度的最大貧瘠,我們更應該從資料庫的角度來優化分析。下面談談在mysql資料庫使用過程中我們應該怎麼樣優化資料...