資料庫系統概念(機械工業出版社,第七版)複習——第六章:資料庫設計和E-R模型
E-R模型
實體-聯絡模型:Entity-Relationship Model
E-R圖要點
實體(Entity)
客觀存在並可相互區分的事物叫實體(唯一標識)。
實體集(Entity Set)
是具有相同型別及共享相同性質(屬性)的實體集合。如全體學生。組成實體集的各實體稱為實體集的外延(Extension)。實體集可相交。
屬性(Attribute)
定義:實體集中每個成員具有的描述性性質。一個實體可以由若干個屬性來刻畫。
域(Domain/Value Set)
屬性的取值範圍。
屬性型別
簡單屬性(不可再分的屬性)、符合屬性(如生日,因為它可以分為年+月+日)。
單值屬性(每一個特定的實體在該屬性上的取值唯一)、多值屬性(某個特定的實體在該屬性上的有多於一個的取值)。
派生屬性(可以從其他相關的屬性或實體派生出來的屬性值,如,年齡可從生日派生出來)、基屬性。
碼
實體集屬性中作為主碼的一部分的屬性用下劃線來標明。
聯絡(Relationship):
實體之間的相互關聯。如學生與老師間的授課關係,學生與學生間有班長關係。聯絡也可以有屬性。同類聯絡的集合稱為聯絡集。
元或度(Degree)
參與聯絡的實體集的個數稱為聯絡的元。如學生選修課程是二元聯絡,供應商向工程供應零件則是三元聯絡。
碼
參與聯絡的實體集的主碼的集合形成了聯絡集的超碼。例如(sno, cno) 構成了聯絡sc的超碼。
參與
如果實體集E中的每個實體都參與到聯絡集R中的至少一個聯絡,則稱E全部參與R。如果實體集E中只有部分實體參與到聯絡集R的聯絡中,則稱E部分參與R。
用雙線表示全部參與:
角色(Role)
實體在聯絡中的作用稱為實體的角色。
當需要顯式區分角色時,在連線菱形和矩形的線上加上說明性標註以區別不同的角色:
對映的基數(Mapping Cardinalities)
實體之間的聯絡的數量,即一個實體通過一個聯絡集能與另一實體集相關聯的實體的數目。可以有一對一的(1:1),一對多的(1:m),多對多的(m:n)幾種情況。
二元聯絡集的對映基數:
一對一
一個教師至多指導一個學生,一個學生至多被一個教師指導。
一對一不是一一對應
一對多
一個教師指導多個學生,一個學生至多被一個教師指導。
多對一
一個教師至多指導一個個學生,一個學生可以被多個教師指導。
多對多
一個教師可以指導多名學生,一個學生可以有多名導師。
一個實體集內的二元聯絡:
分別為一對一、一對多、多對多。
多個實體集間聯絡的情況:
一對多:如“課程”,“教員”,“參考書”之間的“講課”聯絡
多對多
弱實體集(Weak Entity Set)
如果一個實體集的所有屬性都不足以形成主碼,則稱這樣的實體集為弱實體集。
弱實體集必然存在依賴於強實體集(Strong Entity Set)。
分辨符(Discriminator)
弱實體集中用於區別依賴於某個特定強實體集的屬性集合。也稱作部分碼(partial key)。如“還款”中的還款號。
弱實體集的主碼由該弱實體集所存在依賴的強實體集的主碼和該弱實體集的分辨符組成。如“還款”主碼=貸款號+還款號。
弱實體集在E-R圖中的表示
標識性聯絡以雙邊框的菱形表示。
從聯絡集用雙線(全部參與)連線弱實體集,用箭頭(一對多聯絡)指向強實體集。
弱實體集的分辨符用下劃虛線標明。
根據E-R圖建立資料庫模式的步驟
1、E-R圖轉換為表並進行必要的合併:
本步可以按照機械方法完成。一個良好的E-R圖,完成本步轉換和合並得到的結果,已經是比較理想的資料庫模式(儘管還有人工進一步優化的餘地)。
2、優化:
本步無具體可行的機械方法,主要依靠設計人員的經驗和能力。
聯絡轉化成的表,和實體轉化成的表,可以機械地按照下述原則合併:
二元一對一聯絡:
聯絡轉化的表可以與任一端實體轉化成的表進行合併,二元一對一聯絡不能導致相關實體轉化成的表合併。
二元多對一聯絡:
聯絡轉化的表可以和“多端” 實體轉化成的表進行合併。
二元多對多聯絡:
將聯絡定義為新的關係,屬性為參與雙方的主碼和聯絡的描述性屬性,不能進行合併。
多元聯絡:
聯絡轉化的表和實體轉化的表不能進行合併,即便是m:n:1,其轉化的表和也不能進行合併。