登錄

數(shù)據(jù)庫設計

百科 > 信息管理術語 > 數(shù)據(jù)庫設計

1.什么是數(shù)據(jù)庫設計[1]

數(shù)據(jù)庫設計是指對于一個給定的應用環(huán)境,構造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),使之能夠有效地存儲數(shù)據(jù),滿足各種用戶的應用需求。

2.數(shù)據(jù)庫設計的任務[2]

數(shù)據(jù)庫設計的任務是根據(jù)應用系統(tǒng)業(yè)務信息需求、處理需求及數(shù)據(jù)庫的支持環(huán)境,設計出數(shù)據(jù)模式(包括外模式、邏輯模式及內模式)以及相應的應用程序。

數(shù)據(jù)庫設計有兩個最重要的目標,即滿足應用功能需求和良好的數(shù)據(jù)庫性能。滿足應用功能需求,主要是指把用戶當前應用需求以及可預知的將來應用需求所需要的數(shù)據(jù)及其聯(lián)系能全部準確地存放在數(shù)據(jù)庫中,在滿足用戶性能要求的前提下根據(jù)用戶需嗄對數(shù)據(jù)進行增、刪、改、查等操作。良好的數(shù)據(jù)庫性能是指數(shù)據(jù)庫應有良好的存儲結構,良好的數(shù)據(jù)完整性、數(shù)據(jù)一致性以及安全性等。

3.數(shù)據(jù)庫設計的內容[2]

根據(jù)設計任務,數(shù)據(jù)庫設計一般包括數(shù)據(jù)庫的結構設計和行為設計兩方面內容.數(shù)據(jù)庫結構設計是指系統(tǒng)整體邏輯模式與子模式的設計,是對數(shù)據(jù)的分析設計;數(shù)據(jù)咋的行為設計是指施加在數(shù)據(jù)庫上的動態(tài)操作的設計.是對應用系統(tǒng)功能的設汁。在設汁的過程中,應該把對數(shù)據(jù)庫的結構設計和行為設計兩方面緊密結合起米,將這兩方面的需求分析,抽象、設計及實現(xiàn)在各個階段同時進行、互相參照、互相補充.不斷完善。

數(shù)據(jù)庫設計結果不是唯一的,針對同一個業(yè)務需求,不同的設計者可能沒汁出不同的數(shù)據(jù)庫模式.同時.由于在設計的過程中各種需求和制約因素的存存,數(shù)據(jù)庫的設計往往很難達到非常滿意的效果。經(jīng)常是滿足某方面的需要而降低另一方面的要求.因此需要設計者在各種因素中權衡取舍.從某種意義上說,數(shù)據(jù)庫設計技術也是一門藝術。

4.數(shù)據(jù)庫設計的方法[3]

1.直觀設計法

直觀設計法其實算不上什么方法,主要是指在數(shù)據(jù)庫設計的初始階段,數(shù)據(jù)庫設計人員根據(jù)自己的經(jīng)驗和水平,運用一定的技巧進行數(shù)據(jù)庫的設計,這種方法缺乏科學理論和工程方法的支持,很難保證設計的質量。

2.規(guī)范設計法

為改變設計人員直觀、僅憑經(jīng)驗的做法,人們又開始運用軟件工程的思想來設計數(shù)據(jù)庫,提出了各種設計準則和規(guī)程,對數(shù)據(jù)庫進行規(guī)范化設計。目前常用的規(guī)范設計法大多起源于“新奧爾良法”(1978年10月來自歐美國家的主要數(shù)據(jù)庫專家在美國的新奧爾良市討論數(shù)據(jù)庫設計的問題,并提出了相應的工作規(guī)范,因此得名),將數(shù)據(jù)庫設計分為:需求分析、概念設計、邏輯設計和物理設計4個階段。

3.計算機輔助設計法

計算機輔助設計法是指在數(shù)據(jù)庫設計的某些過程中模擬某一規(guī)范設計方法,通過人機交互實現(xiàn)部分設計,在這一過程中需要有相關知識和經(jīng)驗的人的支持。

4.自動化設計法

用來幫助設計數(shù)據(jù)庫或數(shù)據(jù)庫應用軟件的工具稱為自動化設計工具,例如:OracleDesigner、PowerDesigner等,它可以自動并加速完成設計數(shù)據(jù)庫系統(tǒng)的任務。用自動化設計工具完成設計數(shù)據(jù)庫系統(tǒng)任務的方法稱為自動化設計法。

5.數(shù)據(jù)庫設計的原則[4]

1.要善于識別與正確處理多對多的關系

若兩個實體之間存在多對多的關系,則應消除這種關系。消除的辦法是,在兩者之間增加第三個實體。這樣,原來一個多對多的關系,現(xiàn)在變?yōu)閮蓚€一對多的關系。要將原來兩個實體的屬性合理地分配到三個實體中去。這里的第三個實體,實質上是一個較復雜的關系,它對應一張基本表。一般來講,數(shù)據(jù)庫設計工具不能識別多對多的關系,但能處理多對多的關系。

2.索引(Index)的使用原則

創(chuàng)建索引一般有以下兩個目的,即維護被索引列的唯一性和提供快速訪問表中數(shù)據(jù)的策略。大型數(shù)據(jù)庫有兩種索引,即簇索引和非簇索引,一個沒有簇索引的表是按堆結構存儲數(shù)據(jù),所有的數(shù)據(jù)均添加在表的尾部,而建立了簇索引的表,其數(shù)據(jù)在物理上會按照簇索引鍵的順序存儲。一個表只允許有一個簇索引,因此根據(jù)B樹的結構可以認為添加任何一種索引均能提高按索引列查詢的速度,但會降低插入、更新、刪除操作的性能,尤其是當填充因子較大時。所以對索引較多的表進行頻繁的插入、更新、刪除操作時,建表和索引時應設置較小的填充因子,以便在各數(shù)據(jù)頁中留下較多的自由空間,減少頁分割及重新組織的工作。

3.數(shù)據(jù)的一致性和完整性

為了保證數(shù)據(jù)庫的一致性和完整性,設計人員往往會設計過多的表間關聯(lián)(Relation),盡可能地降低數(shù)據(jù)的冗余。表間關聯(lián)是一種強制性措施,建立后,對父表(Parent Table)和子表(ChiLdTable)的插入、更新、刪除操作均要占用系統(tǒng)的開銷。另外,最好不要用Identify屬性字段作為主鍵與子表關聯(lián)。如果數(shù)據(jù)冗余低,數(shù)據(jù)的完整性容易得到保證,但增加了表間連接查詢的操作。

為了提高系統(tǒng)的響應時間,合理的數(shù)據(jù)冗余也是必要的。使用規(guī)則(Rule)和約束(Check)來防止系統(tǒng)操作人員誤輸人造成的數(shù)據(jù)的錯誤是設計人員的另一種常用手段,但是,不必要的規(guī)則和約束也會占用系統(tǒng)的不必要開銷。需要注意的是,約束對數(shù)據(jù)的有效性驗證要比規(guī)則快。所有這些,設計人員在設計階段應根據(jù)系統(tǒng)操作的類型、對數(shù)據(jù)訪問的頻度加以均衡考慮。

4.事務的陷阱

事務是能一次性完成的一組操作。這些操作是單個的操作,數(shù)據(jù)庫能夠保證這組操作要么全部都完成,要么一點都不做。正是大型數(shù)據(jù)庫的這一特性,使得數(shù)據(jù)的完整性得到了極大的保證。

5.通俗地理解3個范式

通俗地理解3個范式,對于數(shù)據(jù)庫設計大有好處。在數(shù)據(jù)庫設計中,為了更好地應用3個范式,就必須通俗地理解3個范式。第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解。第二范式:2NF是對記錄的唯一性約束,要求記錄有唯一標識,即實體的唯一性。第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。

沒有冗余的數(shù)據(jù)庫設計可以做到。但是,沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時為了提高運行效率,就必須降低范式標準,適當保留冗余數(shù)據(jù)。具體做法是,在概念數(shù)據(jù)模型設計時遵守第三范式,降低范式標準的工作放到物理數(shù)據(jù)模型設計時考慮。降低范式就是增加字段,允許冗余。

6.正確認識數(shù)據(jù)冗余

主鍵與外鍵在多表中的重復出現(xiàn),不屬于數(shù)據(jù)冗余。這個概念必須清楚,事實上有許多人還不清楚。非鍵字段的重復出現(xiàn),才是數(shù)據(jù)冗余。而且是一種低級冗余,即重復性的冗余。高級冗余不是字段的重復出現(xiàn),而是字段的派生出現(xiàn)。

7.數(shù)據(jù)類型的選擇

數(shù)據(jù)類型的合理選擇對于數(shù)據(jù)庫的性能和操作具有很大的影響,有關這方面的書籍也有不少的闡述,這里主要介紹幾點經(jīng)驗。

Identify字段不要作為表的主鍵與其他表關聯(lián),這將會影響到該表的數(shù)據(jù)遷移。

Text和Image字段屬指針型數(shù)據(jù),主要用來存放二進制大型對象(BLOB)。這類數(shù)據(jù)的操作比其他數(shù)據(jù)類型要慢,因此要避開使用。但是在某些場合使用二進制對象字段來存儲不定長度的海量數(shù)據(jù)又是一個不錯的選擇。

8.信息隱藏

信息隱藏是軟件工程最重要的基本原則之一。簡單地說就是信息的作用域越小越好,只有需要直接使用它的模塊才能看到它。數(shù)據(jù)庫的透明度越大越好。使數(shù)據(jù)庫黑盒化,即透明度高的方法很多,除了設計上的局部化處理外,還可以利用DBMS的觸發(fā)器、存儲過程、函數(shù)等,把數(shù)據(jù)庫中無法簡化的復雜表關系封裝到黑盒子中,隱藏起來,特別是放到服務器端,其優(yōu)越性更是多方面的。

6.數(shù)據(jù)庫設計的特點[5]

數(shù)據(jù)庫設計的工作量大且比較復雜,是一項數(shù)據(jù)庫工程,也是一項軟件工程。數(shù)據(jù)庫設計的很多階段都可以對應于軟件工程的階段,軟件工程的某些方法和工具同樣也適合于數(shù)據(jù)庫工程。但由于數(shù)據(jù)庫設計是與用戶的業(yè)務需求緊密相關的,因此,它還有很多自己的特點。

1.綜合性

數(shù)據(jù)庫設計涉及的范圍很廣,包含了計算機專業(yè)知識及業(yè)務系統(tǒng)的專業(yè)知識,同時它還要解決技術及非技術兩方面的問題。

非技術問題包括組織機構的調整,經(jīng)營方針的改變,管理體制的變更等。這些問題都不是設計人員所能解決的,但新的管理信息系統(tǒng)要求必須有與之相適應的新的組織機構、新的經(jīng)營方針、新的管理體制,這就是一個較為尖銳的矛盾。另一方面,由于同時具備數(shù)據(jù)庫和業(yè)務兩方面知識的人很少,因此,數(shù)據(jù)庫設計者一般都需要花費相當多的時間去熟悉應用業(yè)務系統(tǒng)知識,這一過程有時很麻煩,可能會使設計人員產(chǎn)生厭煩情緒,從而影響系統(tǒng)的最后成功。而且,由于承擔部門和應用部門是一種委托雇傭關系,在客觀上存在著一種對立的勢態(tài),當在某些問題上意見不一致時會使雙方關系比較緊張。這在MIS(管理信息系統(tǒng))中尤為突出。

2.結構設計與行為設計相分離

結構設計是指數(shù)據(jù)庫的模式結構設計,包括概念結構、邏輯結構和存儲結構;行為設計是指應用程序設計,包括功能組織、流程控制等方面的設計。在傳統(tǒng)的軟件工程中,比較注重處理過程的設計,不太注重數(shù)據(jù)結構的設計。在一般的應用程序設計中只要可能就盡量推遲數(shù)據(jù)結構的設計,這種方法對于數(shù)據(jù)庫設計就不太適用。

數(shù)據(jù)庫設計與傳統(tǒng)的軟件工程的做法正好相反。數(shù)據(jù)庫設計的主要精力首先是放在數(shù)據(jù)結構的設計上,比如數(shù)據(jù)庫的表結構、視圖等。

7.數(shù)據(jù)庫設計的一般步驟[6]

1.確定創(chuàng)建數(shù)據(jù)庫的目的

設計數(shù)據(jù)庫和用戶的需求息息相關。首先,要明確創(chuàng)建數(shù)據(jù)庫的目的以及如何使用,用戶希望從數(shù)據(jù)庫得到什么信息,由此可以確定需要什么樣的表和定義哪些字段;其次,要與用戶進行交流,集體討論需要數(shù)據(jù)庫解決的問題,并描述需要數(shù)據(jù)庫完成的各項功能。

2.確定數(shù)據(jù)庫中需要的表

一個數(shù)據(jù)庫可能是由若干個表組成的,所以確定表是數(shù)據(jù)庫設計過程中最重要的環(huán)節(jié)。在設計表時,應該按以下設計原則對信息進行分類。

(1)每個表最好只包含關于一個主題的信息。

(2)同一個表中不允許出現(xiàn)同名字段。

(3)表間不應有重復信息。

(4)當一個表中的字段信息太多時,可根據(jù)使用頻率將其分解為兩個表。

3.確定字段

確定表的過程實際上就是定義字段的過程,字段是表的結構,記錄是表的內容。所以確定字段是設計數(shù)據(jù)庫不可缺少的環(huán)節(jié)。在定義每個表字段時,注意以下幾點。

(1)主題相關。將所有原始字段信息分配至各個表中,使每個字段直接與表的主題相關。

(2)信息獨立。字段信息不包含能夠使用推導和計算得出的數(shù)據(jù)信息。

(3)方便維護。除主鍵字段外,兩個不同表之間不能包含其他的相同字段。

4.確定主鍵

為了連接保存在不同表中的信息,使多表協(xié)同工作,在Access數(shù)據(jù)庫的表中必須要確定主鍵。主鍵是表中能夠唯一確定一個記錄的字段或字段集合。如“學號”字段可以作為“學生”表和“學生其他情況”表中的主鍵,而“學號”和“課程代碼”兩個字段可以共同承擔“成績”表中的主鍵責任。

5.確定表之間的關系

因為已經(jīng)將信息分配到各個表中,并且定義了主鍵字段,若想將保存在不同表中的相關信息重新組合到一起,必須定義表與表之間的關系,不同表之間確立了關系,才能進行相互訪問。

6.確定各個表的使用數(shù)據(jù)

表的結構設計達到設計要求后,就可針對各個表分別準備要存放的數(shù)據(jù)了,即常說的表中記錄內容。

7.確定數(shù)據(jù)的使用場所和管理手段

利用Access2003數(shù)據(jù)庫提供的查詢、報表、窗體等高級工具,根據(jù)實際使用要求,考慮在數(shù)據(jù)庫中創(chuàng)建哪些查詢,設計哪些打印報表,規(guī)劃輸入數(shù)據(jù)窗體與顯示結果窗體的設計風格等具體應用。

評論  |   0條評論