【正文】
集的主碼的組合構(gòu)成一個(gè)聯(lián)系集的超碼。 ? (customer_id, account_number) is the super key of depositor ? 注:給定的聯(lián)系集中的一個(gè)聯(lián)系實(shí)例必須是由其參與實(shí)體能唯一標(biāo)識(shí)的,而不必使用描述屬性。 ? 假設(shè)我們要記錄一個(gè)客戶訪問一個(gè)賬戶的所有日期。單值的屬性access_date只能保存一個(gè)訪問日期。我們不能通過同一用戶和帳號(hào)之間聯(lián)系的多個(gè)實(shí)例來表示多個(gè)訪問日期,因?yàn)檫@些聯(lián)系實(shí)例無法僅使用參與的實(shí)體來唯一的標(biāo)識(shí)。正確的處理方法是創(chuàng)建一個(gè)多值的屬性access_date,它可以保存所有的訪問日期。 ? 聯(lián)系集的主碼結(jié)構(gòu)依賴于聯(lián)系集的映射基數(shù)。 ? 例如,實(shí)體集 customer和 account,以及具有屬性 access_date的聯(lián)系集depositor。 ? 如果聯(lián)系集是多對多的,那么 depositor的主碼由 customer和 account的主碼共同組成。 ? 如果一個(gè)客戶只能有一個(gè)帳號(hào),即 depositor聯(lián)系是從 customer到 account多對一的,則 depositor的主碼就是 customer的主碼。 ? 如果聯(lián)系是從 account到 customer多對一的,則每個(gè)帳號(hào)最多只能屬于一個(gè)客戶,所以 depositor的主碼就是 account的主碼。 ? 一對一的聯(lián)系中,可以使用兩個(gè)主碼中的任意一個(gè)來作為聯(lián)系的主碼。 ER 圖 ? 矩形表示實(shí)體集; 雙矩形表示弱實(shí)體集 ? 菱形表示聯(lián)系集 ? 線段將屬性連接到實(shí)體集或?qū)?shí)體集連接到聯(lián)系集 ? 橢圓表示屬性 ? 雙橢圓表示多值屬性 ? 虛橢圓表示派生屬性 ? 雙線表示一個(gè)實(shí)體集全部參與到聯(lián)系集中 ? 下劃線表示主碼屬性 帶有復(fù)合、多值和派生屬性的 ER圖 具有描述性屬性的聯(lián)系集 角色 ? 參與一個(gè)聯(lián)系集的實(shí)體集可以相同 ? 標(biāo)簽 ―manager‖ 和 ―worker‖ 稱為 角色; 表示實(shí)體在聯(lián)系中的作用 ? 角色在 ER圖中用連接菱形和矩形的線段上的標(biāo)簽指明 ? 角色標(biāo)簽是可選的,用于解釋聯(lián)系的語義 OneToMany 聯(lián)系 ? Onetomany 聯(lián)系 borrower : a loan is associated with at most one customer via borrower, a customer is associated with several (including 0) loans via borrower ManyToOne 聯(lián)系 ? Manytoone 聯(lián)系 borrower : a loan is associated with several (including 0) customers via borrower, a customer is associated with at most one loan via borrower ManyToMany 聯(lián)系 ? A customer is associated with several (possibly 0) loans via borrower ? A loan is associated with several (possibly 0) customers via borrower 參與 ? 全部參與 (雙線 ): every entity in the entity set participates in at least one relationship in the relationship set ? 例如: participation of loan in borrower is total ? every loan must have a customer associated to it via borrower ? 部分參與: some entities may not participate in any relationship in the relationship set ? 例如: participation of customer in borrower is partial 三元聯(lián)系 ER圖 實(shí)體 聯(lián)系設(shè)計(jì)問題 實(shí)體集和聯(lián)系集的概念并不精確,而且定義一組實(shí)體及它們的相互聯(lián)系可能有多種不同的方式。 ? 用實(shí)體集還是用屬性 ? 用實(shí)體集還是用聯(lián)系集 ? 用二元聯(lián)系集與 n元聯(lián)系集 ? 聯(lián)系屬性的布局 實(shí)體集 Vs. 屬性 ? 具有屬性 employee_id、 employee_name和 telephone_number的實(shí)體集employee。 ? 如果電話可以作為一個(gè)單獨(dú)的實(shí)體,它具有屬性 telephone_number和 location ? 實(shí)體集 employee,具有屬性 employee_id和 employee_name。 ? 實(shí)體集 telephone,具有屬性 telephone_number和 location。 ? 聯(lián)系集 emp_telephone,表示員工及電話間的聯(lián)系。 ? 兩種定義主要差別 ? 將電話處理成為一個(gè) telephone_number屬性暗示對每個(gè)員工,正好有一個(gè)電話號(hào)碼與之相聯(lián)系;而將電話看成一個(gè) telephone實(shí)體,就允許每個(gè)員工可以有多個(gè)電話號(hào)碼與之相聯(lián)系。也就是說,將電話作為一個(gè)實(shí)體來建??梢员4骊P(guān)于電話的額外信息,如它的位置,或類型(移動(dòng)的,視頻的或普通的舊電話),或哪些人共用。因此把電話視為一個(gè)實(shí)體比把它視為一個(gè)屬性的方式更具有通用性;而且當(dāng)這種通用性很重要的時(shí)候,這種定義方式就更為適合。 實(shí)體集 Vs. 屬性 ? 什么作為屬性?什么作為實(shí)體集? ? 區(qū)分它們主要依賴于被建模的實(shí)際企業(yè)的結(jié)構(gòu),以及被討論的屬性的相關(guān)語義。 ? 常見錯(cuò)誤 ? 用一個(gè)實(shí)體集的主碼作為另一個(gè)實(shí)體集屬性,而不是使用聯(lián)系。 – 例如,即使每筆貸款只有一個(gè)客戶,將 cumstomer_id作為loan的屬性也是不正確的。用 borrower聯(lián)系代表貸款和客戶之間的關(guān)聯(lián)才是正確的方法,這樣可以明確地表示出兩者之間的關(guān)系,而不是將這種關(guān)系隱含在屬性中。 ? 將相關(guān)實(shí)體集的主碼屬性作為聯(lián)系集的屬性。 – 例如, loan_number和 customer_id不應(yīng)該在 borrower聯(lián)系中作為屬性出現(xiàn)。這樣做是不對的,因?yàn)樵诼?lián)系集的表示中已經(jīng)隱含了這些主碼屬性。 實(shí)體集 Vs. 聯(lián)系集 ? 銀行貸款的建模