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

3.3 數(shù)據(jù)庫概念結(jié)構(gòu)的設(shè)計

概念結(jié)構(gòu)設(shè)計是將系統(tǒng)需求分析得到的用戶需求抽象為信息結(jié)構(gòu)的過程。概念結(jié)構(gòu)設(shè)計的結(jié)果是數(shù)據(jù)庫的概念模型。數(shù)據(jù)庫設(shè)計中應(yīng)十分重視概念結(jié)構(gòu)設(shè)計,它是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵。

3.3.1 概念結(jié)構(gòu)的特點及設(shè)計方法

只有將系統(tǒng)應(yīng)用需求抽象為信息世界的結(jié)構(gòu)(概念結(jié)構(gòu)),才能轉(zhuǎn)化為機器世界中的數(shù)據(jù)模型,并用DBMS實現(xiàn)這些需求。概念結(jié)構(gòu)即概念模型,它用E-R圖進(jìn)行描述。

1.概念結(jié)構(gòu)的特點

概念結(jié)構(gòu)獨立于數(shù)據(jù)庫邏輯結(jié)構(gòu),同時還支持?jǐn)?shù)據(jù)庫的DBMS,其主要特點如下。

1)概念模型是現(xiàn)實世界的一個真實模型:概念模型應(yīng)能真實、充分地反映現(xiàn)實世界,能滿足用戶對數(shù)據(jù)的處理要求。

2)概念模型應(yīng)當(dāng)易于理解:概念模型只有被用戶理解后,才可以與設(shè)計者交換意見,參與數(shù)據(jù)庫的設(shè)計。

3)概念模型應(yīng)當(dāng)易于更改:由于現(xiàn)實世界(應(yīng)用環(huán)境和應(yīng)用要求)會發(fā)生變化,這就需要改變概念模型,易于更改的概念模型有利于修改和擴充。

4)概念模型應(yīng)易于向數(shù)據(jù)模型轉(zhuǎn)換:概念模型最終要轉(zhuǎn)換為數(shù)據(jù)模型。設(shè)計概念模型時應(yīng)當(dāng)注意,使其有利于向特定的數(shù)據(jù)模型轉(zhuǎn)換。

2.概念結(jié)構(gòu)設(shè)計的方法

概念模型是數(shù)據(jù)模型的前身,它比數(shù)據(jù)模型更獨立于機器、更抽象,也更加穩(wěn)定。概念結(jié)構(gòu)設(shè)計的方法有4種。

1)自頂向下的設(shè)計方法:首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化為完整的全局概念結(jié)構(gòu)。

2)自底向上的設(shè)計方法:首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來,得到全局概念結(jié)構(gòu)的設(shè)計方法。

3)逐步擴張的設(shè)計方法:首先定義最重要的核心概念結(jié)構(gòu),然后向外擴充,生成其他概念結(jié)構(gòu),直至完成總體概念結(jié)構(gòu)。

4)混合策略設(shè)計的方法:采用自頂向下與自底向上相結(jié)合的方法,首先用自頂向下策略設(shè)計一個全局概念結(jié)構(gòu)的框架,然后以它為骨架,通過自底向上策略中設(shè)計的各局部概念結(jié)構(gòu),其方法如圖3-6所示。

978-7-111-64633-4-Chapter03-8.jpg

圖3-6 自頂向下分析需求與自底向上設(shè)計概念結(jié)構(gòu)

3.概念結(jié)構(gòu)的設(shè)計步驟

按照圖3-6所示的設(shè)計概念結(jié)構(gòu)方法,概念結(jié)構(gòu)的設(shè)計可分為兩步:第一步是抽象數(shù)據(jù)并設(shè)計局部視圖;第二步是集成局部視圖,得到全局的概念結(jié)構(gòu),設(shè)計步驟如圖3-7所示。

978-7-111-64633-4-Chapter03-9.jpg

圖3-7 概念結(jié)構(gòu)設(shè)計步驟

3.3.2 數(shù)據(jù)抽象與局部視圖設(shè)計

概念結(jié)構(gòu)是對現(xiàn)實世界的一種抽象。所謂抽象就是抽取現(xiàn)實世界的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些共同特性用各種概念精確地加以描述,形成某種模型。

1.3種數(shù)據(jù)抽象方法

數(shù)據(jù)抽象的3種基本方法是分類、聚集和概括。利用數(shù)據(jù)抽象方法可以在對現(xiàn)實世界抽象的基礎(chǔ)上,得出概念模型的實體集及屬性。

(1)分類

分類(Classification)就是定義某一類概念作為現(xiàn)實世界中一組對象的類型,這些對象具有某些共同的特性和行為。分類抽象了對象值和型之間的“成員”的語義。在E-R模型中,實體集就是這種抽象。

例如,在企業(yè)環(huán)境中,張小英是職工中的一員,她具有職工們共有的特性和行為:在某個部門工作,參與某個工程的設(shè)計或施工。與張小英屬同一對象的還有王麗平等其他職工。圖3-8是職工的分類示意圖。

978-7-111-64633-4-Chapter03-10.jpg

圖3-8 職工分類示意圖

(2)聚集

聚集(Aggregation)是定義某一類型的組成部分,它抽象了對象內(nèi)部類型和對象內(nèi)部“組成部分”的語義。若干屬性的聚集組成了實體型。例如,把實體集“職工”的“職工號”“姓名”等屬性聚集為實體型“職工”,如圖3-9所示。

事實上,現(xiàn)實世界的事物是非常復(fù)雜的,某些類型的組成部分可能仍然是一個聚集,這是一種更復(fù)雜的聚集,如圖3-10所示。

978-7-111-64633-4-Chapter03-11.jpg

圖3-9 職工屬性聚集實例

978-7-111-64633-4-Chapter03-12.jpg

圖3-10 更復(fù)雜的聚集

(3)概括

概括(Generalization)定義了類型之間的一種子集聯(lián)系,它抽象了類型之間“所屬”的語義。例如,職工是個實體集,技術(shù)人員、干部也是實體集,但技術(shù)人員、干部均是職工的子集。可把職工稱為超類(Superclass),技術(shù)人員、干部稱為職工的子類(Subclass)。在E-R模型中用雙豎邊的矩形框表示子類,用直線加小圓圈表示超類—子類的聯(lián)系,如圖3-11所示。

978-7-111-64633-4-Chapter03-13.jpg

圖3-11 概括表示示意圖

概括的一個重要性質(zhì)是繼承性。繼承性指子類繼承超類中定義的所有抽象。例如,技術(shù)人員、干部可以有自己的特殊屬性,但都繼承了它們的超類屬性,即技術(shù)人員和干部都具有職工類型的屬性。

2.設(shè)計分E-R圖

概念結(jié)構(gòu)設(shè)計是利用抽象機制對需求分析階段收集到的數(shù)據(jù)進(jìn)行分類、組織(聚集),形成實體集、屬性和碼,確定實體集之間的聯(lián)系類型(一對一、一對多或多對多的聯(lián)系),進(jìn)而設(shè)計分E-R圖。

(1)設(shè)計分E-R圖的具體做法

1)選擇局部應(yīng)用。

選擇局部應(yīng)用是根據(jù)系統(tǒng)的具體情況,在多層的數(shù)據(jù)流程圖中選擇一個適當(dāng)層次的數(shù)據(jù)流程圖,作為設(shè)計分E-R圖的出發(fā)點,并讓數(shù)據(jù)流程圖中的每一部分都對應(yīng)一個局部應(yīng)用。選擇好局部應(yīng)用之后,就可以對每個局部應(yīng)用逐一設(shè)計分E-R圖了。

2)設(shè)計分E-R圖。

在設(shè)計分E-R圖前,局部應(yīng)用的數(shù)據(jù)流程圖應(yīng)已經(jīng)設(shè)計好,局部應(yīng)用所涉及的數(shù)據(jù)應(yīng)當(dāng)也已經(jīng)收集在相應(yīng)的數(shù)據(jù)字典中了。在設(shè)計分E-R圖時,要根據(jù)局部應(yīng)用的數(shù)據(jù)流程圖中標(biāo)定的實體集、屬性和碼,并結(jié)合數(shù)據(jù)字典中的相關(guān)描述內(nèi)容,確定E-R圖中的實體、實體之間的聯(lián)系。

(2)實體和屬性的區(qū)別

實際上,實體和屬性之間并不存在形式上可以截然劃分的界限。但是,在現(xiàn)實世界中具體的應(yīng)用環(huán)境常常對實體和屬性做了大體的自然劃分。例如,在數(shù)據(jù)字典中,“數(shù)據(jù)結(jié)構(gòu)”“數(shù)據(jù)流”“數(shù)據(jù)存儲”都是若干屬性的聚合,它體現(xiàn)了自然劃分意義。設(shè)計E-R圖時,可以先從自然劃分的內(nèi)容出發(fā)定義雛形的E-R圖,再進(jìn)行必要的調(diào)整。

為了簡化E-R圖,在調(diào)整中應(yīng)當(dāng)遵循的一條原則:現(xiàn)實世界的事物能作為屬性對待的盡量作為屬性對待。在解決這個問題時應(yīng)當(dāng)遵循兩條基本準(zhǔn)則。

1)“屬性”不能再具有需要描述的性質(zhì)?!皩傩浴北仨毷遣豢煞指畹臄?shù)據(jù)項,不能包含其他屬性。也就是說,屬性不能是另外一些屬性的聚集。

2)“屬性”不能與其他實體具有聯(lián)系。在E-R圖中所有的聯(lián)系必須是實體間的聯(lián)系,而不能有屬性與實體之間的聯(lián)系。

圖3-12所示的是一個由屬性上升為用實體集表示的實例。

978-7-111-64633-4-Chapter03-14.jpg

圖3-12 “職稱”由屬性上升為實體的示意圖

圖3-12中,職工是一個實體,職工號、姓名、年齡和職稱是屬性。如果職稱沒有與工資、福利掛鉤,就沒有必要進(jìn)一步描述,可以作為職工實體集的一個屬性對待;如果不同的職稱有著不同的工資、住房標(biāo)準(zhǔn)和不同的附加福利,則職稱作為一個實體來考慮就比較合適。

例如,在醫(yī)院一個病人只能住在一個病房,病房號可以作為病人實體的一個屬性。但如果病房還要與醫(yī)生實體發(fā)生聯(lián)系,即一個醫(yī)生負(fù)責(zé)幾個病房的病人,根據(jù)第二條準(zhǔn)則,病房應(yīng)作為一個實體,如圖3-13所示。

978-7-111-64633-4-Chapter03-15.jpg

圖3-13 病房作為一個屬性或?qū)嶓w的例子

3.3.3 視圖集成

視圖集成就是把設(shè)計好的各子系統(tǒng)的分E-R圖綜合成一個系統(tǒng)的總E-R圖。

視圖集成有兩種方法:一種方法是多個分E-R圖一次集成,如圖3-14a所示;另一種方法是逐步集成,用累加的方法一次集成兩個分E-R圖,如圖3-14b所示。

978-7-111-64633-4-Chapter03-16.jpg

圖3-14 視圖集成的兩種方法

a)一次集成 b)逐步集成

多個分E-R圖一次集成的方法比較復(fù)雜,做起來難度較大;逐步集成方法由于每次只集成兩個分E-R圖,因而可以有效地降低復(fù)雜度。無論采用哪種方法,在每次集成局部E-R圖時,都要分兩步進(jìn)行:合并E-R圖,解決各分E-R圖之間的沖突問題,并將各分E-R圖合并起來生成初步E-R圖;修改和重構(gòu)初步E-R圖,消除初步E-R圖中不必要的實體集冗余和聯(lián)系冗余,得到基本E-R圖。

1.合并分E-R圖,生成初步E-R圖

由于各個局部應(yīng)用所面向的問題是不同的,而且通常是由不同的設(shè)計人員進(jìn)行不同局部的視圖設(shè)計,這樣就會導(dǎo)致各個分E-R圖之間必定會存在許多不一致的地方,即產(chǎn)生沖突問題。由于各個分E-R圖存在沖突,所以不能簡單地把它們畫到一起,必須先消除各個分E-R圖之間的不一致,形成一個能被全系統(tǒng)所有用戶共同理解和接受的統(tǒng)一的概念模型,再進(jìn)行合并。合理消除各個分E-R圖的沖突是進(jìn)行合并的主要工作和關(guān)鍵所在。

分E-R圖之間的沖突主要有3類:屬性沖突、命名沖突和結(jié)構(gòu)沖突。

(1)屬性沖突

屬性沖突主要有以下兩種情況。

1)屬性域沖突。屬性值的類型、取值范圍或取值集合不同。例如,對于零件號屬性,不同的部門可能會采用不同的編碼形式,而且定義的類型又各不相同,有的定義為整型,有的則定義為字符型,這都需要各個部門之間協(xié)商解決。

2)屬性取值單位沖突。例如,零件的重量,不同的部門可能分別用公斤、斤或千克來表示,結(jié)果會給數(shù)據(jù)統(tǒng)計造成錯誤。

(2)命名沖突

命名沖突主要有以下兩種。

1)同名異義沖突:不同意義的對象在不同的局部應(yīng)用中具有相同的名字。

2)異名同義沖突:意義相同的對象在不同的局部應(yīng)用中有不同的名字。

(3)結(jié)構(gòu)沖突

結(jié)構(gòu)沖突有以下3種情況。

1)同一對象在不同的應(yīng)用中具有不同的抽象。例如,職工在某一局部應(yīng)用中被當(dāng)作實體對待,而在另一局部應(yīng)用中被當(dāng)作屬性對待,這就會產(chǎn)生抽象沖突問題。

2)同一實體在不同分E-R圖中的屬性組成不一致。此類沖突即所包含的屬性個數(shù)和屬性排列次序不完全相同。這類沖突是由于不同的局部應(yīng)用所關(guān)心的實體的不同側(cè)面而造成的。解決這類沖突的方法是使該實體的屬性取各個分E-R圖中屬性的并集,再適當(dāng)調(diào)整屬性的次序,使之兼顧到各種應(yīng)用。

3)實體之間的聯(lián)系在不同的分E-R圖中呈現(xiàn)不同的類型。此類沖突的解決方法是根據(jù)應(yīng)用的語義對實體聯(lián)系的類型進(jìn)行綜合或調(diào)整。

設(shè)有實體集E1、E2和E3,在一個分E-R圖中E1和E2是多對多聯(lián)系,而在另一個分E-R圖中E1、E2是一對多聯(lián)系,這是聯(lián)系類型不同的情況;在某一E-R圖中E1與E2發(fā)生聯(lián)系,而在另一個E-R圖中E1、E2和E3三者之間發(fā)生聯(lián)系,這是聯(lián)系涉及的對象不同的情況。

圖3-15所示的是一個綜合E-R圖的實例。在一個分E-R圖中零件與產(chǎn)品之間的聯(lián)系構(gòu)成是多對多的;另一個分E-R圖中產(chǎn)品、零件與供應(yīng)商三者之間存在著多對多的聯(lián)系“供應(yīng)”;在合并的綜合E-R圖中把它們綜合起來表示。

978-7-111-64633-4-Chapter03-17.jpg

圖3-15 合并兩個分E-R圖時的綜合

2.消除不必要的冗余,設(shè)計基本E-R圖

在初步E-R圖中可能存在冗余的數(shù)據(jù)和實體間冗余的聯(lián)系。冗余數(shù)據(jù)是指可由基本數(shù)據(jù)導(dǎo)出的數(shù)據(jù),冗余的聯(lián)系是可由其他聯(lián)系導(dǎo)出的聯(lián)系。冗余的存在容易破壞數(shù)據(jù)庫的完整性,給數(shù)據(jù)庫維護增加困難,應(yīng)當(dāng)消除。消除了冗余的初步E-R圖就稱為基本E-R圖。

(1)用分析方法消除冗余

分析方法是消除冗余的主要方法。分析方法消除冗余是以數(shù)據(jù)字典和數(shù)據(jù)流程圖為依據(jù),根據(jù)數(shù)據(jù)字典中關(guān)于數(shù)據(jù)項之間邏輯關(guān)系的說明來消除冗余的。

在實際應(yīng)用中,并不是要將所有的冗余數(shù)據(jù)與冗余聯(lián)系都消除。有時為了提高數(shù)據(jù)查詢效率,減少數(shù)據(jù)存取次數(shù),在數(shù)據(jù)庫中就設(shè)計了一些數(shù)據(jù)冗余或聯(lián)系冗余。因而,在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)時,冗余數(shù)據(jù)的消除或存在要根據(jù)用戶的整體需要來確定。如果希望存在某些冗余,則應(yīng)在數(shù)據(jù)字典的數(shù)據(jù)關(guān)聯(lián)中進(jìn)行說明,并把保持冗余數(shù)據(jù)的一致作為完整性約束條件。

例如,在圖3-16中,如果Q3=Q1×Q2并且Q4=ΣQ5,則Q3和Q4是冗余數(shù)據(jù),Q3和Q4就可以被消去。而消去了Q3,產(chǎn)品與材料間m∶n的冗余聯(lián)系也應(yīng)當(dāng)被消去。但是,若物資部門經(jīng)常要查詢各種材料的庫存總量,就應(yīng)當(dāng)保留Q4,并把“Q4=ΣQ5”定義為Q4的完整性約束條件。每當(dāng)Q5被更新,就會觸發(fā)完整性檢查的例程,以便對Q4做相應(yīng)的修改。

978-7-111-64633-4-Chapter03-18.jpg

圖3-16 消除冗余的實例

(2)用規(guī)范化理論消除冗余

在關(guān)系數(shù)據(jù)庫的規(guī)范化理論中,函數(shù)依賴的概念提供了消除冗余的形式化工具,有關(guān)內(nèi)容將在規(guī)范化理論中介紹。

主站蜘蛛池模板: 威远县| 蕉岭县| 和静县| 勐海县| 涿州市| 高雄市| 察雅县| 霍林郭勒市| 剑阁县| 承德市| 南充市| 乳源| 永新县| 马公市| 徐水县| 冕宁县| 勃利县| 哈密市| 丹寨县| 达拉特旗| 聂拉木县| 平果县| 探索| 天长市| 福安市| 三都| 天气| 汾阳市| 辉南县| 盐山县| 万宁市| 高雄市| 来宾市| 利川市| 扶风县| 榕江县| 云霄县| 繁峙县| 林州市| 永和县| 嵊州市|