官术网_书友最值得收藏!

1.5 實(shí)體-聯(lián)系模型

數(shù)據(jù)庫設(shè)計的過程就是利用數(shù)據(jù)模型來表達(dá)數(shù)據(jù)和數(shù)據(jù)之間聯(lián)系的過程。數(shù)據(jù)模型是一種工具,用來描述數(shù)據(jù)(Data)、數(shù)據(jù)的語義(Data Semantics)、數(shù)據(jù)之間的聯(lián)系(Relationship)以及數(shù)據(jù)的約束(Constraints)等。數(shù)據(jù)建模過程是一個抽象的過程,其目的是把一個現(xiàn)實(shí)世界中的實(shí)際問題用一種數(shù)據(jù)模型來表示,用計算機(jī)能夠識別、存儲和處理的數(shù)據(jù)形式進(jìn)行描述。在本節(jié)中,將討論一種用于數(shù)據(jù)庫概念設(shè)計的數(shù)據(jù)模型—E-R模型。一般地講,任何一種數(shù)據(jù)模型都是經(jīng)過嚴(yán)格定義的。

理解實(shí)際問題的需求之后,需要用一種方法來表達(dá)這種需求,現(xiàn)實(shí)世界中使用概念數(shù)據(jù)模型來描述數(shù)據(jù)以及數(shù)據(jù)之間的聯(lián)系,即數(shù)據(jù)庫概念設(shè)計。概念模型的表示方法之一是E-R模型,即用E-R模型表達(dá)實(shí)際問題的需求。E-R模型具有足夠的表達(dá)能力且簡明易懂,不需要使用者具有計算機(jī)知識。E-R模型以圖形的方式表示模型中各元素及其之間的聯(lián)系,所以又稱E-R圖(Entity-Relationship Diagram)。E-R圖便于理解且易于交流,因此,E-R模型得到了相當(dāng)廣泛的應(yīng)用。

1.5.1 實(shí)體-聯(lián)系模型中的基本概念

下面介紹E-R模型中使用的基本元素。

1.實(shí)體

實(shí)際問題中客觀存在并可相互區(qū)別的事物稱為實(shí)體(Entity)。實(shí)體是現(xiàn)實(shí)世界中的對象,實(shí)體可以是具體的人、事、物。例如,實(shí)體可以是一名學(xué)生、一位教師或圖書館中的一部書籍。

2.屬性

實(shí)體所具有的某一特性稱為屬性(Attribute)。在E-R模型中用屬性來描述實(shí)體,例如,通常用“姓名”“性別”“出生日期”等屬性來描述人,用“圖書名稱”“出版商”“出版日期”等屬性描述書籍。一個實(shí)體可以由若干個屬性來描述。例如學(xué)生實(shí)體可以用學(xué)號、姓名、性別、出生日期等屬性來描述。這些屬性的集合(學(xué)號,姓名,性別,出生日期)表征了一個學(xué)生的部分特性。一個實(shí)體通常具有多種屬性,應(yīng)該使用哪些屬性描述實(shí)體,取決于實(shí)際問題的需要或者說取決于最終期望得到哪些信息。例如,教務(wù)處關(guān)心、描述學(xué)生各門功課的成績,而學(xué)生處可能會更關(guān)心學(xué)生的各項(xiàng)基本情況,如學(xué)生來自哪里,監(jiān)護(hù)人是誰,如何聯(lián)系等問題。

確定屬性的兩條原則。

1)屬性必須是不可分的最小數(shù)據(jù)項(xiàng),屬性中不能包含其他屬性,不能再具有需要描述的性質(zhì)。

2)屬性不能與其他實(shí)體具有聯(lián)系,E-R圖中所表示的聯(lián)系是實(shí)體集之間的聯(lián)系。

屬性的取值范圍稱為該屬性的域(Domain)。例如,“學(xué)號”的域可以是9位數(shù)字組成的字符串,“性別”的域是“男”或“女”,“工資”的域是大于零的數(shù)值等。但域不是E-R模型中的概念,E-R模型不需要描述屬性的取值范圍。

3.實(shí)體集

具有相同屬性的實(shí)體的集合稱為實(shí)體集(Entity Set/Entity Class)。例如,全體學(xué)生就是一個實(shí)體集。實(shí)體屬性的每一組取值代表一個具體的實(shí)體。例如,(983501011,張捷,女,1978年12月)是學(xué)生實(shí)體集中的一個實(shí)體,而(993520200,李綱,男,1978年8月)是另一個實(shí)體。在E-R模型中,一個實(shí)體集中的所有實(shí)體有相同的屬性。

4.鍵

在描述實(shí)體集的所有屬性中,可以唯一地標(biāo)識每個實(shí)體的屬性稱為鍵(Key)或標(biāo)識(Identifier)。首先,鍵是實(shí)體的屬性;其次,這個屬性可以唯一地標(biāo)識實(shí)體集中每個實(shí)體。因此,作為鍵的屬性取值必須唯一且不能“空置”。例如,在學(xué)生實(shí)體集中,用學(xué)號屬性唯一地標(biāo)識每個學(xué)生實(shí)體。在學(xué)生實(shí)體集中,學(xué)號屬性取值唯一,而且每一位學(xué)生一定有一個學(xué)號(不存在沒有學(xué)號的學(xué)生)。因此,學(xué)號是學(xué)生實(shí)體集的鍵。

5.實(shí)體型

具有相同的特征和性質(zhì)的實(shí)體一定具有相同的屬性。用實(shí)體名及其屬性名集合來抽象和刻畫同類實(shí)體,稱為實(shí)體型(Entity Type)。實(shí)體型表示的格式是

實(shí)體名(屬性1,屬性2,……,屬性n)

例如,學(xué)生(學(xué)號,姓名,性別,出生日期,所屬院系,專業(yè),入學(xué)時間)就是一個實(shí)體型,其中帶有下畫線的屬性是鍵。

圖1-6所示為學(xué)生實(shí)體集的圖形表示。用矩形表示實(shí)體集,矩形框中寫入實(shí)體集名稱,用橢圓表示實(shí)體的屬性。作為鍵的屬性,用加下畫線的方式表示。

圖1-6 學(xué)生實(shí)體集的圖形表示

在建立實(shí)體集時,應(yīng)遵循的原則如下。

1)每個實(shí)體集只表現(xiàn)一個主題。例如,學(xué)生實(shí)體集中不能包含教師,它們所要描述的內(nèi)容是有差異的,屬性可能會有所不同。

2)每個實(shí)體集有一個鍵屬性,其他屬性只依賴鍵屬性而存在。并且除鍵屬性以外的其他屬性之間沒有相互依賴關(guān)系。例如,學(xué)生實(shí)體中,學(xué)號屬性值決定了姓名、性別、出生日期等屬性的取值(記為:學(xué)號→姓名 性別 出生日期),但反之不行。

6.聯(lián)系

世界上任何事物都不是孤立存在的,事物內(nèi)部和事物之間是有聯(lián)系(Relationship)的。實(shí)體集內(nèi)部的聯(lián)系體現(xiàn)在描述實(shí)體的屬性之間的聯(lián)系;實(shí)體集外部的聯(lián)系是指實(shí)體集之間的聯(lián)系,并且這種聯(lián)系可以擁有屬性。

實(shí)體集之間的聯(lián)系通常有3種類型:一對一聯(lián)系(1∶1)、一對多聯(lián)系(1∶n)和多對多聯(lián)系(m∶n)。

1.5.2 實(shí)體集之間的聯(lián)系形式

1.一對一聯(lián)系

例1-1】考慮學(xué)校里的班和班長之間的聯(lián)系問題。每個班只有一位班長,每位班長只在一個班里任職,班實(shí)體集與班長實(shí)體集之間的聯(lián)系是一對一聯(lián)系。用E-R圖表示這種一對一的聯(lián)系,如圖1-7所示。用矩形表示實(shí)體集,用菱形表示實(shí)體集之間的聯(lián)系,菱形中是聯(lián)系的名稱,菱形兩側(cè)是聯(lián)系的類型。為了強(qiáng)調(diào)實(shí)體集之間的聯(lián)系,本圖中略去了實(shí)體集的屬性。

圖1-7 班實(shí)體集與班長實(shí)體集的聯(lián)系

例1-2】某經(jīng)濟(jì)技術(shù)開發(fā)區(qū)需要對入駐其中的公司及其總經(jīng)理信息進(jìn)行管理。如果給定的需求分析如下,則建立此問題的概念模型。

(1)需求分析

1)每個公司有一名總經(jīng)理,每位總經(jīng)理只在一個公司任職。

2)需要存儲和管理的公司數(shù)據(jù)有公司名稱、地址、電話。

3)需要存儲和管理的總經(jīng)理數(shù)據(jù)有姓名、性別、出生日期、民族。

這個問題中有兩個實(shí)體對象,即公司實(shí)體集和總經(jīng)理實(shí)體集。描述公司實(shí)體集的屬性是公司名稱、地址和電話;描述總經(jīng)理實(shí)體集的屬性是姓名、性別、出生日期和民族。但兩個實(shí)體集中沒有適合作為鍵的屬性,因此為每一個公司編號,使編號能唯一地標(biāo)識每一個公司;為每一位總經(jīng)理編號,使編號能唯一地標(biāo)識每一個總經(jīng)理。并且在兩個實(shí)體集中增加“編號”屬性作為實(shí)體的鍵。

(2)E-R模型

1)實(shí)體型。

公司(公司編號,公司名稱,地址,電話)

總經(jīng)理(經(jīng)理編號,姓名,性別,出生日期,民族)

2)E-R圖如圖1-8所示。

圖1-8 公司實(shí)體集與總經(jīng)理實(shí)體集的E-R圖

作為一個完整的數(shù)據(jù)庫設(shè)計過程,還應(yīng)該有數(shù)據(jù)庫邏輯設(shè)計和數(shù)據(jù)庫實(shí)現(xiàn)。

總結(jié)上面的兩個例子,可以歸納出實(shí)體集之間一對一聯(lián)系的定義,即對于實(shí)體集A中的每一個實(shí)體,實(shí)體集B中至多有一個實(shí)體與之聯(lián)系,反之亦然,則稱實(shí)體集A與實(shí)體集B具有一對一聯(lián)系。記為1∶1。

2.一對多聯(lián)系

例1-3】考慮學(xué)生與班之間的聯(lián)系問題。一個班有多名學(xué)生,而每個學(xué)生只屬于一個班。因此,班實(shí)體集與學(xué)生實(shí)體集之間的聯(lián)系是一對多聯(lián)系,如圖1-9所示。

圖1-9 班實(shí)體集與學(xué)生實(shí)體集的聯(lián)系

例1-4】一家企業(yè)需要用計算機(jī)來管理它分布在全國各地的倉庫和員工信息。如果給定的需求信息如下,則建立此問題的概念模型。

(1)需求分析

1)某公司有數(shù)個倉庫分布在全國各地,每個倉庫中有若干名員工,每名員工只在一個倉庫中工作。

2)需要管理的倉庫信息包括倉庫名、地點(diǎn)、面積。

3)需要管理的倉庫中員工信息包括姓名、性別、出生日期和工資。

4)此問題包含兩個實(shí)體集:倉庫和員工。倉庫實(shí)體集與員工實(shí)體集之間的聯(lián)系是一對多的聯(lián)系。

5)需要為每個倉庫編號,用以唯一地標(biāo)識每個倉庫,因此倉庫實(shí)體的鍵是屬性倉庫號。

6)需要為每位員工編號,用以唯一地標(biāo)識每名員工,因此員工實(shí)體的鍵是屬性員工號。

(2)E-R模型

1)實(shí)體型。

倉庫(倉庫號,倉庫名,地點(diǎn),面積)

員工(員工號,姓名,性別,出生日期,工資)

2)E-R圖如圖1-10所示。

圖1-10 倉庫實(shí)體集與員工實(shí)體集的E-R圖

實(shí)體集之間一對多聯(lián)系是指,對于實(shí)體集A中的每一個實(shí)體,實(shí)體集B中至多有n個實(shí)體(n≥0)與之聯(lián)系;反之,對于實(shí)體集B中的每一個實(shí)體,實(shí)體集A中至多只有一個實(shí)體與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B具有一對多聯(lián)系。記為1∶n。

實(shí)體集之間的一對多聯(lián)系是實(shí)際問題中遇到最多的情況,同時也是最重要的一種聯(lián)系形式。實(shí)體集之間更復(fù)雜的聯(lián)系,例如下面的多對多聯(lián)系是通過分解為一對多聯(lián)系來解決的。

3.多對多聯(lián)系

如果對于實(shí)體集A中的每一個實(shí)體,實(shí)體集B中有n個實(shí)體(n≥0)與之聯(lián)系;反之,對于實(shí)體集B中的每一個實(shí)體,實(shí)體集A中也有m個實(shí)體(m≥0)與之聯(lián)系,則稱實(shí)體集A與實(shí)體集B具有多對多聯(lián)系。記為m∶n。

例1-5】考慮學(xué)校中的學(xué)生與各類學(xué)生社團(tuán)之間的情況。如果給定的需求分析如下,則為管理其信息建立E-R模型。

(1)需求分析

1)每名學(xué)生可以參加多個社團(tuán),每個社團(tuán)中有多名學(xué)生。

2)需要管理的社團(tuán)信息包括:社團(tuán)名、地點(diǎn)、電話。

3)需要管理的學(xué)生信息包括:學(xué)號、姓名、性別、出生日期和所屬院系。

4)需要為社團(tuán)編號,用以唯一地標(biāo)識每一個社團(tuán)并作為社團(tuán)實(shí)體集的鍵。

5)學(xué)生實(shí)體集的鍵屬性是學(xué)號,它可以唯一地標(biāo)識每一名學(xué)生。

(2)E-R模型

1)實(shí)體型。

社團(tuán)(編號,名稱,地點(diǎn),電話)

學(xué)生(學(xué)號,姓名,性別,出生日期,所屬院系)

2)E-R圖如圖1-11所示。

圖1-11 社團(tuán)實(shí)體集與學(xué)生實(shí)體集的E-R圖

例1-6】考慮學(xué)生與課程之間的情況。學(xué)校需要對學(xué)生及其選課的信息進(jìn)行管理。根據(jù)需求分析建立概念數(shù)據(jù)模型。

(1)需求分析

1)一位學(xué)生選修多門課程,每門課程也會有多個學(xué)生選擇。學(xué)生實(shí)體集與課程實(shí)體集之間的聯(lián)系是多對多的聯(lián)系。

2)需要為課程編號,用“課程號”唯一地標(biāo)識每一門課程并作為課程實(shí)體集的鍵。

3)學(xué)生實(shí)體集的鍵是屬性學(xué)號。

(2)E-R模型

1)實(shí)體型。學(xué)生(學(xué)號,姓名,性別,出生日期,院系)課程(課程號,課程名,開課單位,學(xué)時數(shù),學(xué)分)

2)E-R圖如圖1-12所示。

圖1-12 學(xué)生實(shí)體集與課程實(shí)體集的E-R圖

如果考慮學(xué)生的成績屬性,顯然這個屬性放在哪個實(shí)體中都不合適,前面說過聯(lián)系可以擁有屬性。因此,把成績放入聯(lián)系中,作為這個多對多聯(lián)系的屬性。

4.多元聯(lián)系

以上討論的問題均為兩個實(shí)體集之間的聯(lián)系,稱為二元聯(lián)系。在實(shí)際問題中經(jīng)常會遇到多個實(shí)體集之間的聯(lián)系問題,稱為多元聯(lián)系或n元聯(lián)系(n為實(shí)體集的個數(shù))。但無論一個問題中包含多少個實(shí)體集,實(shí)體集之間的聯(lián)系類型只有3種:一對一聯(lián)系、一對多聯(lián)系和多對多聯(lián)系。

例1-7】某企業(yè)需要對其倉庫、員工、訂單和供應(yīng)商的信息進(jìn)行管理。根據(jù)需求分析建立概念模型—E-R模型。

(1)需求分析

某公司有分布在全國各地的多個倉庫。每個倉庫中有多名員工。每張訂單一定是與一名員工簽訂的。每張訂單上的商品由一名供應(yīng)商供貨。

(2)E-R模型

1)實(shí)體型。

倉庫(倉庫號,倉庫名,地點(diǎn),面積)

員工(員工號,姓名,性別,出生日期,婚否,工資)

訂單(訂購單號,訂購日期,金額)

供應(yīng)商(供應(yīng)商號,供應(yīng)商名,地址)

2)E-R圖(略去屬性)如圖1-13所示。

圖1-13 多元聯(lián)系E-R圖

例1-8】產(chǎn)品銷售數(shù)據(jù)管理。根據(jù)需求分析,建立E-R模型。

(1)需求分析

產(chǎn)品銷售數(shù)據(jù)管理,需要管理的數(shù)據(jù)包括供應(yīng)商信息、產(chǎn)品信息、客戶信息、訂單信息。

每個供應(yīng)商提供多種產(chǎn)品;每個訂單包含多種產(chǎn)品,每種產(chǎn)品可能出現(xiàn)在多個訂單上;每個訂單對應(yīng)一個客戶,每個客戶可能有多個訂單。

供應(yīng)商(公司名稱,聯(lián)系人姓名,聯(lián)系電話,地址,郵政編碼,Email)

客戶(姓名,性別,電話,省份,城市,區(qū),詳細(xì)地址,郵政編碼,Email)

產(chǎn)品(名稱,價格,當(dāng)前庫存量)

訂單(訂單編號,訂單日期,產(chǎn)品,付款方式)

(2)E-R模型

E-R模型如圖1-14所示。

圖1-14 多元多對多聯(lián)系E-R模型

實(shí)體集之間這種一對一、一對多和多對多聯(lián)系不僅存在于兩個實(shí)體集之間,同樣存在于兩個以上實(shí)體集之間。這個問題中涉及4個實(shí)體,實(shí)體之間的聯(lián)系稱為多元聯(lián)系。

請為1.1引例中的A公司業(yè)務(wù)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫概念設(shè)計。同時考慮,如果A企業(yè)的產(chǎn)品還需要分類,應(yīng)該如何設(shè)計E-R模型。

根據(jù)以上示例,對數(shù)據(jù)庫概念設(shè)計過程進(jìn)行歸納,數(shù)據(jù)庫概念設(shè)計是建立在需求分析基礎(chǔ)之上的,依據(jù)需求分析完成如下工作。

1)確定實(shí)體。

2)確定實(shí)體的屬性。在討論屬性時,已經(jīng)提出了兩條確定屬性的原則,此外還應(yīng)注意以下兩點(diǎn):

●要避免在有聯(lián)系的兩個實(shí)體集或多個實(shí)體集中出現(xiàn)重復(fù)屬性。例如,在公司實(shí)體集中有“公司名稱”屬性,在總經(jīng)理實(shí)體集中就不要出現(xiàn)“公司名稱”屬性。

●要盡量避免出現(xiàn)需要經(jīng)過計算推導(dǎo)出來的屬性或需要從其他屬性經(jīng)過計算推導(dǎo)出來的屬性。例如,在學(xué)生實(shí)體中盡量保留“出生日期”屬性,而不要保留“年齡”屬性

(有的數(shù)據(jù)庫設(shè)計中,由于某種需要會違背這條原則)。

3)確定實(shí)體集的鍵。有的實(shí)體集本身已經(jīng)具有可以作為鍵的屬性,例如,學(xué)生實(shí)體集的“學(xué)號”屬性;但有的實(shí)體集不具有可以作為鍵的屬性,這時就要設(shè)立一個“編號”或“代碼”之類的屬性,作為該實(shí)體集的鍵屬性,并且在建立數(shù)據(jù)庫前為實(shí)體集中所有實(shí)體編碼。

4)確定實(shí)體集之間的聯(lián)系類型。

5)用E-R圖和實(shí)體型表達(dá)概念模型設(shè)計結(jié)果。

數(shù)據(jù)庫概念設(shè)計是一個承上啟下的階段,需要強(qiáng)調(diào)的是,概念模型是在理解需求分析的基礎(chǔ)上建立的,對需求的理解不同,所建立的概念模型可能會有所不同。概念模型建立之后,需要與業(yè)務(wù)人員進(jìn)行交流,以加深對需求的進(jìn)一步理解,對概念模型反復(fù)推敲,以求不斷完善,從而為數(shù)據(jù)庫邏輯設(shè)計打下良好基礎(chǔ)。

主站蜘蛛池模板: 寻甸| 南平市| 全南县| 剑阁县| 仪征市| 西城区| 连平县| 文水县| 西充县| 呼图壁县| 柘荣县| 济源市| 绿春县| 山东| 新绛县| 商河县| 剑川县| 侯马市| 长海县| 交城县| 慈溪市| 博爱县| 临安市| 清苑县| 都江堰市| 南康市| 贡山| 石门县| 建德市| 甘谷县| 竹山县| 宁武县| 都江堰市| 龙岩市| 英德市| 高陵县| 宜昌市| 南木林县| 安吉县| 本溪| 克山县|