天天看點

《資料庫原理與應用(第3版)》——2.2 概念層資料模型

本節書摘來自華章出版社《資料庫原理與應用(第3版)》一 書中的第2章,第2.2節,作者:何玉潔,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

從圖2-1可以看出,概念層資料模型實際上是現實世界到機器世界的一個中間層,機器世界實作的最終目的是為了反映和描述現實世界。本節介紹概念層資料模型的基本概念及基本建構方法。

概念層資料模型是指抽象現實系統中有應用價值的元素及其關聯關系,反映現實系統中有應用價值的資訊結構,并且不依賴于資料的組織層資料模型。

概念層資料模型用于對資訊世界的模組化,是現實世界到資訊世界的第一層抽象,是資料庫設計人員進行資料庫設計的工具,也是資料庫設計人員和業務領域的使用者之間進行交流的工具,是以,該模型一方面應該具有較強的語義表達能力,能夠友善、直接地表達應用中的各種語義知識;另一方面還應該簡單、清晰和易于被使用者了解。因為概念模型設計的正确與否,即所設計的概念模型是否合理、是否正确地表達了現實世界的業務情況,是由業務人員來判定的。

概念層資料模型是面向使用者、面向現實世界的資料模型,它與具體的dbms無關。采用概念層資料模型,設計人員可以在資料庫設計的開始把主要精力放在了解現實世界上,而把涉及dbms的一些技術性問題推遲到後面去考慮。

常用的概念層資料模型有實體-聯系(entity-relationship,e-r)模型、語義對象模型。本書隻介紹實體-聯系模型,這也是最常用的一種模型。

如果直接将現實世界資料按某種具體的組織模型進行組織,必須同時考慮很多因素,設計工作也比較複雜,并且效果并不一定理想,是以需要一種方法能夠對現實世界的資訊結構進行描述。事實上這方面已經有了一些方法,我們要介紹的是p.p.s.chen于1976年提出的實體-聯系方法,即通常所說的e-r方法。這種方法由于簡單、實用,是以得到了廣泛的應用,也是目前描述資訊結構最常用的方法。

實體-聯系方法使用的工具稱為e-r圖,它所描述的現實世界的資訊結構稱為企業模式(enterprise schema),也把這種描述結果稱為e-r模型。

在實體-聯系模型中主要涉及三方面内容:實體、屬性和聯系。

(1)實體

實體是具有公共性質并可互相區分的現實世界對象的集合,或者說是具有相同結構的對象的集合。實體是具體的,如職工、學生、教師、課程都是實體。

在e-r圖中用矩形框表示具體的實體,把實體名寫在框内,如圖2-2a中的“經理”和“部門”實體。

實體中每個具體的記錄值(一行資料),比如學生實體中的每個具體的學生,我們稱之為實體的一個執行個體。(注意,有些書也将實體稱為實體集或實體類型,而将每行具體的記錄稱為實體。)

(2)屬性

每個實體都具有一定的特征或性質,這樣我們才能根據實體的特征來區分一個個執行個體。屬性就是描述實體或者聯系的性質或特征的資料項,屬于一個實體的所有執行個體都具有相同的性質。在e-r模型中,這些性質或特征就是屬性。比如學生的學号、姓名、性别等都是學生實體具有的特征,這些特征就構成了學生實體的屬性。實體應具有多少個屬性是由使用者對資訊的需求決定的。例如,假設使用者還需要學生的出生日期資訊,則可以在學生實體中加一個“出生日期”屬性。

在實體的屬性中,将能夠唯一辨別實體的一個屬性或最小的一組屬性(稱為屬性集或屬性組)稱為實體的辨別屬性,這個屬性或屬性組也稱為實體的鍵。例如,“學号”就是學生實體的鍵。

屬性在e-r圖中用圓角矩形表示,在圓角矩形框内寫上屬性的名字,并用連線将屬性框與它所描述的實體聯系起來,如圖2-2c所示。

《資料庫原理與應用(第3版)》——2.2 概念層資料模型

(3)聯系

在現實世界中,事物内部以及事物之間是有聯系的,這些聯系在資訊世界反映為實體内部的聯系和實體之間的聯系。實體内部的聯系通常是指一個實體内部屬性之間的聯系,實體之間的聯系通常是指不同實體屬性之間的聯系。比如在“職工”實體中,假設有職工号、職工姓名、所在部門和部門經理号等屬性,其中“部門經理号”描述的是這個職工所在部門的經理的編号。一般來說,部門經理也屬于機關的職工,而且通常與職工采用的是同一套職工編碼方式,是以“部門經理号”與“職工号”之間有一種關聯的關系,即“部門經理号”的取值在“職工号”取值範圍内。這就是實體内部的聯系。而“學生”和“系”之間就是實體之間的聯系,“學生”是一個實體,假設該實體中有學号、姓名、性别、所在系等屬性,“系”也是一個實體,假設該實體中包含系名、系聯系電話,系辦公地點等屬性,則“學生”實體中的“所在系”與“系”實體中的“系名”之間存在一種關聯關系,即“學生”實體中“所在系”屬性的取值範圍必須在“系”實體中“系名”屬性的取值範圍内,因為不可能招收不在學校已有系範圍内的學生。是以像“系”和“學生”這種關聯到兩個不同實體的聯系就是實體之間的聯系。通常情況下我們遇到的聯系大多都是實體之間的聯系。

聯系是資料之間的關聯關系,是客觀存在的應用語義鍊。在e-r圖中聯系用菱形框表示,框内寫上聯系名,并用連線将聯系框與它所關聯的實體連接配接起來,如圖2-2c中的“選課”聯系。

聯系也可以有自己的屬性,比如圖2-2c所示的“選課”聯系中有“成績”屬性。

兩個實體之間的聯系通常有如下三種類型。

1)一對一聯系(1∶1)。如果實體a中的每個執行個體在實體b中至多有一個(也可以沒有)執行個體與之關聯,反之亦然,則稱實體a與實體b具有一對一聯系,記作1∶1。

例如,部門和經理(假設一個部門隻允許有一個經理,一個人隻允許擔任一個部門的經理)、系和正系主任(假設一個系隻允許有一個正主任,一個人隻允許擔任一個系的主任)都是一對一的聯系,如圖2-2a所示。

2)一對多聯系(1∶n)。如果實體a中的每個執行個體在實體b中有n(n≥0)個執行個體與之關聯,而實體b中的每個執行個體在實體a中最多隻有一個執行個體與之關聯,則稱實體a與實體b是一對多聯系,記作1∶n。

例如,假設一個部門有若幹職工,而一個職工隻允許在一個部門工作,則部門和職工之間就是一對多聯系。又比如,假設一個系有多名教師,而一個教師隻允許在一個系工作,則系和教師之間也是一對多聯系,如圖2-2b所示。

3)多對多聯系(m∶n)。如果實體a中的每個執行個體在實體b中有n(n≥0)個執行個體與之關聯,而實體b中的每個執行個體在實體a中也有m(m≥0)個執行個體與之關聯,則稱實體a與實體b是多對多聯系,記為m∶n。

比如學生和課程,一個學生可以選修多門課程,一門課程也可以被多個學生選修,是以學生和課程之間是多對多的聯系,如圖2-2c所示。

實際上,一對一聯系是一對多聯系的特例,而一對多聯系又是多對多聯系的特例。

注意:實體之間聯系的種類是與語義直接相關的,也就是由客觀實際情況決定的。例如,部門和經理,如果客觀情況是一個部門隻有一個經理,一個人隻擔任一個部門的經理,則部門和經理之間是一對一聯系。但如果客觀情況是一個部門可以有多個經理,而一個人隻擔任一個部門的經理,則部門和經理之間就是一對多聯系。如果客觀情況是一個部門可以有多個經理,而且一個人也可以擔任多個部門的經理,則部門和經理之間就是多對多聯系。

e-r圖不僅能描述兩個實體之間的聯系,而且還能描述兩個以上實體之間的聯系。比如有顧客、商品、售貨員三個實體,并且有語義:每個顧客可以從多個售貨員那裡購買商品,并且可以購買多種商品;每個售貨員可以向多名顧客銷售商品,并且可以銷售多種商品;每種商品可由多個售貨員銷售,并且可以銷售給多名顧客。描述顧客、商品和售貨員之間的關聯關系的e-r圖如圖2-3

所示,這裡聯系被命名為“銷售”。

e-r圖被廣泛用于資料庫設計的概念結構設計階段。用e-r圖表示的資料庫概念設計結果非常直覺,易于使用者了解,而且所設計的e-r圖與具體的資料組織方式無關,并且可以被直覺地轉換為關系資料庫中的關系表。