數(shù)據(jù)庫設(shè)計理論及應(yīng)用(4)——概念結(jié)構(gòu)設(shè)計
數(shù)據(jù)庫設(shè)計理論及應(yīng)用(4)——概念結(jié)構(gòu)設(shè)計
作者:最后一只恐龍 發(fā)表時間:
?
該系列計劃包括5部分:完整性約束理論及應(yīng)用、范式理論及應(yīng)用、需求分析、概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計。本文是第四部分,介紹概念結(jié)構(gòu)設(shè)計的內(nèi)容,包括分E-R的設(shè)計、分E-R圖的集成、以及基本E-R圖的設(shè)計。
?
1.概念模型
概念模型是現(xiàn)實世界到機器世界的一個中間層次,在這個層次中,使用接近計算機存儲的方式表示數(shù)據(jù),同時又不涉及具體的DBMS。做出概念模型后,再轉(zhuǎn)換為具體的DBMS(如SQL Server或Oracle)下的模型,就成為邏輯模型。
概念模型中包括實體、屬性、碼、域、聯(lián)系等概念,在本系列文章的第一部分已作說明,下面再介紹其它幾個概念。
1.1 兩個實體型間的聯(lián)系
(1)一對一聯(lián)系:實體集A中的每一個實體,實體集B中至多有一個實體與之有聯(lián)系,反之亦然,則稱實體集A與B具有一對一聯(lián)系,記為1:1。如班級與班長的聯(lián)系,一個班只有一個班長,一個班長也只能在一個班級中任職。
(2)一對多聯(lián)系:實體集A中的每一個實體,實體集B中有n(n≥0)個實體與之有聯(lián)系;而實體B中的每一個實體,實體A中至多有一個與之有聯(lián)系,則稱實體集A與B具有一對多聯(lián)系,記為1:n。如班級與學(xué)生的聯(lián)系,一個班有多個學(xué)生,一個學(xué)生只能在一個班級學(xué)習。
(3)多對多聯(lián)系:實體集A中的每一個實體,實體集B中有n(n≥0)個實體與之有聯(lián)系;而實體B中的每一個實體,實體A中有m(m≥0)個與之有聯(lián)系,則稱實體集A與B具有多對多聯(lián)系,記為m:n。如教師與學(xué)生的聯(lián)系,一個教師可以教多名學(xué)生,一名學(xué)生也可以上多位老師的課。
1.2 其它類型的聯(lián)系
兩個以上實體集之間也存在1:1、1:n、m:n的聯(lián)系。如教師、課程、參考書的聯(lián)系。注意把這三個實體之間的聯(lián)系與兩兩直接的多個聯(lián)系區(qū)分開來。
同一個實體集的各實體之間也存在1:1、1:n、m:n的聯(lián)系。如職工和職工之間有直接領(lǐng)導(dǎo)的聯(lián)系。
1.3 概念模型的一種表示方法:實體-聯(lián)系方法
概念模型最著名的方法就是P.P.S.Chen于1976年提出的實體-聯(lián)系方法,也就是E-R圖方法了。E-R圖的表示方法:
(1) 實體型:用矩形表示,矩形框內(nèi)寫明實體名。
(2) 屬性:用橢圓表示,并用無向邊與相應(yīng)實體連接起來。
(3) 聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實體連接起來,同時在無向邊上標明關(guān)系的類型。
一般E-R圖的構(gòu)造過程是:
(1)?????? 根據(jù)局部應(yīng)用的數(shù)據(jù)流圖,設(shè)計分E-R圖。
(2)?????? 將各局部應(yīng)用的分E-R圖合并起來,消除沖突,形成初步E-R圖。
(3)?????? 消除初步E-R圖中的冗余,構(gòu)造基本E-R圖。
下面討論上篇文章介紹的工廠管理信息系統(tǒng)的E-R圖構(gòu)造方法。先看一下銷售子系統(tǒng)的分E-R圖。
2.銷售子系統(tǒng)的分E-R圖
2.1 存儲實體
根據(jù)上節(jié)所畫的數(shù)據(jù)流圖,我們發(fā)現(xiàn)了如下幾個數(shù)據(jù)存儲:應(yīng)收帳款、訂單(訂單記錄本)、產(chǎn)品(產(chǎn)品描述)、待完成訂單、發(fā)票主清單、發(fā)票記錄本。我們對這幾個存儲對象進行分析,明確以下幾點:
(1)待完成訂單:因為訂單完成后開發(fā)票,因此沒有發(fā)票號的訂單就可以認為是待完成訂單,因此這個實體雖然對用戶來講是必須的,但在設(shè)計中沒有必要單獨存儲。
(2)發(fā)票主清單和發(fā)票記錄本:這個數(shù)據(jù)存儲對應(yīng)手工憑證,發(fā)票上的信息在開發(fā)票時已存入應(yīng)收帳款,因此沒有必要再存儲。
這樣,需要存儲的實體只剩下應(yīng)收帳款、訂單、產(chǎn)品描述3個。
2.2 角色
數(shù)據(jù)流圖中涉及3個角色:顧客、主管部門、生產(chǎn)部門。主管部門和生產(chǎn)部門是實際操作該應(yīng)用系統(tǒng)的角色,擁有不同權(quán)限,這兩個角色要到權(quán)限管理子系統(tǒng)中設(shè)計。
顧客不是操作系統(tǒng)的角色,而是由系統(tǒng)管理的對象,應(yīng)收帳款和訂單都與顧客有聯(lián)系,因此必須在E-R圖中體現(xiàn)。
這樣,需要存儲的實體又增加了一個:顧客。
2.3 分E-R圖
根據(jù)以上4個實體,我們畫出分E-R圖的框架。(記得Microsoft Visio Enterprise Architect 版上有E-R圖設(shè)計的,但現(xiàn)在用的是Microsoft Office Visio 2003版,直接就是邏輯結(jié)構(gòu)設(shè)計的模型圖了,因此沒有用Visio畫。)
圖2.1 銷售子系統(tǒng)分E-R圖架構(gòu)
顧客
產(chǎn)品
支付
訂貨
訂單
?
應(yīng)收帳款
1
n
1
n
?
?