資料庫ER圖基礎概念
ER圖分為實體、屬性、關係三個核心部分。實體是長方形體現,而屬性則是橢圓形,關係為菱形。
ER圖的實體(entity)即資料模型中的資料物件,例如人、學生、音樂都可以作為一個數據物件,用長方體來表示,每個實體都有自己的實體成員(entity member)或者說實體物件(entity instance),例如學生實體裡包括張三、李四等,實體成員(entity member)/實體例項(entity instance) 不需要出現在ER圖中。
ER圖的屬性(attribute)即資料物件所具有的屬性,例如學生具有姓名、學號、年級等屬性,用橢圓形表示,屬性分為唯一屬性( unique attribute)和非唯一屬性,唯一屬性指的是唯一可用來標識該實體例項或者成員的屬性,用下劃線表示,一般來講實體都至少有一個唯一屬性。
ER圖的關係(relationship)用來表現資料物件與資料物件之間的聯絡,例如學生的實體和成績表的實體之間有一定的聯絡,每個學生都有自己的成績表,這就是一種關係,關係用菱形來表示。
ER圖中關聯關係有三種:
1對1(1:1) :1對1關係是指對於實體集A與實體集B,A中的每一個實體至多與B中一個實體有關係;反之,在實體集B中的每個實體至多與實體集A中一個實體有關係。
1對多(1:N) :1對多關係是指實體集A與實體集B中至少有N(N>0)個實體有關係;並且實體集B中每一個實體至多與實體集A中一個實體有關係。
多對多(M:N) :多對多關係是指實體集A中的每一個實體與實體集B中至少有M(M>0)個實體有關係,並且實體集B中的每一個實體與實體集A中的至少N(N>0)個實體有關係。
下面是個簡單的例子:
ER實體補充講解:
ER的實體還會細分為弱實體和複合實體:
弱實體:一個實體必須依賴於另一個實體存在,那麼前者是弱實體,後者是強實體,弱實體必須依賴強實體存在,例如上圖的學生實體和成績單實體,成績單依賴於學生實體而存在,因此學生是強實體,而成績單是弱實體。
弱實體和強實體的聯絡必然只有1:N或者1:1,這是由於弱實體完全依賴於強實體,強實體不存在,那麼弱實體就不存在,所以弱實體是完全參與聯絡的,因此弱實體與聯絡之間的聯絡也是用的雙線菱形。
上面例項根據弱實體的情況更改如下圖:
複合實體:複合實體也稱聯合實體或橋接實體,常常用於實現兩個或多個實體間的M:N聯絡,它由每個關聯實體的主瑪組成,用長方體內加一個菱形來表示。
下圖就是一個典型的複合實體,因為只是舉例,相對粗糙,使用者和商品兩個實體是M:N的關係,中間又訂單這個實體聯絡,因此訂單這個實體是一個複合實體,同時如果使用者 實體不存在,就沒有訂單實體的存在,因此對於使用者實體來講訂單是弱實體,同理商品實體如果不存在,同樣不存在訂單實體,因此對商品實體而言訂單是弱實體,具體如圖:
ER屬性補充講解:
er圖的屬性還細分為複合屬性、多值屬性和派生屬性、可選屬性,同時還有用來表示聯絡的屬性,稱為聯絡屬性。
複合屬性(composite attribute):複合屬性是指具有多個屬性的組合,例如名字屬性,它可以包含姓氏屬性和名字屬性,如下圖:
複合屬性也有唯一屬性,例如學生的所在班級屬性,由於多個年級都有班級,所以單單班級屬性是不唯一的,但是和年級組成的複合屬性後則可以匹配成唯一屬性。
多值屬性(multivalued attribute):一個實體的某個屬性可以有多個不同的取值,例如一本書的分類屬性,這本書有多個分類,例如科學、醫學等,這個分類就是多值屬性, 用雙線橢圓表示。
派生屬性(derivers attribute):是非永久性存於資料庫的屬性。派生屬性的值可以從別的屬性值或其他資料(如當前日期)派生出來,用虛線橢圓表示,如下圖。
下面的小組人數就是典型的派生屬性,隨著學生例項的參加的興趣小組變化,小組人數屬性也會變化,一般來講派生屬性不存在於資料庫中,而是通過相應的公式進行計算得到,如果要放到資料庫中,那麼隔一段時間就要進行更新,否則會出現資料錯誤。
可選屬性(optional attribute):並不是所有的屬性都必須有值,有些屬性的可以沒有值,這就是可選屬性,在橢圓的文字後用(O)來表示,如下圖的地址就是一個可選屬性。
聯絡屬性:聯絡屬於使用者表示多個實體之間聯絡所具有的屬性,一般來講M:N的兩個實體的聯絡具有聯絡屬性,在1:1和1:M的實體聯絡中聯絡屬性並不必要。