數(shù)據(jù)庫(kù)系統(tǒng)1-2:實(shí)體-聯(lián)系(E-R)模型

字號(hào):

實(shí)體-聯(lián)系模型(簡(jiǎn)稱E-R模型)是由P.P.Chen于1976年首先提出的。它提供不受任何DBMS約束的面向用戶的表達(dá)方法,在數(shù)據(jù)庫(kù)設(shè)計(jì)中被廣泛用作數(shù)據(jù)建模的工具。E-R數(shù)據(jù)模型問(wèn)世后,經(jīng)歷了許多修改和擴(kuò)充,這兒僅介紹基本的E-R數(shù)據(jù)模型。
    1.2.2.1 E-R模型的結(jié)構(gòu)
    E-R模型的構(gòu)成成分是實(shí)體集、屬性和聯(lián)系集,其表示方法如下:
    (1) 實(shí)體集用矩形框表示,矩形框內(nèi)寫上實(shí)體名。
    (2) 實(shí)體的屬性用橢圓框表示,框內(nèi)寫上屬性名,并用無(wú)向邊與其實(shí)體集相連。
    (3) 實(shí)體間的聯(lián)系用菱形框表示,聯(lián)系以適當(dāng)?shù)暮x命名,名字寫在菱形框中,用無(wú)向連線將參加聯(lián)系的實(shí)體矩形框分別與菱形框相連,并在連線上標(biāo)明聯(lián)系的類型,即1—1、1—M或M—M。
    因此,E-R模型也稱為E-R圖。例如系、學(xué)生和課程的聯(lián)系的E-R模型
    系、學(xué)生和課程作為實(shí)體集;一個(gè)系有多個(gè)學(xué)生,而一個(gè)學(xué)生僅屬于一個(gè)系,所以系和課程之間是一對(duì)多的聯(lián)系;一個(gè)學(xué)生可以選修多門課程,而一門課程有多個(gè)學(xué)生選修,所以學(xué)生和課程之間是多對(duì)多的聯(lián)系。
    1.2.2.2 E-R模型對(duì)幾種特殊的實(shí)體聯(lián)系的表示
    E-R模型在表示復(fù)雜實(shí)體和實(shí)體之間的復(fù)雜聯(lián)系方面有較強(qiáng)的能力。除了可以明確表示二個(gè)實(shí)體集之間1—1、1—M或M—M的聯(lián)系。還可以:
    (1) 表示三個(gè)以上的實(shí)體集之間的聯(lián)系。
    例如,一個(gè)售貨員(Salesperson)可以將多種商品(Goods)售給一個(gè)顧客(Customer),而一個(gè)售貨員也可以將一種商品售給多個(gè)顧客;一個(gè)顧客的一種商品可以由多個(gè)售貨員經(jīng)售。售貨員、商品和顧客三個(gè)實(shí)體集之間的聯(lián)系是多對(duì)多的三元聯(lián)系,其E-R模型表(2) 表示一個(gè)實(shí)體集內(nèi)部的聯(lián)系
    例如,雇員(EMP)這個(gè)實(shí)體集中,總經(jīng)理下設(shè)多個(gè)部門經(jīng)理,而部門經(jīng)理下面有多個(gè)雇員。因此,雇員這個(gè)實(shí)體集中實(shí)體之間存在一對(duì)多的聯(lián)系,其E-R模型如圖1.12所示。
    (3) 表示二個(gè)實(shí)體集之間的多種聯(lián)系
    例如,雇員(EMP)和設(shè)備(EQUIP)之間可以有多種聯(lián)系,一種聯(lián)系是一個(gè)設(shè)備可以由多個(gè)雇員操作(operation),另一種聯(lián)系是一個(gè)雇員可以維修(maintain)多個(gè)設(shè)備,其E-R模型  1.2.2.3 作E-R圖的步驟
    (1) 確定實(shí)體和實(shí)體的屬性
    (2) 確定實(shí)體之間的聯(lián)系及聯(lián)系的類型
    (3) 給實(shí)體和聯(lián)系加上屬性
    如何劃分實(shí)體及其屬性有兩個(gè)原          則可作參考:一是作為實(shí)體屬性的事物本身沒(méi)有再需要刻畫(huà)的特征而且和其它實(shí)體沒(méi)有聯(lián)系。二是屬性的一個(gè)值可以和多個(gè)實(shí)體對(duì)應(yīng),而不是相反。盡管E-R模型中的屬性可以是單值屬性也可以是多值屬性,為簡(jiǎn)單計(jì),多值屬性常常被作為多個(gè)屬性或作為一個(gè)實(shí)體(見(jiàn)第6章弱實(shí)體)。
    例如,職工和部門,一般情況下,一個(gè)部門有多個(gè)職工,而一個(gè)職工僅屬于一個(gè)部門。所以職工應(yīng)作為實(shí)體,而部門既可作為職工的屬性——部門本身僅有一個(gè)名稱;也可以作為實(shí)體——部門具有部門號(hào)、部門名稱及電話等, 再如,職工和工種,一個(gè)工種有多個(gè)職工,而一個(gè)職工僅屬于一個(gè)工種,所以職工應(yīng)作為實(shí)體,而工種既可作為職工的屬性——工種本身僅有一個(gè)名稱;也可以作為實(shí)體——工種和其它實(shí)體,例如和勞保用品有聯(lián)系,如圖1.15所示。
    如何劃分實(shí)體和聯(lián)系也有一個(gè)原則可作參考:當(dāng)描述發(fā)生在實(shí)體集之間的行為時(shí),好采用聯(lián)系集。例如,讀者和圖書(shū)之間的借、還書(shū)行為,顧客和商品之間的購(gòu)買行為,均應(yīng)該作為聯(lián)系集。
    如何劃分聯(lián)系的屬性:一是發(fā)生聯(lián)系的實(shí)體的標(biāo)識(shí)屬性應(yīng)作為聯(lián)系的缺省屬性,二是和聯(lián)系中的所有實(shí)體都有關(guān)的屬性。例如,學(xué)生和課程的選課聯(lián)系中的成績(jī)屬性,顧客、商品和雇員之間的銷售聯(lián)系中的商品的數(shù)量等。