目錄
前言
基本概念?
觀點與模型
作用與要求?
E-R模型元素?
實體(entity)
實體集(entity set)
屬性(attribute)
域(domain)
碼 (key)
聯系 (relationship)
參與(participation)
角色(role)?
映射基數(?Mapping Cardinalities)
弱實體集(weak entity set)
總結?
前言
本堂課重點來講講E-R模型,然后在下一堂課我們深入來探討如何利用E-R模型進行數據庫設計
E-R模型是1976年由P.P.S.Chen提出的,用來描述概念的模型
基本概念?
觀點與模型
觀點:世界是由一組稱作實體的基本對象和這些對象的聯系構成的(世界=實體+實體聯系)
模型:模型就是世界本質的一種反射,能夠突出世界的某方面特征
作用與要求?
作用:幫助澄清用戶的數據需求、數據邏輯模型設計的基礎(用于數據分析、數據庫設計、數據關系研究)
?要求:清晰、易懂、完整、準確、無二義
E-R模型元素?
實體(entity)
定義:客觀存在并且相互可以區分的事物叫實體(唯一標識)
例子:學生張三(具體的)、軟件學院(抽象的)等等
E-R模型:
側重點:實體集下的多個實體(Johnson等)?
實體集(entity set)
定義:具有相同類型及屬性的實體集合
例子:全體學生、全體課程、所有學院等
實體可以認為是實體集的外延(Extension)
?E-R模型:
?側重點:實體集的屬性
屬性(attribute)
定義:實體集中所有實體所具有的描述性的性質
例如:學生的學號、姓名、年齡
1、實體集的屬性是將實體集映射到域的函數(實體可以認為是高維度上的一個點)
2、實體的屬性可以唯一標識一個實體
分類:
1、簡單屬性:不可再分的屬性(性別、年齡等)
2、復合屬性:可以劃分為更小的屬性(電話號碼=區號+本地號碼)
1、單值屬性:?每一個實體在該屬性上的取值唯一
2、多值屬性:每一個實體在該屬性上有多于一個的取值
1、基屬性:除了派生屬性外的所有屬性都是基屬性
2、派生屬性:從基屬性通過計算派生出來的屬性
理論上只存基屬性值,而派生屬性只存其定義或依賴關系,使用時再從基屬性中計算出來
同個框內的分類是對立的,不同框內的分類是可以并存的?
小測試:
name:復合屬性、單值屬性、基屬性
phone_number:復合屬性、多值屬性?、基屬性
age():單值屬性、簡單屬性、派生屬性
域(domain)
定義:屬性的取值范圍
例如:性別的域為(‘0’,‘1’),月份的域為(‘1’-‘12’)
碼 (key)
超碼:能唯一標識實體的屬性或屬性組
候選碼:任意真子集都不能成為超碼的最小超碼
主碼:從所有候選碼中任意選定一個用來區別同一實體集中不同實體的候選碼(候選碼中任意選)
E-R模型:實體集屬性中作為主碼的屬性用下劃線來標明
聯系 (relationship)
定義:實體之間的相互關聯稱為聯系
例如:老師與學生之間的授課關系
聯系有自己的屬性,在E-R模型圖中不要把聯系屬性合并到實體中。但是在表格設計很多情況會把聯系的屬性合并到實體表中!!
?元或度:參與聯系的實體集的個數稱為聯系的元(或者度)
E-R模型:
菱形表示:實體集之間的聯系
參與(participation)
定義:實體集之間的關聯稱為參與(實體與聯系的關系就是參與關系)
例如:王軍選修數據庫=“王軍”、“數據庫”參與了聯系“選修”
分類:全部參與、部分參與
?E-R模型:
實線:實體集與聯系之間的參與
一條實線:部分參與聯系
兩條實線:全部參與聯系
角色(role)?
定義:實體在聯系中的作用稱為實體的角色
E-R模型:?
實體集不止一次參與某種聯系時才需要顯式指明其角色
映射基數(?Mapping Cardinalities)
定義:實體之間聯系的數量,即一個實體通過一個聯系集能與另一個實體集相關聯的實體的數目
例如:一個導師對應多個研究生、一個本科生上多門課程(一門課程同時給多個學生學習)等等
E-R模型:
箭頭指向的實體集是一,線段的實體集是多(上圖反映的是多對一的關系)?
一對一的關系。一個導師對應一個學生,一個學生對應一個導師?
多對多的關系。一個導師對應多個學生,一個學生對應多個導師?
一個實體集內的二元聯系同樣需要指定映射基數?
多個實體集間的聯系情況
注意!絕對不是題目中出現三個實體集與聯系就寫成三元聯系,也有可能是兩個二元聯系。具體要看三者之間是不是都有關系還是只有其中一者和另外兩個有關系!!!
另外一種表示:?
a..b:表示其對應的實體集參與聯系的個數限制?
例如:0..*是0到無上限?(即多);1..1是1到1(即一);20..*是學生參與選修至少20位
弱實體集(weak entity set)
定義:若一個實體所有屬性合在一起都不足以形成主碼,則稱該實體是弱實體
原因:1、聯系必須是實體之間的;2、想要屬性參與聯系則必須將屬性實體化;3、有些場景下,屬性必須參與某種聯系
存在依賴:弱實體集必須存在依賴與一個強實體集,但是存在依賴不會導致一個弱實體集(如:信用卡依賴于客戶實體,但是是一個強實體集)
分辨符:也叫部分碼,能夠與所依賴的強實體集中的主碼共同唯一標識弱實體集(弱實體集主碼=依賴強實體集主碼+弱實體集分辨符)
標識性聯系:與一般聯系不同,標識性聯系只存在與強實體集和弱實體集之間。用雙邊框的菱形表示
例如:
關鍵點:
1、實體集的表示與上面不同。這里的屬性是利用圓圈連接實體來表示的。
2、transaction是指交易。交易額和interestRec(利息額)以及銀行柜員必然存在關系?。每一筆交易都由一個柜員完成,都將計入利息額度中。但是這里交易是屬性不能參與聯系,所以這里需要將它實體化為弱實體集。
3、上圖中transaction屬性有兩個圈表示其是多值屬性,還未實體化
1、將交易記錄、利息記錄實體化
2、將這兩個弱實體利用標識性聯系與強實體集聯系
3、弱實體集的分辨符用下劃虛線表示
E-R模型:
?
總結?
本文的所有知識點、圖片均來自《數據庫系統概念》(黑寶書)、山東大學李暉老師PPT。不可用于商業用途轉發。
本篇已經碼了三個多小時了,算是簡單入門E-R模型的文章,下次我們來講講E-R模型向關系模型(可以理解為數據庫中的表)的轉化
如果能幫助到大家,大家可以點點贊、收收藏呀~?