如何設計數據庫

爲什麼需要設計數據庫

       這裏我們思考兩個問題:

修建茅屋需要設計嗎?修建大廈需要設計嗎?

結論是:當數據庫比較複雜(如數據量大,表較多,業務關係複雜)時,我們需要先設計數據庫;

因爲,良好的數據庫設計能夠:

1、節省數據的存儲空間

2、能夠保證數據的完整性

3、方便進行數據庫應用系統的開發

糟糕的數據庫設計:

1、 數據冗餘、存儲空間浪費

2、內存空間浪費

3、數據更新和插入的異常 

軟件項目開發週期

       我們再來看看軟件項目的開發週期:

1、 需求分析階段:分析客戶的業務和數據處理需求;

2、概要設計階段:設計數據庫的E-R模型圖,確認需求信息的正確和完整;

3、詳細設計階段:將E-R圖轉換爲多張表,進行邏輯設計,並應用數據庫設計的三大範式進行審覈;

4、代碼編寫階段:選擇具體數據庫進行物理實現,並編寫代碼實現前端應用;

5、軟件測試階段:……

6、安裝部署:…… 

設計數據庫

在需求分析階段,設計數據庫的一般步驟爲:

–   收集信息

–  標識對象

–   標識每個對象的屬性

–   標識對象之間的關係

在概要設計階段和詳細設計階段,設計數據庫的步驟爲:

–   繪製E-R圖

–  將E-R圖轉換爲表格

–  應用三大範式規範化表格 

下面我們以一個BBS簡易論壇的數據庫設計爲例來看看設計數據庫的步驟: 

 收集信息:

   與該系統有關人員進行交流、坐談,充分理解數據庫需要完成的任務

BBS論壇的基本功能:

- 用戶註冊和登錄,後臺數據庫需要存放用戶的註冊信息和在線狀態信息;

–   用戶發貼,後臺數據庫需要存放貼子相關信息,如貼子內容、標題等;

–  論壇版塊管理:後臺數據庫需要存放各個版塊信息,如版主、版塊名稱、貼子數等; 

 標識對象(實體-Entity)

    標識數據庫要管理的關鍵對象或實體

實體一般是名詞:

–   用戶:論壇普通用戶、各版塊的版主。

–   用戶發的主貼

–  用戶發的跟貼(回貼)

–  版塊:論壇的各個版塊信息 

–  標識每個實體的屬性(Attribute

如何設計數據庫 設計數據庫 - 冰虎頭 - 冰虎頭

 標識對象之間的關係(Relationship)

–   跟貼和主貼有主從關係:我們需要在跟貼對象中表明它是誰的跟貼;

–   版塊和用戶有關係:從用戶對象中可以根據版塊對象查出對應的版主用戶的情況;

–  主貼和版塊有主從關係:需要表明發貼是屬於哪個版塊的;

–  跟貼和版塊有主從關係:需要表明跟貼是屬於哪個版塊的; 

 繪製E-R圖

 如何設計數據庫 設計數據庫 - 冰虎頭 - 冰虎頭 

 將E-R圖轉化爲表格

 將各實體轉換爲對應的表,將各屬性轉換爲各表對應的列

 標識每個表的主鍵列,需要注意的是:沒有主鍵的表添加ID編號列,它沒有實際含義,用於做主鍵或外鍵,例如用戶表中的“UID”列,版塊表中添加“SID”列,發貼表和跟貼表中的“TID”列

 在表之間建立主外鍵,體現實體之間的映射關係 

 如何設計數據庫 設計數據庫 - 冰虎頭 - 冰虎頭

如何設計數據庫 設計數據庫 - 冰虎頭 - 冰虎頭

這裏我們繪製ER圖可以使用微軟的Word或VISIO以及Sybase公司的PowerDesigner,它主要用於和客戶溝通交流意見,並反覆修改,直到客戶確認。客戶確認後,再將E-R圖轉換爲表。上面我們已經做好了這個工作。那接下來就是最後一步:應用三大範式對設計的多張表進行審覈並規範化表的結構。 

本源:blog.csdn.net/lenotang/archive/2008/11/15/3304568.aspx


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章