爲什麼需要設計數據庫
這裏我們思考兩個問題:
修建茅屋需要設計嗎?修建大廈需要設計嗎?
結論是:當數據庫比較複雜(如數據量大,表較多,業務關係複雜)時,我們需要先設計數據庫;
因爲,良好的數據庫設計能夠:
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