資料庫E-R圖相關
2014年6月15日
17:39
E-R資料模型所採用的三個主要概念是:實體集、聯絡集和屬性
實體集:具有相同類型及相同性質(或屬性)的實體集合
屬性:簡單屬性和符合屬性;單值屬性和多值屬性;null屬性;派生屬性
聯絡集:聯絡是多個實體間的相互關聯。聯絡集是同類聯絡的集合。
eg:如果E1,E2,…,En為n個實體集,那麼聯絡集R是{(e1,e2,…,en)|e1屬於E1,e2屬於E2,…en屬於En}的一個子集,而(e1,e2,…,en)是一個聯絡。
畫面剪輯的捕獲時間:2014/6/15 18:14
碼:給定實體集中的實體或給定聯絡集中的聯絡如何相互區別
實體集:
超碼:一個或多個屬性的集合,這些屬性的組合可以使我們在一個實體集中唯一地標識一個實體。(可能有冗餘屬性)
候選碼:最小超碼(該超碼的任意真子集都不能成為超碼)就是候選碼。候選碼可以有多個。
主碼:被資料設計者選中的,用來在同一實體集中區分不同實體的候選碼。
實體集中的任意兩個實體都不允許同時在碼屬性上具有相同的值。
聯絡集:(超碼,主碼與聯絡集的屬性無關)
超碼:各個實體的主碼的並集就是聯絡集的超碼。
主碼:依賴於聯絡集映射的基數(一對多等)。對於多對多情況,由兩張表的主碼共同組成;對於一對多的情況,由多的一方的主碼組成;對於一對一情況,其中任何一張表的主碼均可以做聯絡集的主碼。
映射的基數:一對一;一對多;多對一;多對多
A和B是實體集
一對一:A中的一個實體至多同B中的一個實體相聯絡,B中的一個實體也至多同A中的一個實體
一對多:A中的一個實體可以同B中的任意數目的實體相聯絡,B中的一個實體至多同A中的一個實體相聯絡
多對多:A中的一個實體可以同B中任意數目的實體相聯絡,B中的一個實體也可以同A中任意數目的實體相聯絡。
聯絡也可能具有描述性屬性,區別於聯絡包含的實體的屬性
用實體集還是用屬性:主要區別依賴於被建模的現實世界事實的結構,以及所討論的屬性的相關語義
用實體集還是用聯絡集:當描述發生在實體間的行為時採用聯絡集。這一方法在決定將某些屬性工作表述為聯絡時是否會更確切時也很有用
聯絡的基數比例可能影響聯絡屬性所處的位置。一對一或一對多聯絡集的屬性可以放到參與的實體集之中,而不是放到聯絡集中。一對多聯絡的屬性可以放到聯絡中“多”的一方的實體集中,而對一對一的聯絡集而言,聯絡的屬性可以放到參與聯絡的任何一個實體集中。
具體設計時將描述性屬性作為聯絡的屬性還是實體的屬性這一決定應該反映所類比的事實的特點。設計者可以選擇保留access-date作為depositor的屬性,用以顯示地表明訪問發生在實體集customer和account的互動點上。
多對多的情況下,當一個屬性是由參與的實體集聯合確定而不是由單獨的某個實體集確定時,該屬性就必須放到多對多聯絡集中。
依賴、全部參與、部分參與
存在依賴:貸款與還款,一條貸款資料可能對應多條還款資料,還款依賴於貸款。
全部參與:實體全部參與到某個聯絡集中。還款資料實體全部參與到“貸款還款”關係中,所有還款都與某個貸款有聯絡。
部分參與:實體部分參與到某個聯絡集中。客戶資料實體部分參與到“客戶貸款”關係中,不是所有客戶都有貸款。
E-R圖:可以表示資料庫的全域邏輯結構,簡單、清晰
矩形:實體集。
橢圓:屬性。
菱形:聯絡集。
線段:將屬性串連到實體集或將實體串連到聯絡集。
雙橢圓:表示多值屬性。
虛橢圓:表示派生屬性。
雙線:表示一個實體全部參與到聯絡集中。
沒箭頭的直線:多對多
有箭頭的直線:箭頭指向1的一邊
派生屬性:在資料庫中,一個實體包含多個屬性,那麼可以從其他屬性中得來的屬性就叫做派生屬性。例如:“學生”實體中有“生日”和“年齡”等屬性,從“生日”可以計算出“年齡”屬性的值,“年齡”屬性就是派生屬性。
多值屬性:例如員工的親戚,可以有多個。設計資料庫表的時候要單獨起一張表。
畫面剪輯的捕獲時間:2014/6/18 19:30
主碼包含的屬性以底線表明。
弱實體集:實體集的屬性都不足以形成主碼,這樣的實體集稱作弱實體集。
弱實體集用雙邊框的矩形表示,對應的標誌性聯絡以雙邊框的菱形表示。
弱實體沒有主碼,但是有分辨符,用虛底線標明
弱實體集的主碼:由該弱實體集所依賴的強實體集的主碼和該弱實體集的分辨符共同組成。
如果弱實體集只參與標誌性聯絡,而其屬性不多,那麼在建模時將其表述為一個屬性更恰當。相反地,如果弱實體集參與到標識性聯絡以為的聯絡中,或者其屬性較多,則建模時將其表述為弱實體集更恰當。
特殊化和概括我們都可以用上面三角形構建來表示,屬性繼承也是針對特殊化和概括而言的。
聚集:聯絡被當做實體對待
畫面剪輯的捕獲時間:2014/6/18 17:42
設計資料庫的E-R模式
畫面剪輯的捕獲時間:2014/6/18 20:15
將E-R模式轉換為表
用表來表示強實體集:
用表來表示弱實體集:
弱實體集屬性加所依賴的強實體集的主碼
用表表示聯絡集:
弱實體集和強實體集關聯的聯絡集的表是冗餘的
多對一的合并:實體A和實體B以及多對一聯絡集AB,如果A對B有依賴,則只建立兩個表,A中多一個和B主鍵屬性。(多對一,兩張表,多的一方包含外鍵;多對多,三張表,關係表+兩個實體表)
用表來表示多值屬性:
對於一個多值屬性M,必須建立新表T,其中有一列C與M對應,T中其餘列對應於以M為多值屬性的實體集或聯絡集的主碼。例如員工的親屬,多行。
用表來表示概括:
1.為高層實體集建立一個表,同時為每個底層實體集建立一個表。底層實體集中包括對應於底層實體集的各屬性的列,另外,也包括高層實體集主碼的所有屬性列。(圖2-15可以建立對應6個表)
2.如果概括是不相交且全部的——即如果兩個低層實體集直接隸屬於同一高層實體集,那麼就不會有實體同時屬於這兩個低層實體集;同時,高層實體集的任何實體也必然會是某個低層實體集的成員。此時,可採用另一種表示方法:不為高層實體集建立任何錶,只為每個低層實體集建立一個表,表中包括對應於低層實體集各屬性的列和對應於高層實體集各屬性的列。(圖2-15可以建立對應4個表)
用來表示聚集:
畫面剪輯的捕獲時間: 2014/6/18 20:03