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

4.3 概念結構設計

將需求分析得到的用戶需求抽象為信息結構,即概念模型的過程就是概念結構設計。概念結構設計是整個數據庫設計的關鍵。概念模型獨立于計算機硬件結構,獨立于數據庫的DBMS。

4.3.1 概念結構設計的必要性及要求

在進行數據庫設計時,如果將現實世界中的客觀對象直接轉換為機器世界中的對象,會很不方便。注意力往往被轉移到更多的細節限制方面,而不能集中在最重要的信息的組織結構和處理模式上。因此,通常是將現實世界中的客觀對象首先抽象為不依賴于任何具體機器的信息結構,這種信息結構不是DBMS所支持的數據模型,而是概念模型。然后再把概念模型轉換為具體機器上DBMS支持的數據模型,設計概念模型的過程稱為概念設計。

1.將概念設計從數據庫設計過程中獨立出來的優點

將概念設計從數據庫過程中獨立出來具有以下優點。

1)各階段的任務相對單一,設計復雜程度大大降低,便于組織管理。

2)不受特定的DBMS的限制,也獨立于存儲安排和效率方面的考慮,因而比邏輯模式更為穩定。

3)概念模式不含具體的DBMS所附加的技術細節,更容易為用戶所理解,因而才有可能準確地反映用戶的信息需求。

2.概念模型的要求

1)概念模型是對現實世界的抽象和概括,應真實、充分地反映現實世界中事物和事物之間的聯系,有豐富的語義表達能力,能表達用戶的各種需求,是現實世界的一個抽象模型。

2)概念模型應簡潔、清晰、獨立于機器,易于理解,方便數據庫設計人員與應用人員交換意見,用戶的積極參與是數據庫設計成功的關鍵。

3)概念模型應易于更改,當應用環境和應用要求改變時,容易對概念模型進行修改和擴充。

4)概念模型應該易于向關系、網狀、層次等各種數據模型轉換,易于從概念模式導出與DBMS有關的邏輯模式。

選用何種概念模型完成概念設計任務,是進行概念設計前應該考慮的首要問題。用于概念設計的模型既要有足夠的表達能力,使之可以表示各種類型的數據及其相互間的聯系和語義,又要簡單易懂。這種模型有很多,如E-R模型、語義數據模型和函數數據模型等。其中,E-R模型提供了規范、標準的構造方法,成為應用最廣泛的概念結構設計工具。

4.3.2 概念結構設計的方法與步驟

1.概念結構設計的方法

概念結構設計的方法有如下4種。

(1)自頂向下方法

根據用戶要求,先定義全局概念結構的框架,然后分層展開,逐步細化,如圖4-7所示。

圖4-7 自頂向下方法

(2)自底向上方法

根據用戶的每一項具體需求,先定義各局部應用的概念結構,然后將它們集成起來,得到全局概念結構,如圖4-8所示。

自底向上設計概念結構如圖4-9所示,通常分為以下兩步。

1)抽象數據并設計局部視圖。

2)集成局部視圖,得到全局概念結構。

(3)逐步擴張方法

首先定義最重要的核心概念結構,然后向外擴充,以滾雪球的方式逐步生成其他概念結構,直至全局概念結構,如圖4-10所示。

圖4-8 自底向上方法

圖4-9 自底向上設計概念結構兩步法

圖4-10 逐步擴張方法

(4)混合策略方法

混合策略方法即將自頂向下和自底向上方法相結合,先用自頂向下策略設計一個全局概念結構的框架,再以它為骨架集成由自底向上策略中設計的各局部概念結構。

在需求分析中,較為常見的方法是采用自頂向下描述數據庫的層次結構,而在概念結構的設計中最常采用的策略是自底向上方法。即自頂向下地進行需求分析,然后再自底向上地設計概念結構,如圖4-11所示。

2.概念結構設計的步驟

概念結構設計的步驟如下。

1)進行局部數據抽象,設計局部概念模式。局部用戶的信息需求是構造全局概念模式的基礎,因此,需要先從個別用戶的需求出發,為每個用戶建立一個相應的局部概念結構。在建立局部概念結構時,常常要對需求分析的結果進行細化補充和修改,如有的數據項要分為若干子項,有的數據定義要重新核實等。

2)將局部概念模式綜合成為全局概念模式。綜合各局部概念模式可以得到反映所有用戶需求的全局概念模式。在綜合過程中,主要處理各局部模式對各種對象定義的不一致性問題,包括同名異義、異名同義和同一事物在不同模式中被抽象為不同類型的對象等問題。把各個局部結構連接、合并,還會產生冗余問題,有可能導致對信息需求的再調整與分析,以確定準確的含義。

圖4-11 混合策略方法

3)評審。消除了所有沖突后,就可以把全局概念模式提交評審。評審分為用戶評審與DBA及應用開發人員評審兩部分:用戶評審的重點放在確認全局概念模式是否準確完整地反映了用戶的信息需求和現實世界事物的屬性間的固有聯系;DBA和應用開發人員評審則側重于確認全局概念模式是否完整,各種成分劃分是否合理,是否存在不一致性等。

4.3.3 采用E-R模型設計概念結構的方法

實體聯系模型簡稱E-R模型,由于通常用圖形表示,又稱E-R圖。它是數據庫設計中最常用的概念模型設計方法之一。采用E-R模型設計方法分為如下3步。

1.設計局部E-R模型

基于E-R模型的概念設計是用概念模型描述目標系統涉及的實體、屬性及實體間的聯系。這些實體、屬性和實體間聯系是對現實世界的人、事、物等的抽象,它是在需求分析的基礎上進行的。

抽象的方法一般包括如下3種。

(1)分類(classification)

將現實世界中具有些種共同特征和行為的對象作為一個類型。它抽象了對象值和型之間的“is member of”(是……的成員)的語義。例如,在學校環境中,學生是具有某些共同特征和行為的對象,可以將其視為一個類型。王芮是學生,它是這個類中一個具體的值,如圖4-12所示。

(2)概括(generalization)

定義類型之間的一種子集聯系。它抽象了類型之間的“is subset of”(是……的子集)的語義。例如課程是一個實體型,必修課、選修課也是一個實體型,必修課和選修課均是課程的子集,如圖4-13所示。

圖4-12 分類

(3)聚集(aggregation)

定義某一類型的組成成分。它抽象了對象內部類型和成分之間“is part of”(是……的一部分)的語義,如圖4-14所示。

圖4-13 概括

圖4-14 聚集

局部E-R模型的設計過程如圖4-15所示。

圖4-15 局部E-R模型設計過程

(1)確定局部結構范圍

設計各個局部E-R模型的第一步是確定局部結構的范圍劃分。劃分的方式一般有兩種:一種是依據系統的當前用戶進行自然劃分;另一種是按用戶要求數據提供的服務歸納為幾類,使每一類應用訪問的數據明顯區別于其他類,然后為每一類應用設計一個局部E-R模型。

局部結構范圍確定時要考慮以下因素。

1)范圍的劃分要自然,易于管理。

2)范圍之間的界限要清晰,相互之間的影響要小。

3)范圍的大小要適度。太小了,會造成局部結構過多,設計過程煩瑣;太大了,則容易造成內容結構復雜,不便于分析。

(2)實體定義

每一個局部結構都包括一些實體,實體定義的任務就是從信息需求和局部范圍定義出發,確定每一個實體的屬性和碼。

事實上,實體、屬性和聯系之間并無形式上可以截然區分的界限,劃分的依據通常有以下3條。

1)采用人們習慣的劃分。

2)避免冗余,在一個局部結構中,對一個對象只取一種抽象形式,不要重復。

3)根據用戶的信息處理需求。

(3)聯系定義

聯系用來刻畫實體之間的關聯。一個完整的方式是對局部結構中任意兩個實體,依據需求分析的結果,考察兩個實體之間是否存在聯系。若有聯系,進一步確定是1:1、1:n還是m:n聯系。還要考察一個實體內部是否存在聯系,多個實體之間是否存在聯系等。

在確定聯系類型時,應防止出現冗余的聯系(即可用從其他聯系導出的聯系),如果存在,要盡可能地識別并消除這些冗余聯系。

聯系在命名時,應能反映聯系的語義性質,通常采用某個動詞命名,如“選修”“授課”等。

(4)屬性分配

實體與聯系確定后,局部結構中的其他語義信息大部分可以用屬性描述。屬性分配時,首先要確定屬性,然后將其分配到相關的實體和聯系中去。

確定屬性的原則是:屬性應該是不可再分解的語義單位;實體與屬性之間的關系只能是1:n的;不同實體類型的屬性之間應無直接關聯關系。

屬性不可分解可以使模型結構簡單,不出現嵌套結構。當多個實體用到一個屬性時,將導致數據冗余,從而影響存儲效率和完整性約束,因而需要確定把它分配給哪個實體。一般把屬性分配給那些使用頻率最高的實體,或分配給實體值少的實體。

有些屬性不宜歸屬于任何一個實體,只說明實體之間聯系的特性。例如,學生選修某門課程的成績,既不能歸為學生實體的屬性,也不能歸為課程實體的屬性,應作為“選修”聯系的屬性。

2.設計全局E-R模型

所有的局部E-R模型設計好后,接下來就是把它們綜合成一個全局概念結構。全局概念結構不僅要支持所有局部E-R模型,而且必須合理地表示一個完整、一致的數據庫概念結構。把局部E-R模型集成為全局E-R模型時,有兩種方法:一種是多個分E-R圖一次集成,通常用于局部視圖比較簡單時使用。也可以逐步集成,用累加的方式一次集成兩個分E-R圖,從而降低復雜度。

全局E-R模型的設計過程如圖4-16所示。

圖4-16 全局E-R模型的設計過程

(1)確定公共實體

為了給多個局部E-R模型的合并提供基礎,首先要確定局部結構的公共實體。一般把同名實體作為公共實體的一類候選,把具有相同碼的實體作為公共實體的另一類候選。

(2)局部E-R模型的合并

合并的順序有時會影響處理效率和結果。建議的合并原則是:首先進行兩兩合并:先合并那些現實世界中有聯系的局部結構;合并從公共實體開始,最后再加入獨立的局部結構,從而減少合并工作的復雜性,并使合并結果的規模盡可能小。

(3)消除沖突

由于各個局部應用所面向的問題不同,且通常是由不同的設計人員進行局部E-R模型設計,導致各個分E-R圖之間存在許多不一致的地方,稱為沖突。解決沖突是合并E-R模型的主要工作和關鍵所在。

各分E-R圖之間的沖突主要有三類:屬性沖突、命名沖突和結構沖突。

1)屬性沖突。

屬性域沖突,即屬性值的類型、取值范圍或取值集合不同。例如學號,有的部門把它定義為整數,有的部門把它定義為字符型,不同的部門對學號的編碼也不同。

屬性取值單位沖突。例如,成績有的用百分制,有的用五級制(A、B、C、D、E)。

2)命名沖突。

同名異義:不同意義的對象在不同的局部應用中具有相同的名字。

異名同義(一義多名):同一意義的對象在不同的局部應用中具有不同的名字。

3)結構沖突。

同一對象在不同應用中具有不同的抽象。例如,教師在某一局部應用中被當作實體,而在另一局部應用中被當作屬性。

實體之間聯系在不同的局部E-R圖中呈現不同類型。例如,E1與E2在某一個應用中是多對多聯系,而在另一個應用中是一對多聯系。

屬性沖突和命名沖突通常采用討論、協商等行政手段解決,結構沖突則要認真分析后才能解決。

3.優化全局E-R圖

得到全局E-R圖后,為了提高數據庫系統的效率,還應進一步依據需求對E-R圖進行優化。一個好的全局E-R圖除了能準確、全面地反映用戶功能需求外,還應滿足如下條件:

● 實體個數盡可能少;

● 實體所包含的屬性盡可能少;

● 實體間的聯系無冗余。

但是這些條件不是絕對的,要視具體的信息需求與處理需求而定。全局E-R模型的優化原則如下。

(1)實體的合并

這里實體合并指的是相關實體的合并,在公共模型中,實體最終轉換成關系模式,涉及多個實體的信息要通過連接操作獲得。因而減少實體的個數,可減少連接的開銷,提高處理效率。

(2)冗余屬性的消除

通常,在各個局部結構中是不允許冗余屬性存在的,但是,綜合成全局E-R圖后,可能產生局部范圍內的冗余屬性。當同一非主屬性出現在幾個實體中,或者一個屬性值可以從其他屬性的值導出時,就存在冗余屬性,應該把冗余屬性從全局E-R圖中去掉。

冗余屬性消除與否,取決于它對存儲空間、訪問效率和維護代價的影響。有時為了兼顧訪問效率,有意保留冗余屬性。

(3)冗余聯系的消除

在全局E-R圖中,可能存在冗余的聯系,可以利用規范化理論中的函數依賴的概念消除冗余聯系。

主站蜘蛛池模板: 济宁市| 太和县| 集贤县| 乌兰察布市| 米泉市| 婺源县| 吉安市| 全南县| 盱眙县| 吉安市| 介休市| 天峻县| 九龙县| 苍溪县| 松潘县| 尤溪县| 曲沃县| 南溪县| 明水县| 靖边县| 苍山县| 大连市| 和林格尔县| 西安市| 边坝县| 梁平县| 凤庆县| 镇沅| 北海市| 漠河县| 安阳县| 平谷区| 顺昌县| 武功县| 桦南县| 工布江达县| 永安市| 安福县| 沅陵县| 桂林市| 平泉县|