隨筆 - 154  文章 - 60  trackbacks - 0
          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          聲明:

          該blog是為了收集資料,認識朋友,學習、提高技術,所以本blog的內容除非聲明,否則一律為轉載?。?br />
          感謝那些公開自己技術成果的高人們?。?!

          支持開源,尊重他人的勞動!!

          常用鏈接

          留言簿(3)

          隨筆分類(148)

          隨筆檔案(143)

          收藏夾(2)

          其他

          學習(技術)

          觀察思考(非技術)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          數據庫設計理論

           

          一、           數據庫設計的幾個原則

          一個好的數據庫產品不等于就是一個好的應用系統,如果不能設計一個合理的數據庫模型,不僅會增加客戶端與服務器端的編程和維護難度,而且會影響系統實際運行的性能。因此,要想開發出一款理想的數據庫產品應遵循以下設計準則:

          (1)       命名規范化

          不同的數據庫產品對對象的命名有不同的要求。數據庫中的各種對象的命名以及后臺程序的代碼編寫應采用大小寫敏感的字母形式,各種對象命名長度不要超過30個字符,這樣便于應用系統適應不同的數據庫。

          (2)       慎用游標(Cursor)

          對多表和大表定義的游標(大的數據集合)而言,使用游標逐行遍歷數據很容易使程序進入漫長的等待甚至死機,因此在使用游標時,可以考慮建立一個臨時表,將符合條件的數據行轉入臨時表中,再對臨時表定義游標進行操作,這時性能會得到明顯提高。

          (3)       索引(Index)的使用

          索引一般用于快速訪問表中的數據。大型數據庫有兩種索引,即簇索引和非簇索引。添加任何一種索引均能提高按索引列查詢的速度,但會降低插入、更新、刪除操作的性能,尤其是當填充因子(Fill Factor)較大時。所以,如果要對索引較多的表進行頻繁的插入、更新、刪除操作,建立表和索引時應該設置較小的填充因子,以便在各項數據頁中留下較多的自由空間,減少頁分割及重新重新組織的工作,這樣才能夠提高性能。

          (4)       數據的一致性和完整性

          為了保證數據庫的一致性和完整性,設計人員往往會設計過多的表間關聯,盡可能地降低數據的冗余。但是,表間關聯是一種強制性措施,建立后,對父表和子表的插入、更新、刪除操作均要占用系統的開銷。此外,最好不要用Identify屬性字段作為主鍵與子表關聯。如果數據冗余低,數據的完整性容易得到保證,但增加了表間連接查詢的操作,因此,為了提高系統的響應時間,合理的數據冗余也是必要的。

          (5)       事務的使用

          事務是必須一次性完成的一組操作。雖然這些操作是單個的操作,但數據庫系統能夠保證這組操作要么全部都完成,要么一點都不做。正是大型數據庫的這一特性,使得數據的完整性得到了極大的保證。

          (6)       數據庫性能調整

          在計算機硬件配置和網絡設計確定的情況下,影響到應用系統性能的因素主要是數據庫性能和客戶端程序設計。大多數數據庫設計員采用兩步法進行數據庫設計:首先進行邏輯設計,而后進行物理設計。數據庫邏輯設計去除了所有冗余數據,提高了數據吞吐速度,保證了數據的完整性,清楚地表達數據元素之間的關系。而對于多表之間的關聯查詢(尤其是大數據表)時,其性能將會降低,同時也提高了客戶端程序的編程難度,因此,物理設計需折中考慮,根據業務規則,確定關聯表的數據量大小、數據項的訪問頻度,對此類數據表頻繁的關聯查詢應適當提高數據冗余設計。

          (7)       數據類型的選擇

          數據類型的合理選擇對于數據庫的性能和操作具有很大的影響。

          ?         Identify字段不要作為表的主鍵與其他表關聯,這將會影響到該表的數據遷移。

          ?         Text和Image字段屬指針型數據,主要用來存放二進制大型對象(BLOB)。這類數據的操作相比其他數據類型較慢,因此要避開使用。

          ?         日期型字段的優點是有眾多的日期函數支持,因此,在日期的大小比較、加減操作上非常簡單。但是,按照日期作為條件的查詢操作也要用函數,相比其他數據類型在速度上就慢許多。這是因為用函數作為查詢的條件時,服務器無法用先進的性能策略來優化查詢,只能進行表掃描遍歷每行。

          二、           數據庫設計的基本步驟

          對于數據庫設計來說,比較統一的看法是分為5個步驟:需求分析,概念結構設計,邏輯結構設計,物理設計,數據實施和維護。

          1.     需求分析

          要設計一個良好的數據庫系統,首先要明確應用環境對系統的要求。因此,對應用環境的需求收集和分析就是數據庫設計的第一步。需求階段收集到的基礎數據和一組數據流程圖是進行下一步概念設計的基礎。需求分析包括以下幾個方面:

          (1)       收集資料

          收集資料是數據庫設計人員和用戶共同完成的任務。強調各級用戶的參與是數據庫應用系統設計的特點之一。

          (2)       分析整理

          在大量資料收集完成以后,就要對資料進行分析和整理。分析的過程是對所收集到的數據進行抽象的過程。

          (3)       數據流程圖

          在系統分析中通常采用數據流程圖(Data Flow Diagram)來描述系統的數據流向和對數據的處理功能。

          (4)       數據字典(Data Dictionary)

          除了一套數據流程圖外,還要從原始的數據資料中分析整理出下述數據信息:數據元素的名稱、同義詞、性質、取值范圍、提供者、使用者、控制權限、保密要求、使用頻率、數據量、數據之間聯系的語義說明、各個部門對數據的要求以及數據處理要求。

          (5)       用戶確認

          數據流程圖集和數據字典的內容必須返回給用戶,并且用非專業術語與用戶交流。

          需求分析階段的成果要形成文檔資料,至少包括各項業務的數據流程圖及有關說明和對各類數據描述的集合,即數據字典。

          2.     概念結構設計

          將需求分析得到的用戶需求抽象為信息結構設計及概念模型的過程就是概念結構設計,它是整個數據庫設計的關鍵。概念建模的過程包括定義實體集、定義聯系和定義屬性。當這3種成分確定之后,就可以用E-R方法來進行數據庫的概念設計。在設計完全局的E-R圖之后,要盡量消除冗余。

          3.     邏輯結構設計

          數據庫邏輯設計的任務是將概念結構設計階段設計好的基本E-R圖,轉換成特定DBMS所支持的數據模型的過程。這樣開始進入“實現設計”,需要考慮具體DBMS的性能,具體的數據模型特點。邏輯設計可分為E-R圖向關系模型的轉化、數據模型的優化和設計用戶子模式3個過程。

          4.     物理設計

          對于給定的邏輯數據模型選取一個最適合應用環境的物理結構的過程,稱為數據庫物理設計。數據庫的物理設計通常分為兩步:確定數據庫的物理結構,在關系數據庫中主要指存取方法與存儲結構:對物理結構進行評價,評價的重點的時間和空間效率。

          5.     數據庫的實施和維護

          數據庫的實施和維護過程可分數據的載入和應用程序的調試、數據庫的試運行和數據庫的維護與運行。

           

          posted on 2008-02-18 09:47 lk 閱讀(421) 評論(0)  編輯  收藏 所屬分類: DB
          主站蜘蛛池模板: 通渭县| 肥乡县| 特克斯县| 达尔| 云龙县| 河东区| 马边| 华亭县| 宕昌县| 尉犁县| 雅江县| 泗阳县| 房产| 罗江县| 开原市| 温泉县| 得荣县| 凤山市| 韶山市| 资阳市| 财经| 灵璧县| 和田市| 平乡县| 米易县| 平罗县| 高尔夫| 行唐县| 丰镇市| 嫩江县| 邵东县| 伊川县| 新密市| 五河县| 河南省| 克什克腾旗| 龙山县| 沂源县| 饶河县| 黄平县| 明光市|