數(shù)據(jù)庫完整的設計原則與技巧_第1頁
數(shù)據(jù)庫完整的設計原則與技巧_第2頁
數(shù)據(jù)庫完整的設計原則與技巧_第3頁
數(shù)據(jù)庫完整的設計原則與技巧_第4頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、數(shù)據(jù)庫寶典概要:數(shù)據(jù)庫是企業(yè)信息的核心,其應用水平的高低直接影響到企業(yè)管理水平。選擇了一個高性能的數(shù)據(jù)庫產(chǎn)品不等于就有一個好的數(shù)據(jù)庫應用系統(tǒng),如果數(shù)據(jù)庫系統(tǒng)設計不合理,不僅會增加客戶端和服務器端程序的編程和維護的難度,而且還會影響系統(tǒng)實際運行的性能。主要涉及數(shù)據(jù)庫各種性能優(yōu)化技術(shù),從而避免磁盤I/O瓶頸、減少CPU利用率、大內(nèi)存的設置和減少資源競爭。大型數(shù)據(jù)庫的設計與開發(fā)要復雜得多,因此在設計、開發(fā)過程中,除了要遵循數(shù)據(jù)庫范式理論、增加系統(tǒng)的一致性和完整性外,還要在總體上根據(jù)具體情況進行分布式設計,緊緊把握集中控制、統(tǒng)一審核的基本原則,保證數(shù)據(jù)庫設計結(jié)構(gòu)緊湊、分布平衡、定位迅速。數(shù)據(jù)庫設計考慮

2、工作一、 成立數(shù)據(jù)小組 大型數(shù)據(jù)庫數(shù)據(jù)元素多,在設計上有必要成立專門的數(shù)據(jù)小組。由于數(shù)據(jù)庫設計者不一定是使用者,對系統(tǒng)設計中的數(shù)據(jù)元素不可能考慮周全,數(shù)據(jù)庫設計出來后,往往難以找到所需的庫表,因此數(shù)據(jù)小組最好由熟悉業(yè)務的項目骨干組成。 數(shù)據(jù)小組的職能并非是設計數(shù)據(jù)庫,而是通過需求分析,在參考其他相似系統(tǒng)的基礎上,提取系統(tǒng)的基本數(shù)據(jù)元素,擔負對數(shù)據(jù)庫的審核。審核內(nèi)容包括審核新的數(shù)據(jù)庫元素是否完全、能否實現(xiàn)全部業(yè)務需求;對舊數(shù)據(jù)庫(如果存在舊系統(tǒng))的分析及數(shù)據(jù)轉(zhuǎn)換;數(shù)據(jù)庫設計的審核、控制及必要調(diào)整。二、設計原則規(guī)范命名。所有的庫名、表名、域名必須遵循統(tǒng)一的命名規(guī)則,并進行必要說明,以方便設計、維護

3、、查詢。控制字段的引用。在設計時,可以選擇適當?shù)臄?shù)據(jù)庫設計管理工具,以方便開發(fā)人員的分布式設計和數(shù)據(jù)小組的集中審核管理。采用統(tǒng)一的命名規(guī)則,如果設計的字段已經(jīng)存在,可直接引用;否則,應重新設計。庫表重復控制。在設計過程中,如果發(fā)現(xiàn)大部分字段都已存在,開發(fā)人員應懷疑所設計的庫表是否已存在。通過對字段所在庫表及相應設計人員的查詢,可以確認庫表是否確實重復。并發(fā)控制。設計中應進行并發(fā)控制,即對于同一個庫表,在同一時間只有一個人有控制權(quán),其他人只能進行查詢。必要的討論。數(shù)據(jù)庫設計完成后,數(shù)據(jù)小組應與相關(guān)人員進行討論,通過討論來熟悉數(shù)據(jù)庫,從而對設計中存在的問題進行控制或從中獲取數(shù)據(jù)庫設計的必要信息。數(shù)

4、據(jù)小組的審核。庫表的定版、修改最終都要通過數(shù)據(jù)小組的審核,以保證符合必要的要求。頭文件處理。每次數(shù)據(jù)修改后,數(shù)據(jù)小組要對相應的頭文件進行修改(可由管理軟件自動完成),并通知相關(guān)的開發(fā)人員,以便進行相應的程序修改。三、設計技巧(注:以下例如都是從網(wǎng)絡上查到的例子,有可能不恰當,請指出改正)1分類拆分數(shù)據(jù)量大的表。對于經(jīng)常使用的表(如某些參數(shù)表或代碼對照表),由于其使用頻率很高,要盡量減少表中的記錄數(shù)量。(分好主從關(guān)系表的關(guān)系)例如,銀行的戶主賬表原來設計成一張表,雖然可以方便程序的設計與維護,但經(jīng)過分析發(fā)現(xiàn),由于數(shù)據(jù)量太大,會影響數(shù)據(jù)的迅速定位。如果將戶主賬表分別設計為活期戶主賬、定期戶主賬及對

5、公戶主賬等,則可以大大提高查詢效率。2索引設計。對于大的數(shù)據(jù)庫表,合理的索引能夠提高整個數(shù)據(jù)庫的操作效率。在索引設計中,索引字段應挑選重復值較少的字段;在對建有復合索引的字段進行檢索時,應注意按照復合索引字段建立的順序進行。例如,如果對一個萬多條記錄的流水表以日期和流水號為序建立復合索引,由于在該表中日期的重復值接近整個表的記錄數(shù),用流水號進行查詢所用的時間接近秒;而如果以流水號為索引字段建立索引進行相同的查詢,所用時間不到秒。因此在大型數(shù)據(jù)庫設計中,只有進行合理的索引字段選擇,才能有效提高整個數(shù)據(jù)庫的操作效率。3數(shù)據(jù)操作的優(yōu)化。在大型數(shù)據(jù)庫中,如何提高數(shù)據(jù)操作效率值得關(guān)注。將單元業(yè)務盡量一次

6、提交執(zhí)行,減少提交次數(shù),這樣減少了I/O操作。建議用ORM框架,個人建議用微軟的EF4.1(linq to entity)。4必要的工具。在整個數(shù)據(jù)庫的開發(fā)與設計過程中,可以先開發(fā)一些小的應用工具,如自動生成庫表的頭文件、插入數(shù)據(jù)的初始化、數(shù)據(jù)插入的函數(shù)封裝、錯誤跟蹤或自動顯示等,以此提高數(shù)據(jù)庫的設計與開發(fā)效率。(自己開發(fā)了一部分工具)5避免長事務。對單個大表的刪除或插入操作會帶來大事務,較好的解決方法是,把整個事務分解成幾個較小的事務,再由應用程序控制整個系統(tǒng)的流程。這樣,如果其中某個事務不成功,則只需重做該事務,因而既可節(jié)約時間,又可避免長事務。6適當超前。計算機技術(shù)發(fā)展日新月異,數(shù)據(jù)庫的

7、設計必須具有一定前瞻性,不但要滿足當前的應用要求,還要考慮未來的業(yè)務發(fā)展,同時必須有利于擴展或增加應用系統(tǒng)的處理功能。數(shù)據(jù)庫設計概要:基于第三范式的數(shù)據(jù)庫表的基本設計,建立主鍵和索引的策略和方案,然后從數(shù)據(jù)庫表的擴展設計和庫表對象的放置等角度概述了數(shù)據(jù)庫管理系統(tǒng)的優(yōu)化方案。 1. 基本表的設計規(guī)范是第三范式(3NF)。第三范式的基本特征是非主鍵屬性只依賴于主鍵屬性?;诘谌妒降臄?shù)據(jù)庫表設計具有很多優(yōu)點:一是消除了冗余數(shù)據(jù),節(jié)省了磁盤存儲空間;二是有良好的數(shù)據(jù)完整性限制,即基于主外鍵的參照完整限制和基于主鍵的實體完整性限制,這使得數(shù)據(jù)容易維護,也容易移植和更新;三是數(shù)據(jù)的可逆性好,在做連接(J

8、oin)查詢或者合并表時不遺漏、也不重復;四是因消除了冗余數(shù)據(jù)(冗余列),在查詢(Select)時每個數(shù)據(jù)頁存的數(shù)據(jù)行就多,這樣就有效地減少了邏輯I/O,每個Cash存的頁面就多,也減少物理I/O;五是對大多數(shù)事務(Transaction)而言,運行性能好;六是物理設計(Physical Design)的機動性較大,能滿足日益增長的用戶需求。2. 主鍵(Primary Key):主鍵被用于復雜的SQL語句時,頻繁地在數(shù)據(jù)訪問中被用到。一個表只有一個主鍵。主鍵應該有固定值(不能為Null或缺省值,要有相對穩(wěn)定性),不含代碼信息,易訪問。把常用的列作為主鍵才有意義。短主鍵最佳(小于25bytes)

9、,主鍵的長短影響索引的大小,索引的大小影響索引頁的大小,從而影響磁盤I/O。主鍵分為自然主鍵和人為主鍵。自然主鍵由實體的屬性構(gòu)成,自然主鍵可以是復合性的,在形成復合主鍵時,主鍵列不能太多,復合主鍵使得Join*作復雜化、也增加了外鍵表的大小。人為主鍵是,在沒有合適的自然屬性鍵、或自然屬性復雜或靈敏度高時,人為形成的。人為主鍵一般是整型值(滿足最小化要求),沒有實際意義,也略微增加了表的大??;但減少了把它作為外鍵的表的大小。 3. 外鍵(Foreign Key):外鍵的作用是建立關(guān)系型數(shù)據(jù)庫中表之間的關(guān)系(參照完整性),主鍵只能從獨立的實體遷移到非獨立的實體,成為后者的一個屬性,被稱為外鍵。4.

10、 索引(Index):利用索引優(yōu)化系統(tǒng)性能是顯而易見的,對所有常用于查詢中的Where子句的列和所有用于排序的列創(chuàng)建索引,可以避免整表掃描或訪問,在不改變表的物理結(jié)構(gòu)的情況下,直接訪問特定的數(shù)據(jù)列,這樣減少數(shù)據(jù)存取時間;利用索引可以優(yōu)化或排除耗時的分類*作;把數(shù)據(jù)分散到不同的頁面上,就分散了插入的數(shù)據(jù);主鍵自動建立了唯一索引,因此唯一索引也能確保數(shù)據(jù)的唯一性(即實體完整性);索引碼越小,定位就越直接;新建的索引效能最好,因此定期更新索引非常必要。索引也有代價:有空間開銷,建立它也要花費時間,在進行Insert、Delete和Update*作時,也有維護代價。索引有兩種:聚族索引和非聚族索引。一

11、個表只能有一個聚族索引,可有多個非聚族索引。使用聚族索引查詢數(shù)據(jù)要比使用非聚族索引快。在建索引前,應利用數(shù)據(jù)庫系統(tǒng)函數(shù)估算索引的大小。 5. 鎖:鎖是并行處理的重要機制,能保持數(shù)據(jù)并發(fā)的一致性,即按事務進行處理;系統(tǒng)利用鎖,保證數(shù)據(jù)完整性。因此,我們避免不了死鎖,但在設計時可以充分考慮如何避免長事務,減少排它鎖時間,減少在事務中與用戶的交互,杜絕讓用戶控制事務的長短;要避免批量數(shù)據(jù)同時執(zhí)行,尤其是耗時并用到相同的數(shù)據(jù)表。鎖的征用:一個表同時只能有一個排它鎖,一個用戶用時,其它用戶在等待。若用戶數(shù)增加,則Server的性能下降,出現(xiàn)“假死”現(xiàn)象。如何避免死鎖呢?從頁級鎖到行級鎖,減少了鎖征用;給小表增加無效記錄,從頁級鎖到行級鎖沒有影響,若在同一頁內(nèi)競爭有影響,可選擇合適的聚族索引把數(shù)據(jù)分配到不同的頁面;創(chuàng)建冗余表;保持事務簡短;同一批處理應該沒有網(wǎng)絡交互。6. 查詢優(yōu)化規(guī)則 盡可能少的行; 避免排序或為盡可能少的行排序,若要做大量數(shù)據(jù)排序,最好將相關(guān)數(shù)據(jù)放在臨時表中*作;用簡單的鍵(列)排序,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論