ER模型、ER分析介绍
?
【僅需一次訂閱,作者所有專欄都能看】
推薦【消息隊列Kafka】https://bigbird.blog.csdn.net/article/details/108770504
推薦【大數據Flink】https://blog.csdn.net/hellozpc/article/details/109413465
推薦【SpringBoot】https://blog.csdn.net/hellozpc/article/details/107095951
推薦【SpringCloud】https://blog.csdn.net/hellozpc/article/details/83692496
推薦【Mybatis】https://blog.csdn.net/hellozpc/article/details/80878563
推薦【SnowFlake】https://blog.csdn.net/hellozpc/article/details/108248227
推薦【并發限流】https://blog.csdn.net/hellozpc/article/details/107582771
?
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的實體的主鍵,如果是一對一的聯系那就隨便在哪個實體后面加上另外一個實體的主鍵。
一個權限管理數據庫設計案例?https://blog.csdn.net/hellozpc/article/details/103236720
關注公眾號【程猿薇蔦】參考文獻:
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
?
?
歡迎關注公眾號?
總結
以上是生活随笔為你收集整理的ER模型、ER分析介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简洁·清新风格海报
- 下一篇: java计算机毕业设计家电售后管理系统源