E-R模型、E-R分析介紹,e-r模型分析介紹
1 簡介
1.1 ER模型的作用
以建築房屋的例子,說明建築師、建築工人和原材料商的作用,強調資料庫規劃師、資料庫操作人員和資料庫管理系統的作用,指出ER模型是種基於關聯式模式的資料庫整體規劃方法。
1.2 ER模型的概念
模型來源於資料概念性模型,說明ER模型是一種概念性模型設計方法。
ER來源於英文單詞“實體”和“聯絡”,說明它主要是利用這兩個圖例的繪製進行表達和設計。由美籍華人陳平山設計。Codd的範式方法不甚適用於全域性設計,除此以外,還有其他一些概念性模型設計方法。
1.3 ER模型的設計方法
從使用者需求調研開始,結合學籍資訊系統的案例說明。
1)調研使用者需求,得到幾點基本要求,如“尋找和修改學生的基本資料”,“尋找和修改學產生績資訊”。
2)識別使用者需求中的資料內容,忽略功能性內容,並再次調研以確定資料的含義,如什麼是學生基本資料。最終得到如下資料:學號,姓名,性別,生日,身高、課程名、成績。判斷這些資料是否合格,只需判斷它們是否可以再次細分(準則1)。這些最後得到的資料被稱為屬性。
3)將全部資訊放入一個關係,雖然功能可行,但是冗餘太大,易帶來不一致的危險。
4)使用“拆”的方法,將關係按照語義聯絡細分。
將“學號,姓名,性別,生日,身高”五個屬性識別出“學生”語義,並建立關係,學號作為主鍵。
將“課程名”一個屬性識別出“課程”語義,並建立關係,並添加課程號主鍵,同時體現出資訊建設所具有的變革意味。
說明“成績”屬性不能建立成績實體,因為它不能獨立存在(準則2)。反過來說,它與現有關係存在聯絡。
說明“成績”屬性不能歸入上述兩個關係中任一關係,因為對於上述實體集合中的每一實體,該項屬性取值不惟一(準則3)。
強調“成績”屬性是學生和課程聯絡的屬性,即將兩個實體主鍵拿過來建立關係,並將“成績”屬性放入該關係。
最後得到關係為:
學生(學號,姓名,性別,生日,身高)
課程(課程號、課程名)
選修(學號、課程號,成績)
2 ER圖的繪製
結合學籍資訊系統案例簡述建模方法,並描述相應的ER圖。
說明實體、屬性(包括主屬性)和聯絡的畫法。
強調ER模型設計的兩大內容:一是將需求通過ER表達,另一個是將ER轉換為關聯式模式。ER圖是從實踐歸納出來的理論方法,可以重新指導實踐行為,既可以作為理解和表達使用者資料需求的手段,同時也構成如何產生關聯式模式的依據。
結合電影公司案例說明ER圖的繪製。
3 ER圖轉換為關聯式模式的方法
從學籍資訊系統案例解釋ER圖和產生關聯式模式的對應關係,方法為:
1)一個實體直接對應一個關係,實體的所有屬性成為關係的屬性,實體的主屬性成為關係的主屬性
2)一個聯絡直接對應一個關係,此關係首先將聯絡所關聯的所有實體主屬性拿來一齊構成自己的主屬性,並添加自己的屬性。
強調實體和聯絡對應的關係名稱命名問題,如不用漢字,聯絡關係要表達語義等。
按照上述方法將電影公司案例ER圖轉換為關聯式模式(屬性自己添加):
Movies(mid,title,year,length,type)
Stars(stid,name,address)
Studios(sdid,name,address)
MovieStar(mid,stid,salary)
MovieStudio(mid,sdid)
說明上述做法中MovieStudio關係可以合并到Movies中,指出原因在於此種聯絡為1:N。
結合學生和班級的問題再次說明這種合并的用法,並說明1:N的聯絡如何產生關聯式模式,方法為:在聯絡值為多的實體後添加聯絡值為1的實體的主屬性。
說明聯絡的三種類型,並強調涵蓋關係。說明多對多聯絡之所以建立關係的原因在於將其拆成兩個一對多,而一對多聯絡作為多對多聯絡的特例,可以按照多對多聯絡處理,不過合并更為簡單。
ER圖轉換為關聯式模式的課堂練習之一(屬性自己添加):
結果為:
學生(學號,姓名,性別)
課程(課程號,課程名稱,教師號)
教師(教師號,教師名)
參考書(書號,書名,課程號)
學生課程(學號,課程號,成績)
說明一對一聯絡轉換方法為在任一關聯實體後添加另一實體的主屬性。強調必要時要結合查詢要求等功能決定選擇。
ER圖轉換為關聯式模式的課堂練習之二(屬性自己添加):
結果為:
學生(學號,姓名,性別)
課程(課程號,課程名稱)
教師(教師號,教師名)
參考書(書號,書名)
課程教師參考書(課程號,教師號,書號)
學生課程(學號,課程號,成績)
學生管理(學號,班委號)
(註:如學生管理為1:N,則應在學生關係後添加“班委號”即可)
4 ERWin使用簡介
介紹ERWin等常用資料庫建模工具(還有Visio,PowerDesigner,Rational等)的好處,繪圖簡單、轉換方便。
4.1 安裝註冊
4.2 ER的繪製,注意聯絡實體(Associate Entity)的產生
4.3 正向工程的使用,即從邏輯模型轉換為物理模型
4.4 逆向工程的使用,即從物理模型轉換為邏輯模型
5 ER圖的規劃方法
將所得到的屬性分門歸類,利用以前講述的幾條簡單準則即可將其併入實體或者聯絡。
按照的準則主要有兩個:
1)屬性如果不能具有獨立存在的意義,則不能成為一個建立立實體。
2)屬性歸入一個實體的依據是對實體的每個執行個體而言具有唯一值。
結合合約案例講解設計方法,如:
相應的ER圖結構可以描述為:
合約(合約號,訂貨日期,廠商名稱,廠商地址)
貨物(貨物編號,貨物分類)
合約貨物(合約號,貨物編號,訂貨數量)
除此以外,還有一種方法,將廠商視為實體,相應的ER圖結構可以描述為:
合約(合約號,訂貨日期,廠商號)
貨物(貨物編號,貨物分類)
廠商(廠商號,廠商名稱,廠商地址)
合約貨物(合約號,貨物編號,訂貨數量)
兩種方法的比較:
1)第一種方法存在冗餘(相同的廠商具有相同的地址),但是實體少,處理簡單,以後利用範式分析方法可以得到標準結構。所以,實體能少則少。
2)第二種方法需要考察廠商實體與合約、貨物的關係,發現與合約存在一對多的關係,但與貨物存在多對多的關係,明顯增加處理的複雜度。事實上,可以考慮去除廠商與貨物的關係(可以從剩下的關係中推斷出來,但是其他的關係不能省略)。
結合學校資訊系統案例講解設計方法,如:
學院有很多不同的系,每個系下屬若干個教研室,每個教研室下屬若干個教師,其中的有些教授能夠帶若干個研究生,但是每個研究生只能有一個導師;每個系下屬若干個班級,每個班有很多學生,每個學生選修很多門課程,每門課也可以被多個學生選修。
相應的ER圖結構可以描述為:
學院(學院號,學院名)
系(系號,系名,學院號)
教研室(教研室號,教研室名,系號)
教師(教師號,教師名,職稱,教研室號)
班級(班級號,班級名,系號)
學生(學號,名稱,班級號,學曆,導師號)
課程(課程號,課程名)
學生課程(學號,課程號)
除此以外,還有一種方法,將教授和研究生單獨視為實體,相應的ER圖結構可以描述為:
學院(學院號,學院名)
系(系號,系名,學院號)
教研室(教研室號,教研室名,系號)
教師(教師號,教師名,教研室號)
教授(教授號)
班級(班級號,班級名,系號)
學生(學號,名稱,班級號,學曆)
研究生(研究生號,導師號)
課程(課程號,課程名)
學生課程(學號,課程號)
兩種方法的比較:
1)第一種方法實體較少,但是教師實體的職稱、學生實體的學曆和導師號存在較多的空值可能,在空值較少的情況下是個較好的選擇。
2)第二種方法雖然實體較多,沒有上述的空值問題。對於此類子類問題,要注意相應的處理方法,即子類中只留有必須的主鍵資訊,全部資訊都可以直接從父類中擷取,這樣查詢更為簡單易行。
6 子類問題
在電影公司資料庫中表達電影的實體資訊中,表達卡通片的主角配音演員資訊
這是個子類問題,因為卡通片電影是電影的一種子類。
處理方式一:將子類視為父類的內容來處理
上述做法對應的關聯式模式為:
Movies(mid,title,isCartoon,sdid,did)
Studios(sdid,name)
Dubbers(did,name)
說明:
1)可以表達查詢要求
2)對於非卡通片,did多為空白
3)不適用於子類較多的情況,如引入愛情片(affectional film)的結局(finale)查詢要求
對應的關聯式模式為:
Movies(mid,title,isCartoon,sdid,did, isAffectional, finale)
Studios(sdid,name)
Dubbers(did,name)
可以看出大部分電影的did和did資訊皆為空白
處理方式二:將子類單獨表達
相應的關聯式模式為:
Movies(mid,title,sdid)
Studios(sdid,name)
Dubbers(did,name)
AffectionalFilms(mid,title,sdid,finale)
Cartoons(mid,title,sdid,did)
說明:
1)沒有較多的空值問題
2)愛情片、卡通片和一般電影分開儲存不便於那些不區分電影類型的常見檢索(需要更多的表合併作業)
處理方式三:將子類單獨表達,但是父類擁有全部記錄資訊,子類只有主鍵資訊和自己的特殊資訊。這種方式一般是最為有效。
改進的關聯式模式為:
Movies(mid,title,sdid)
Studios(sdid,name)
Dubbers(did,name)
AffectionalFilms(mid,finale)
Cartoons(mid,did)
總結:
ER模型的設計一般步驟:
①客戶調研,瞭解需求,收集資料
②根據使用者需求來把資料細分到不可再分的基本資料項目
③可以先將全部資訊(或者稱屬性、欄位)放入一個關係,雖然功能可行,但是冗餘太大,易帶來不一致的危險。使用“拆”的方法,將關係按照語義聯絡(實體-關係)細分。根據從客戶那得到的原始資訊識別出實體,依次將屬性放入實體中(原則是只有該屬性對於該實體來說是唯一確定的才能將這個屬性歸到這個實體裡,否則看看能不能放到其他實體裡)。注意有的屬性是聯絡的屬性,這時就要建立實體間的聯絡,並給聯絡加個屬性。
從E-R模型到關聯式模式的變換規則:
①每個實體建一張表,實體的屬性變為表的一個欄位,要設個主屬性。
②所有的多對多的聯絡也要轉變為一張表,如果是多對一的聯絡就不要建立表了,在聯絡值為多的實體後面添加聯絡值為1的實體的主鍵,如果是一對一的聯絡那就隨便在哪個實體後面加上另外一個實體的主鍵。
參考文獻:
1.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=412&page=8
2.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=1163&page=2
3.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=1166&page=2
4.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=1173
視頻(迅雷輸入地址即可)
http://www.njcie.com/DB/files/41.wmv
http://www.njcie.com/DB/files/42.wmv
http://www.njcie.com/DB/files/43.wmv