實(shí)體—聯(lián)系模型
-
實(shí)體集
- 實(shí)體(entity):現(xiàn)實(shí)世界中一個(gè)可以區(qū)別于其他對象的一個(gè)“事物”或?qū)ο?/li>
- 實(shí)體集(entity set):相同類型(即具有相同性質(zhì)/屬性)的實(shí)體的集合
- 外延(extension):屬于實(shí)體集的實(shí)體的實(shí)際集合
ps: 實(shí)體集和外延的關(guān)系類似于之前講的模式和實(shí)例的關(guān)系
- 屬性(attribute):實(shí)體集中每個(gè)成員所具有的描述性性質(zhì)
- 值(value):每個(gè)實(shí)體的每個(gè)屬性都有一個(gè)值
-
聯(lián)系集
聯(lián)系(relationship):多個(gè)實(shí)體間的相互關(guān)聯(lián)
聯(lián)系集(relationship set): 相同類型聯(lián)系的集合
實(shí)體集之間的關(guān)聯(lián)稱之為參與:實(shí)體集E1, E2, E3 參與 聯(lián)系集R
聯(lián)系也可以具有 描述性屬性
實(shí)體在聯(lián)系中扮演的功能稱為角色
參與聯(lián)系集的實(shí)體集的數(shù)目稱為聯(lián)系集的度, 二元聯(lián)系集的度為2
-
屬性
域(domain)/ 值集:每個(gè) 屬性 都有一個(gè) 可取值的集合 ,稱為該屬性的 域 或 值集
-
簡單(simple) 和復(fù)合(composite)屬性
-
簡單屬性不可以再分成更小的部分,而復(fù)合屬性可以(例如下面的name即為復(fù)合屬性)
1.png
-
-
單值(single-value)和多值(multivalued)屬性
- 單值:一個(gè)實(shí)體在的單值屬性只對應(yīng)一個(gè)值
- 多值:一個(gè)實(shí)體的多值屬性可以對應(yīng)多個(gè)值(如,phone_number)
-
派生(derived)屬性
-
派生屬性的值可以從別的相關(guān)屬性或?qū)嶓w派生出來
- eg.:銀行賬戶的余額可以從賬戶的存取款明細(xì)中計(jì)算出來
派生屬性在原則上是不用保存的,但是有時(shí)候保存派生屬性可以節(jié)約計(jì)算時(shí)間(空間換時(shí)間)
-
-
約束
-
映射基數(shù)約束
- 一對一(one-to-one)
- 一對多(one-to-many)
- 多對一(many-to-one)
- 多對多(many-to-many)
-
參與約束
全部參與:實(shí)體集E的每一個(gè)實(shí)體都參與到聯(lián)系集R的至少一個(gè)聯(lián)系中
部分參與:實(shí)體集E中只有部分實(shí)體參與到聯(lián)系集R的聯(lián)系中
-
碼
- 超碼
- 候選碼
- 主碼
-
從實(shí)體集中刪除冗余屬性
- 要點(diǎn): 刪除其他實(shí)體的主鍵
- 其他實(shí)體的主鍵相當(dāng)于外建的存在,一般屬于聯(lián)系集的屬性
- 舉個(gè)栗子:
instructor(ID, name, dept_name, salary),其中ID為主鍵
department(dept_name, building, budget),其中dept_name為主鍵
屬性dept_name在兩個(gè)表中都出現(xiàn)了,所以它屬于冗余屬性,他又是department的主鍵,故應(yīng)該將其從instructor表中移除(實(shí)際數(shù)據(jù)庫實(shí)現(xiàn)的時(shí)候instructor表中是有一個(gè)dept_name屬性的,他作為一個(gè)外建存在,實(shí)際上是兩者的聯(lián)系集是簡單的1對多的關(guān)系,便沒有單獨(dú)成表,而是采用外鍵相聯(lián)系)
-
實(shí)體——聯(lián)系圖
-
基本結(jié)構(gòu)
-
分成兩部分的矩形 代表 實(shí)體集
2.png -
菱形 代表 聯(lián)系集
3.png -
未分割的矩形 代表 聯(lián)系集的屬性
4.png -
線段 將實(shí)體集連接到聯(lián)系集
5.png -
虛線 將聯(lián)系集屬性連接到聯(lián)系集
6.png 雙線 顯示實(shí)體在聯(lián)系集中的參與度(用雙線與聯(lián)系集相連表示全部參與)
雙菱形 代表連接到弱實(shí)體集的 標(biāo)志性實(shí)體集
7.png -
-
映射基數(shù)
- 一對一
- 一對多
- 多對一
- 多對多
-
balabala,圖畫起來太麻煩了,其他的直接看書,下面聊一聊弱實(shí)體集
-
弱實(shí)體集
定義:沒有足夠的屬性以形成主碼的實(shí)體集稱之為 弱實(shí)體集(weak entity set)
-
先舉個(gè)栗子:(由于簡書不支持下劃線的寫法,所以下面表中所有的主碼都用斜體表示)
course (course_id, titles, credits)
section (sec_id, semester, year)
-
對于上面的兩個(gè)實(shí)體集,參與如下聯(lián)系集
- sec_course(course_id, sec_id, semester, year)
-
上面的section實(shí)體集實(shí)際上就是一個(gè)弱聯(lián)系集
- 一個(gè)section實(shí)體如果不與一個(gè)course對相關(guān)聯(lián)是毫無意義的,并且只有sec_id, semester, year三個(gè)屬性也是決定不了一個(gè)section的
弱實(shí)體集必須于另一個(gè)稱作標(biāo)識(shí)(identifying)或?qū)僦骱蛯?shí)體集(owner entity set)的實(shí)體集相關(guān)聯(lián)才有意義
-
雖然弱實(shí)體集沒有主碼,但是本身仍要有在依賴于強(qiáng)實(shí)體集的基礎(chǔ)上的進(jìn)一步區(qū)分的方法,弱實(shí)體集的分辨符/部分碼(discriminator)便可以用來做進(jìn)一步的區(qū)分
- 上述例子中的sec_id, semester, year便組成了section的分辨符
- 在畫ER圖的時(shí)候,組成分辨符的屬性底下畫虛線(可參見教材 圖7-5)
弱實(shí)體集的主碼由 標(biāo)識(shí)實(shí)體集的主碼 加上 該弱實(shí)體集的分辨符 構(gòu)成
-
ER圖中的表示
- 組成分辨符的屬性底下畫虛線,而不是實(shí)線
- 關(guān)聯(lián)弱實(shí)體集和標(biāo)識(shí)性強(qiáng)實(shí)體集的聯(lián)系集以雙菱形表示
-
接著,只需要把教材圖7-15的圖看懂理解,ER圖的繪制基本上就沒有毛病了
ER圖轉(zhuǎn)換為關(guān)系模式
這個(gè)不難下面簡單列幾點(diǎn)注意事項(xiàng)
-
復(fù)合屬性
- 將每個(gè)子屬性單獨(dú)作為一個(gè)屬性來處理
-
派生屬性
- 不顯示表示出來
-
多值屬性
- 單獨(dú)成表
-
弱實(shí)體集轉(zhuǎn)換
- 對于從弱實(shí)體集轉(zhuǎn)換而來的模式,該模式的主碼由其所依賴的強(qiáng)實(shí)體集的主碼與弱實(shí)體集的分辨符組成
-
聯(lián)系集
- 多對多的情況一定單獨(dú)成表
- 聯(lián)系集擁有描述性屬性的情況單獨(dú)成表
- 其它情況下均可不單獨(dú)成表
- 一對一情況下講任意實(shí)體集的主鍵作為另一個(gè)實(shí)體集的外建均可
- 一對多和多對一的情況下,將“一”端的主鍵作為"多"端的外建






