資料庫設計

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

資料庫設計(Database design)

目錄

什麼是資料庫設計[1]

  資料庫設計是指對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求

資料庫設計的任務[2]

  資料庫設計的任務是根據應用系統業務信息需求、處理需求及資料庫的支持環境,設計出數據模式(包括外模式、邏輯模式及內模式)以及相應的應用程式。

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

資料庫設計的內容[2]

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

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

資料庫設計的方法[3]

  1.直觀設計法

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

  2.規範設計法

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

  3.電腦輔助設計法

  電腦輔助設計法是指在資料庫設計的某些過程中模擬某一規範設計方法,通過人機交互實現部分設計,在這一過程中需要有相關知識和經驗的人的支持。

  4.自動化設計法

  用來幫助設計資料庫或資料庫應用軟體的工具稱為自動化設計工具,例如:OracleDesigner、PowerDesigner等,它可以自動並加速完成設計資料庫系統的任務。用自動化設計工具完成設計資料庫系統任務的方法稱為自動化設計法。

資料庫設計的原則[4]

  1.要善於識別與正確處理多對多的關係

  若兩個實體之間存在多對多的關係,則應消除這種關係。消除的辦法是,在兩者之間增加第三個實體。這樣,原來一個多對多的關係,現在變為兩個一對多的關係。要將原來兩個實體的屬性合理地分配到三個實體中去。這裡的第三個實體,實質上是一個較複雜的關係,它對應一張基本表。一般來講,資料庫設計工具不能識別多對多的關係,但能處理多對多的關係。

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

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

  3.數據的一致性和完整性

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

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

  4.事務的陷阱

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

  5.通俗地理解3個範式

  通俗地理解3個範式,對於資料庫設計大有好處。在資料庫設計中,為了更好地應用3個範式,就必須通俗地理解3個範式。第一範式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解。第二範式:2NF是對記錄的唯一性約束,要求記錄有唯一標識,即實體的唯一性。第三範式:3NF是對欄位冗餘性的約束,即任何欄位不能由其他欄位派生出來,它要求欄位沒有冗餘。

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

  6.正確認識數據冗餘

  主鍵與外鍵在多表中的重覆出現,不屬於數據冗餘。這個概念必須清楚,事實上有許多人還不清楚。非鍵欄位的重覆出現,才是數據冗餘。而且是一種低級冗餘,即重覆性的冗餘。高級冗餘不是欄位的重覆出現,而是欄位的派生出現。

  7.數據類型的選擇

  數據類型的合理選擇對於資料庫的性能和操作具有很大的影響,有關這方面的書籍也有不少的闡述,這裡主要介紹幾點經驗。

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

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

  8.信息隱藏

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

資料庫設計的特點[5]

  資料庫設計的工作量大且比較複雜,是一項資料庫工程,也是一項軟體工程。資料庫設計的很多階段都可以對應於軟體工程的階段,軟體工程的某些方法和工具同樣也適合於資料庫工程。但由於資料庫設計是與用戶的業務需求緊密相關的,因此,它還有很多自己的特點。

  1.綜合性

  資料庫設計涉及的範圍很廣,包含了電腦專業知識及業務系統的專業知識,同時它還要解決技術及非技術兩方面的問題。

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

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

  結構設計是指資料庫的模式結構設計,包括概念結構、邏輯結構和存儲結構;行為設計是指應用程式設計,包括功能組織、流程控制等方面的設計。在傳統的軟體工程中,比較註重處理過程的設計,不太註重數據結構的設計。在一般的應用程式設計中只要可能就儘量推遲數據結構的設計,這種方法對於資料庫設計就不太適用。

  資料庫設計與傳統的軟體工程的做法正好相反。資料庫設計的主要精力首先是放在數據結構的設計上,比如資料庫的表結構、視圖等。

資料庫設計的一般步驟[6]

  1.確定創建資料庫的目的

  設計資料庫和用戶的需求息息相關。首先,要明確創建資料庫的目的以及如何使用,用戶希望從資料庫得到什麼信息,由此可以確定需要什麼樣的表和定義哪些欄位;其次,要與用戶進行交流,集體討論需要資料庫解決的問題,並描述需要資料庫完成的各項功能。

  2.確定資料庫中需要的表

  一個資料庫可能是由若幹個表組成的,所以確定表是資料庫設計過程中最重要的環節。在設計表時,應該按以下設計原則對信息進行分類。

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

  (2)同一個表中不允許出現同名欄位。

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

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

  3.確定欄位

  確定表的過程實際上就是定義欄位的過程,欄位是表的結構,記錄是表的內容。所以確定欄位是設計資料庫不可缺少的環節。在定義每個表欄位時,註意以下幾點。

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

  (2)信息獨立。欄位信息不包含能夠使用推導和計算得出的數據信息。

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

  4.確定主鍵

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

  5.確定表之間的關係

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

  6.確定各個表的使用數據

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

  7.確定數據的使用場所和管理手段

  利用Access2003資料庫提供的查詢、報表、窗體等高級工具,根據實際使用要求,考慮在資料庫中創建哪些查詢,設計哪些列印報表,規劃輸入數據窗體與顯示結果窗體的設計風格等具體應用。

相關條目

參考文獻

  1. 彭澎編著.管理信息系統學習指導與習題解答.機械工業出版社,2004年01月第1版.
  2. 2.0 2.1 姚春龍主編,沈嵐,範豐龍,李曉紅編著.資料庫技術及應用教程.清華大學出版社,2011.09.
  3. 宋金玉等編著.資料庫原理與應用.清華大學出版社,2011.06.
  4. 田淑梅編著.軟體工程 理論與實踐.清華大學出版社,2011.
  5. 何玉潔,梁琦等編著.資料庫原理與應用.機械工業出版社,2011.04.
  6. 馮偉昌編著.Access資料庫技術及應用.科學出版社,2011.05.
本條目對我有幫助3
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目

本条目由以下用户参与贡献

方小莉,林巧玲,林晓辰.

評論(共0條)

提示:評論內容為網友針對條目"資料庫設計"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

MBA智库
打开APP

以上内容根据网友推荐自动排序生成