天天看點

資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖

資料庫設計理論及應用(4)——概念結構設計

作者:最後一隻恐龍 發表時間: 2007-6-27

該系列計劃包括5部分:完整性限制理論及應用、範式理論及應用、需求分析、概念結構設計、邏輯結構設計。本文是第四部分,介紹概念結構設計的内容,包括分E-R的設計、分E-R圖的內建、以及基本E-R圖的設計。

1.概念模型

概念模型是現實世界到機器世界的一個中間層次,在這個層次中,使用接近計算機存儲的方式表示資料,同時又不涉及具體的DBMS。做出概念模型後,再轉換為具體的DBMS(如SQL Server或Oracle)下的模型,就成為邏輯模型。

概念模型中包括實體、屬性、碼、域、聯系等概念,在本系列文章的第一部分已作說明,下面再介紹其它幾個概念。

1.1 兩個實體型間的聯系

(1)一對一聯系:實體集A中的每一個實體,實體集B中至多有一個實體與之有聯系,反之亦然,則稱實體集A與B具有一對一聯系,記為1:1。如班級與班長的聯系,一個班隻有一個班長,一個班長也隻能在一個班級中任職。

(2)一對多聯系:實體集A中的每一個實體,實體集B中有n(n≥0)個實體與之有聯系;而實體B中的每一個實體,實體A中至多有一個與之有聯系,則稱實體集A與B具有一對多聯系,記為1:n。如班級與學生的聯系,一個班有多個學生,一個學生隻能在一個班級學習。

(3)多對多聯系:實體集A中的每一個實體,實體集B中有n(n≥0)個實體與之有聯系;而實體B中的每一個實體,實體A中有m(m≥0)個與之有聯系,則稱實體集A與B具有多對多聯系,記為m:n。如教師與學生的聯系,一個教師可以教多名學生,一名學生也可以上多位老師的課。

1.2 其它類型的聯系

兩個以上實體集之間也存在1:1、1:n、m:n的聯系。如教師、課程、參考書的聯系。注意把這三個實體之間的聯系與兩兩直接的多個聯系區分開來。

同一個實體集的各實體之間也存在1:1、1:n、m:n的聯系。如職工和職工之間有直接上司的聯系。

1.3 概念模型的一種表示方法:實體-聯系方法

概念模型最著名的方法就是P.P.S.Chen于1976年提出的實體-聯系方法,也就是E-R圖方法了。E-R圖的表示方法:

(1) 實體型:用矩形表示,矩形框内寫明實體名。

(2) 屬性:用橢圓表示,并用無向邊與相應實體連接配接起來。

(3) 聯系:用菱形表示,菱形框内寫明聯系名,并用無向邊分别與有關實體連接配接起來,同時在無向邊上标明關系的類型。

一般E-R圖的構造過程是:

(1)       根據局部應用的資料流圖,設計分E-R圖。

(2)       将各局部應用的分E-R圖合并起來,消除沖突,形成初步E-R圖。

(3)       消除初步E-R圖中的備援,構造基本E-R圖。

下面讨論上篇文章介紹的工廠管理資訊系統的E-R圖構造方法。先看一下銷售子系統的分E-R圖。

2.銷售子系統的分E-R圖

2.1 存儲實體

根據上節所畫的資料流圖,我們發現了如下幾個資料存儲:應收帳款、訂單(訂單記錄本)、産品(産品描述)、待完成訂單、發票主清單、發票記錄本。我們對這幾個存儲對象進行分析,明确以下幾點:

(1)待完成訂單:因為訂單完成後開發票,是以沒有發票号的訂單就可以認為是待完成訂單,是以這個實體雖然對使用者來講是必須的,但在設計中沒有必要單獨存儲。

(2)發票主清單和發票記錄本:這個資料存儲對應手工憑證,發票上的資訊在開發票時已存入應收帳款,是以沒有必要再存儲。

這樣,需要存儲的實體隻剩下應收帳款、訂單、産品描述3個。

2.2 角色

資料流圖中涉及3個角色:顧客、主管部門、生産部門。主管部門和生産部門是實際操作該應用系統的角色,擁有不同權限,這兩個角色要到權限管理子系統中設計。

顧客不是作業系統的角色,而是由系統管理的對象,應收帳款和訂單都與顧客有聯系,是以必須在E-R圖中展現。

這樣,需要存儲的實體又增加了一個:顧客。

2.3 分E-R圖

根據以上4個實體,我們畫出分E-R圖的架構。(記得Microsoft Visio Enterprise Architect 版上有E-R圖設計的,但現在用的是Microsoft Office Visio 2003版,直接就是邏輯結構設計的模型圖了,是以沒有用Visio畫。)

資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖
圖2.1 銷售子系統分E-R圖架構
顧客
産品
支付
訂貨
訂單
應收帳款
1
n
1
n

對這個架構,做如下說明:

(1)首先分析訂單實體:我們拿到一張訂單,會發現每張訂單由訂單号、若幹頭資訊和訂單細節組成。訂單細節又有序号、零件号、數量等描述。這樣訂單細節具有需要描述的性質,是以不能作為屬性對待,而應上升為一個實體(也就是一條細節對應一條記錄),一張訂單可以訂若幹産品,是以訂單與訂單細節直接是1:n聯系。

(2)原訂單與産品之間的聯系,實際上是訂單細節與産品的聯系。訂單處理時,從産品中獲得目前價格等資訊。

(3)在需求分析過程中,發現工廠對大宗訂貨有優惠,每種産品都規定了不同訂貨數量的折扣。因為每種産品根據訂貨數量的不同,折扣不同,是以折扣規則應單獨作為一個實體,而不應放到産品描述實體中。

圖2.2 銷售子系統分E-R圖

經過以上分析,我們可以畫出該子系統的分E-R圖:

資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖

需要特别注意的是,該分E-R圖的訂單細節實體是有問題的。我們選擇了序号作為訂單細節的唯一辨別,這在一張訂單中是沒有問題的,但放到全局中,它并不能準确定位一個訂單細節,因為我們隻有知道的該細節是哪張訂單的,才能準确知道對應哪條記錄。關于這一點的處理在下篇文章中介紹。

3.視圖的內建

各子系統的分E-R圖設計完成以後,下一步就是把所有的分E-R圖合并成一個總E-R圖,這個總E-R圖稱為初步E-R圖。

視圖內建的方法可以是一次內建,也可以分步內建(比如每次內建兩個,直到最後都內建到一起)。

在內建過程中,經常碰到分E-R圖有沖突的情況,具體如下。

3.1 合并過程中的沖突及解決方法

(1)屬性沖突

i)屬性域沖突:即屬性值的類型、取值範圍或取值集合不同,如零件号,有的部門作為整數對待,有的部門則使用字元串。不同部門對零件号的編碼也可能不同。

解決辦法:統一起來就是了,隻是這個過程不太容易。

ii)屬性取值機關沖突:如零件重量,有的部門以公斤為機關,有的部門以克為機關。

解決辦法:部門間協商解決,但也不容易。試想一下,管螺栓的部門自然希望以克為機關,而管幾百斤重的零件的部門則希望以公斤為機關;即使零件重量差别沒有這麼大,習慣也是個問題。

(2)命名沖突

包括同名異義和異名同義。如科研項目,财務科稱為項目,科研處稱為課題,生産管理處稱為工程,這就是一個異名同義的例子。

解決辦法:協商或采用行政手段加以解決。當然如果你不嫌麻煩,也可以自己先統一起來,然後為不同使用者定義不同的視圖,使不同使用者看到的是适合自己的别名。

(3)結構沖突

圖3.1 物資子系統分E-R圖

i)同一對象在不同應用中有不同的抽象:如在教學管理中,職稱是一個屬性;而在人事管理中,因為職稱與工資、住房挂鈎,是以是一個實體。

解決辦法:把屬性變換為實體。

ii)同一實體在不同分E-R圖中包含的屬性個數不完全相同。

解決辦法:取并集。

iii)實體間的聯系在不同分E-R圖中為不同類型:如生産子系統分E-R圖中,産品和零件構成1:n聯系。而物資子系統分E-R圖中,産品、零件、供應商三者構成多對多聯系。

圖3.2 人事子系統分E-R圖

解決辦法:根據應用的語義進行綜合或調整。

3.2 執行個體

對工廠的E-R圖,現在僅完成了銷售子系統的分E-R圖(圖2.2)。而其它兩個小組則完成了物資子系統(圖3.1)和人事子系統(圖3.2)的分E-R圖(因為篇幅關系,沒有畫出屬性)。

資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖
資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖

現在要把它們合并起來,經分析,發現三個圖中的“産品描述”實體和“項目”實體存在異名同義的沖

圖3.3 初步E-R圖

突,把名字統一為“産品”,得到初步E-R圖(圖3.3)。

資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖

4.設計基本E-R圖

初步E-R圖中,還可能存在資料備援,需要将這些備援消除。備援大緻可分為兩類:

l         備援資料:存在可由基本資料導出的資料;

l         備援聯系:存在可由其它聯系導出的聯系。

圖4.1是一個資料備援的例子,其中有兩個備援:

(1)       産品使用材料的“用量”,可以通過其使用的零件,以及每個零件消耗材料的“消耗量”計算出來。

(2)       每種材料的“總存量”,可以通過每個倉庫中存放該零件的“存放量”累加得到。

資料庫設計理論及應用(4)——概念結構設計1.概念模型 2.銷售子系統的分E-R圖 3.視圖的內建 4.設計基本E-R圖

尋找這些備援的方法,一是本文這種分析方法,另一種方法是求資料依賴集的最小覆寫的方法。後一種方法數學理論要求比較高,就不介紹了。

消除掉這些備援資訊後,就得到了基本E-R圖,整個概念結構設計過程也宣告完成。