1. 程式人生 > >E-R圖到數據庫表

E-R圖到數據庫表

繼承 gray 有一種 account 構建 線段 ack alt 數據

數據庫E-R圖相關

2014615

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

E-R圖到數據庫表