1. 程式人生 > >9、E-R圖的設計

9、E-R圖的設計

學習目標:

1、瞭解Java的歷史

2、為什麼要學習Java語言

3、端正學習態度

學習過程:

今天我們簡單介紹有關資料庫建模的理論知識,同時通過一些簡單的例子講解我們資料庫的表是怎麼設計出來的。今天的主要學習目標是:

  • 瞭解設計資料庫的步驟。

  • 理解資料庫的規範化-三大正規化。

  • 掌握使用PD設計資料庫。

這節課我們先講講資料庫設計重要的一個步驟——E-R圖的設計。

一、為什麼需要資料庫建模

軟體專案的開發和建造一間房子一樣,都是一個工程專案,前期第一個步驟必須要把房子的設計好,而不是一開始就蓋房子。軟體專案也是一樣,必須做好設計,設計的好壞直接影響了以後軟體專案的質量。所以資料庫的建模是必須的,而且非常重要的。

因為良好的資料庫設計可以幫助我們:

  • 節省資料的儲存空間。

  • 能夠保證資料的完整性。

  • 方便進行資料庫應用系統的開發

相反不好的資料庫設計:

  • 資料冗餘、儲存空間浪費

  • 記憶體空間浪費

  • 資料更新和插入的異常

所以資料庫的設計是整個軟體開發的重中之重。

二、軟體開發的流程

一般我們進行軟體開發都是經過以下幾個過程。

  • 可行性分析:主要包括經濟可行性,社會可行性等等。

  • 需求分析階段:分析客戶的業務和資料處理需求。

  • 概要設計階段:設計資料庫的E-R模型圖,確認需求資訊的正確和完整。

  • 詳細設計階段:將E-R圖轉換為多張表,進行邏輯設計,並應用資料庫設計的三大正規化進行稽核。

  • 程式碼編寫階段:選擇具體資料庫進行物理實現,並編寫程式碼實現前端應用。

  • 軟體測試階段:編寫測試文件,進行軟體測試工作。

  • 軟體維護階段:安裝部署,維護升級等。

    軟體的開發過程是一個複雜的過程可能需要返回迭代才能完成,這裡列出一般的流程。

三、資料庫設計步驟

一般資料庫的建模都會使用E-R圖進行設計。那什麼是E-R圖呢?

E-R圖就是是“實體-聯絡”圖(Entity-Relationship)的簡稱。它是描述現實世界概念結構模型的有效方法。是表示概念模型的一種方式,用矩形表示實體型,矩形框內寫明實體名。用橢圓表示實體的屬性,並用無向邊將其與相應的實體型連線起來。用菱形表示實體型之間的聯絡,在菱形框內寫明聯絡名,並用無向邊分別與有關實體型連線起來,同時在無向邊旁標上聯絡的型別。如下圖:

attcontent/01721321-ea45-40fa-9b8b-3543f0c80865.png

有上面可知,在完成需求分析之後,充分了解的使用者的需求後我們就可以開始設計資料庫了。下面我們就以一個簡單的論壇的資料庫設計作為例子,當然一般的資料庫設計都是比較複雜的,這裡只是為了幫助大家更好的理解資料庫的設計步驟,把複雜度簡化了而已。

1、資訊採集

我們還是需要與該系統有關人員進行交流、坐談,蒐集臺帳文件、業務工單、調查問卷等,充分理解資料庫需要完成的任務,然後以文字的形式彙報成為文件。需求總結如下:

BBS論壇的基本功能:

使用者註冊和登入,後臺資料庫需要存放使用者的註冊資訊和線上狀態資訊;

論壇版塊管理:後臺資料庫需要存放各個版塊資訊,如版主、版塊名稱、貼子數等,每個板塊可以有多個使用者維護。每個使用者也可以維護多個板塊。

使用者發貼,後臺資料庫需要存放貼子相關資訊,如貼子內容、標題等。

使用者可以進行回帖操作。

2、抽象出實體,使用正方形描述。有上面的需求可知。

attcontent/b77eb33a-80c0-43f7-8bdf-1d7fac66ef35.png

3、 確定實體間的關係

實體間的關係一般只有四種:一對一、一對多、多對一、多對多。如下圖所示

attcontent/eec1fde5-f538-4a93-935b-0a304dd0a1e4.png

我們也可以簡單分析一下上面的需求,比如使用者可以發多張主貼,但是每一張主貼只會屬於一個使用者,所以使用者和主貼直接是一對多的關係,使用者和回帖也是一對多的關係,主貼和回帖也是一對多的關係,版塊和主貼之間也是一對多的關係。而每個板塊可以有多個使用者維護,每個使用者也可以維護多個板塊。所以使用者和版本之間的關係是多對多的關係,繼續修改上面的E-R圖,描述上他們的關係。

attcontent/5b8cab3e-a3e8-4280-a3ee-c1249c81eea9.png

4、 抽象出實體的屬性。

然後我們可以考慮每一個實體和關係所應用具有的屬性了。

使用者:呢稱、密碼、電子郵件、生日、性別、使用者的等級、備註資訊、註冊日期、狀態、積分。

主貼:發貼人 l發貼表情 l回覆數量、標題、正文、發貼時間、點選數、狀態、最後回覆時間。

回貼:貼子編號、回貼人、回貼表情 l標題 l正文 l回貼時間 l點選數。

版塊:版塊名稱、版主、本版格言、點選率、發貼數。

這個示例中關係並沒有需要儲存的屬性了。

attcontent/89c7dec8-40ed-4e62-9c82-46afdb441301.png