8、E-R圖的設計
學習目標:
1、瞭解資料庫設計的思維
2、瞭解什麼是E-R圖
3、能根據業務需要設計E-R圖
學習過程:
今天我們簡單介紹有關資料庫建模的理論知識,同時通過一些簡單的例子講解我們資料庫的表是怎麼設計出來的。今天的主要學習目標是:
-
瞭解設計資料庫的步驟。
-
理解資料庫的規範化-三大正規化。
-
掌握使用PD設計資料庫。
這節課我們先講講資料庫設計重要的一個步驟——E-R圖的設計。
一、為什麼需要資料庫建模
軟體專案的開發和建造一間房子一樣,都是一個工程專案,前期第一個步驟必須要把房子的設計好,而不是一開始就蓋房子。軟體專案也是一樣,必須做好設計,設計的好壞直接影響了以後軟體專案的質量。所以資料庫的建模是必須的,而且非常重要的。
因為良好的資料庫設計可以幫助我們:
-
節省資料的儲存空間。
-
能夠保證資料的完整性。
-
方便進行資料庫應用系統的開發
相反不好的資料庫設計:
-
資料冗餘、儲存空間浪費
-
記憶體空間浪費
-
資料更新和插入的異常
所以資料庫的設計是整個軟體開發的重中之重。
二、軟體開發的流程
一般我們進行軟體開發都是經過以下幾個過程。
-
可行性分析:主要包括經濟可行性,社會可行性等等。
-
需求分析階段:分析客戶的業務和資料處理需求。
-
概要設計階段:設計資料庫的E-R模型圖,確認需求資訊的正確和完整。
-
詳細設計階段:將E-R圖轉換為多張表,進行邏輯設計,並應用資料庫設計的三大正規化進行稽核。
-
程式碼編寫階段:選擇具體資料庫進行物理實現,並編寫程式碼實現前端應用。
-
軟體測試階段:編寫測試文件,進行軟體測試工作。
-
軟體維護階段:安裝部署,維護升級等。
軟體的開發過程是一個複雜的過程可能需要返回迭代才能完成,這裡列出一般的流程。
三、資料庫設計步驟
一般資料庫的建模都會使用E-R圖進行設計。那什麼是E-R圖呢?
E-R圖就是是“實體-聯絡”圖(Entity-Relationship)的簡稱。它是描述現實世界概念結構模型的有效方法。是表示概念模型的一種方式,用矩形表示實體型,矩形框內寫明實體名。用橢圓表示實體的屬性,並用無向邊將其與相應的實體型連線起來。用菱形表示實體型之間的聯絡,在菱形框內寫明聯絡名,並用無向邊分別與有關實體型連線起來,同時在無向邊旁標上聯絡的型別。如下圖:
有上面可知,在完成需求分析之後,充分了解的使用者的需求後我們就可以開始設計資料庫了。下面我們就以一個簡單的論壇的資料庫設計作為例子,當然一般的資料庫設計都是比較複雜的,這裡只是為了幫助大家更好的理解資料庫的設計步驟,把複雜度簡化了而已。
1、資訊採集
我們還是需要與該系統有關人員進行交流、坐談,蒐集臺帳文件、業務工單、調查問卷等,充分理解資料庫需要完成的任務,然後以文字的形式彙報成為文件。需求總結如下:
BBS論壇的基本功能:
使用者註冊和登入,後臺資料庫需要存放使用者的註冊資訊和線上狀態資訊;
論壇版塊管理:後臺資料庫需要存放各個版塊資訊,如版主、版塊名稱、貼子數等,每個板塊可以有多個使用者維護。每個使用者也可以維護多個板塊。
使用者發貼,後臺資料庫需要存放貼子相關資訊,如貼子內容、標題等。
使用者可以進行回帖操作。
2、抽象出實體,使用正方形描述。有上面的需求可知。
3、 確定實體間的關係
實體間的關係一般只有四種:一對一、一對多、多對一、多對多。如下圖所示
我們也可以簡單分析一下上面的需求,比如使用者可以發多張主貼,但是每一張主貼只會屬於一個使用者,所以使用者和主貼直接是一對多的關係,使用者和回帖也是一對多的關係,主貼和回帖也是一對多的關係,版塊和主貼之間也是一對多的關係。而每個板塊可以有多個使用者維護,每個使用者也可以維護多個板塊。所以使用者和版本之間的關係是多對多的關係,繼續修改上面的E-R圖,描述上他們的關係。
4、 抽象出實體的屬性。
然後我們可以考慮每一個實體和關係所應用具有的屬性了。
使用者:呢稱、密碼、電子郵件、生日、性別、使用者的等級、備註資訊、註冊日期、狀態、積分。
主貼:發貼人 l發貼表情 l回覆數量、標題、正文、發貼時間、點選數、狀態、最後回覆時間。
回貼:貼子編號、回貼人、回貼表情 l標題 l正文 l回貼時間 l點選數。
版塊:版塊名稱、版主、本版格言、點選率、發貼數。
這個示例中關係並沒有需要儲存的屬性了。