- 數(shù)據(jù)庫原理及應(yīng)用(Access版)第3版
- 吳靖
- 5205字
- 2020-04-07 16:33:28
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ǔ)。
- Flask Web全棧開發(fā)實(shí)戰(zhàn)
- Visual Basic .NET程序設(shè)計(第3版)
- Cross-platform Desktop Application Development:Electron,Node,NW.js,and React
- Neo4j Essentials
- 差分進(jìn)化算法及其高維多目標(biāo)優(yōu)化應(yīng)用
- IBM Cognos Business Intelligence 10.1 Dashboarding cookbook
- Mobile Device Exploitation Cookbook
- Fast Data Processing with Spark(Second Edition)
- Node.js從入門到精通
- Mastering jQuery Mobile
- Three.js權(quán)威指南:在網(wǎng)頁上創(chuàng)建3D圖形和動畫的方法與實(shí)踐(原書第4版)
- 零基礎(chǔ)學(xué)編程系列(全5冊)
- Google Maps JavaScript API Cookbook
- 微信公眾平臺開發(fā)最佳實(shí)踐
- Learning ClojureScript