版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章 數(shù)據(jù)庫(kù)設(shè)計(jì),7.1 數(shù)據(jù)庫(kù)設(shè)計(jì)概述7.2 需求分析7.3 概念結(jié)構(gòu)設(shè)計(jì)7.4 邏輯結(jié)構(gòu)設(shè)計(jì)7.5 數(shù)據(jù)庫(kù)的物理設(shè)計(jì)7.6 數(shù)據(jù)庫(kù)實(shí)施和維護(hù)7.7 小結(jié),什么是數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)邏輯模式和物理結(jié)構(gòu),并根據(jù)此建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),使之能夠有效地存儲(chǔ)和管理數(shù)據(jù),滿足各種用戶的應(yīng)用需求(信息管理要求和數(shù)據(jù)操作要求)在數(shù)據(jù)庫(kù)領(lǐng)域內(nèi),常常把使用數(shù)據(jù)庫(kù)的各類系統(tǒng)統(tǒng)
2、稱為數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。,7.1 數(shù)據(jù)庫(kù)設(shè)計(jì)概述,7.1.1 數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn),一、數(shù)據(jù)庫(kù)建設(shè)的基本規(guī)律三分技術(shù),七分管理,十二分基礎(chǔ)數(shù)據(jù);二、結(jié)構(gòu)(數(shù)據(jù))設(shè)計(jì)和行為(處理)設(shè)計(jì)相結(jié)合結(jié)構(gòu)(數(shù)據(jù))設(shè)計(jì):設(shè)計(jì)數(shù)據(jù)庫(kù)框架或數(shù)據(jù)庫(kù)結(jié)構(gòu);行為(處理)設(shè)計(jì):設(shè)計(jì)應(yīng)用程序、事務(wù)處理等。三、結(jié)構(gòu)和行為分離的設(shè)計(jì)傳統(tǒng)的軟件工程忽視對(duì)應(yīng)用中數(shù)據(jù)語(yǔ)義的分析和抽象,只要有可能就盡量推遲數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的決策早期的數(shù)據(jù)庫(kù)設(shè)計(jì)致力于數(shù)據(jù)模型和建模方法研
3、究,忽視了對(duì)行為的設(shè)計(jì),結(jié)構(gòu)特性和行為特性結(jié)合起來(lái),7.1.2 數(shù)據(jù)庫(kù)設(shè)計(jì)方法,一、要求數(shù)據(jù)庫(kù)設(shè)計(jì)人員應(yīng)該具備的技術(shù)和知識(shí)數(shù)據(jù)庫(kù)的基本知識(shí);軟件工程的原理和方法;程序設(shè)計(jì)的方法和技巧;數(shù)據(jù)庫(kù)的基本知識(shí)和設(shè)計(jì)技術(shù);應(yīng)用領(lǐng)域的知識(shí)。,二、規(guī)范設(shè)計(jì)法(本質(zhì)上看:手工設(shè)計(jì)方法)新奧爾良(New Orleans)方法 將數(shù)據(jù)庫(kù)設(shè)計(jì)分為四個(gè)階段(需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì))基于E-R模型的數(shù)據(jù)庫(kù)設(shè)計(jì)方法3NF的設(shè)計(jì)方
4、法ODL方法:面向?qū)ο蟮臄?shù)據(jù)庫(kù)設(shè)計(jì)方法計(jì)算機(jī)輔助設(shè)計(jì)ORACLE Designer 2000SYBASE PowerDesigner,7.1.3 數(shù)據(jù)庫(kù)設(shè)計(jì)的基本步驟,一、數(shù)據(jù)庫(kù)設(shè)計(jì)的準(zhǔn)備工作(選定參加設(shè)計(jì)的人員)1. 數(shù)據(jù)庫(kù)分析設(shè)計(jì)人員數(shù)據(jù)庫(kù)設(shè)計(jì)的核心人員自始至終參與數(shù)據(jù)庫(kù)設(shè)計(jì)其水平?jīng)Q定了數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量2. 用戶在數(shù)據(jù)庫(kù)設(shè)計(jì)中也是舉足輕重的主要參加需求分析和數(shù)據(jù)庫(kù)的運(yùn)行維護(hù)用戶積極參與帶來(lái)的好處加速數(shù)
5、據(jù)庫(kù)設(shè)計(jì)提高數(shù)據(jù)庫(kù)設(shè)計(jì)的質(zhì)量3. 程序員(在系統(tǒng)實(shí)施階段參與進(jìn)來(lái),負(fù)責(zé)編制程序)4. 操作員(在系統(tǒng)實(shí)施階段參與進(jìn)來(lái),準(zhǔn)備軟硬件環(huán)境),⒈需求分析階段⒉概念結(jié)構(gòu)設(shè)計(jì)階段⒊邏輯結(jié)構(gòu)設(shè)計(jì)階段⒋數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段⒌數(shù)據(jù)庫(kù)實(shí)施階段⒍數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段,準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理);是整個(gè)設(shè)計(jì)過(guò)程的基礎(chǔ),是最困難、最耗費(fèi)時(shí)間的一步。需求分析是設(shè)計(jì)數(shù)據(jù)庫(kù)的起點(diǎn)需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際要求,將直接影
6、響到后面各個(gè)階段的設(shè)計(jì),并影響到設(shè)計(jì)結(jié)果是否合理和實(shí)用,是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵;通過(guò)對(duì)用戶需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型(E-R圖)。,將概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型(關(guān)系數(shù)據(jù)模型);對(duì)其進(jìn)行優(yōu)化。然后根據(jù)用戶處理的要求、安全性的考慮,在基本表的基礎(chǔ)上再建立必要的視圖(View),形成數(shù)據(jù)的外模式,為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方法)根據(jù)DBMS特
7、點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)安排,建立索引,形成數(shù)據(jù)庫(kù)內(nèi)模式,運(yùn)用DBMS提供的數(shù)據(jù)語(yǔ)言、工具及宿主語(yǔ)言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫(kù)編制與調(diào)試應(yīng)用程序組織數(shù)據(jù)入庫(kù)并進(jìn)行試運(yùn)行,數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)經(jīng)過(guò)試運(yùn)行后即可投入正式運(yùn)行。在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過(guò)程中必須不斷地對(duì)其進(jìn)行評(píng)價(jià)、調(diào)整與修改。,設(shè)計(jì)一個(gè)完善的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)往往是上述六個(gè)階段的不斷反復(fù)。 (如:P202圖7.2),二、數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程(六個(gè)階段),設(shè)計(jì)特點(diǎn),在設(shè)計(jì)
8、過(guò)程中把數(shù)據(jù)庫(kù)的設(shè)計(jì)和對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)處理的設(shè)計(jì)緊密結(jié)合起來(lái)將這兩個(gè)方面的需求分析、抽象、設(shè)計(jì)、實(shí)現(xiàn)在各個(gè)階段同時(shí)進(jìn)行,相互參照,相互補(bǔ)充,以完善兩方面的設(shè)計(jì)設(shè)計(jì)過(guò)程各個(gè)階段的設(shè)計(jì)描述:P204圖7.3,7.1.4 數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中的各級(jí)模式,7.2 需求分析,7.2.1 需求分析的任務(wù),一、需求分析的任務(wù)二、需求分析的重點(diǎn)三、需求分析的難點(diǎn),一、需求分析的任務(wù),通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門(mén)、企業(yè)等),充分了解
9、原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶的各種需求。 在此基礎(chǔ)上確定新系統(tǒng)的功能。新系統(tǒng)必須充分考慮今后可能的擴(kuò)充和改變,不能僅僅按當(dāng)前應(yīng)用需求來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù),二、需求分析的重點(diǎn),需求分析的重點(diǎn)是調(diào)查、收集與分析用戶在數(shù)據(jù)管理中的信息要求、處理要求、安全性與完整性要求。 信息要求用戶需要從數(shù)據(jù)庫(kù)中獲得信息的內(nèi)容與性質(zhì)由用戶的信息要求可以導(dǎo)出數(shù)據(jù)要求,即在數(shù)據(jù)庫(kù)中需要存儲(chǔ)哪些數(shù)據(jù)處理要求對(duì)處理功能的要求對(duì)處理的響應(yīng)時(shí)間
10、的要求對(duì)處理方式的要求(批處理 / 聯(lián)機(jī)處理)安全性與完整性要求。,三、需求分析的難點(diǎn),確定用戶最終需求的難點(diǎn)用戶缺少計(jì)算機(jī)知識(shí),開(kāi)始時(shí)無(wú)法確定計(jì)算機(jī)究竟能為自己做什么,不能做什么,因此無(wú)法一下子準(zhǔn)確地表達(dá)自己的需求,他們所提出的需求往往不斷地變化。設(shè)計(jì)人員缺少用戶的專業(yè)知識(shí),不易理解用戶的真正需求,甚至誤解用戶的需求。新的硬件、軟件技術(shù)的出現(xiàn)也會(huì)使用戶需求發(fā)生變化。解決方法設(shè)計(jì)人員必須采用有效的方法,與用戶不斷深入地進(jìn)行
11、交流,才能逐步得以確定用戶的實(shí)際需求,7.2.2 需求分析的方法,調(diào)查清楚用戶的實(shí)際需求并進(jìn)行初步分析,與用戶達(dá)成共識(shí),然后 進(jìn)一步分析與表達(dá)這些需求。,一、 調(diào)查用戶需求的具體步驟,⑴ 調(diào)查組織機(jī)構(gòu)情況(為分析信息流程做準(zhǔn)備) 組織部門(mén)的組成情況 各部門(mén)的職責(zé)等⑵ 調(diào)查各部門(mén)的業(yè)務(wù)活動(dòng)情況。調(diào)查重點(diǎn)之一。 各個(gè)部門(mén)輸入和使用什么數(shù)據(jù) 如何加工處理這些數(shù)據(jù) 輸出什么信息 輸出到什么部門(mén) 輸出結(jié)果的格式是什么,⑶ 在熟悉
12、業(yè)務(wù)活動(dòng)的基礎(chǔ)上,協(xié)助用戶明確對(duì)新系統(tǒng)的各種要求(信息要求、處理要求、完全性與完整性要求)。調(diào)查重點(diǎn)之二。 ⑷ 確定新系統(tǒng)的邊界對(duì)前面調(diào)查的結(jié)果進(jìn)行初步分析,確定哪些功能由計(jì)算機(jī)完成或?qū)?lái)準(zhǔn)備讓計(jì)算機(jī)完成;確定哪些活動(dòng)由人工完成。由計(jì)算機(jī)完成的功能就是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。,常用調(diào)查方法⑴跟班作業(yè)⑵開(kāi)調(diào)查會(huì)⑶請(qǐng)專人介紹⑷詢問(wèn)⑸設(shè)計(jì)調(diào)查表請(qǐng)用戶填寫(xiě)⑹查閱記錄,二、常用調(diào)查方法,做需求調(diào)查時(shí),往往需要同時(shí)采用多種方法,無(wú)論
13、使用何種調(diào)查方法,都必須有用戶的積極參與和配合。設(shè)計(jì)人員應(yīng)該和用戶取得共同的語(yǔ)言,幫助不熟悉計(jì)算機(jī)的用戶建立數(shù)據(jù)庫(kù)環(huán)境下的共同概念,并對(duì)設(shè)計(jì)工作的最后結(jié)果共同承擔(dān)責(zé)任。,通過(guò)親身參加業(yè)務(wù)工作了解業(yè)務(wù)活動(dòng)的情況。能比較準(zhǔn)確地理解用戶的需求,但比較耗時(shí)。,通過(guò)與用戶座談來(lái)了解業(yè)務(wù)活動(dòng)情況及用戶需求。,對(duì)某些調(diào)查中的問(wèn)題,可以找專人詢問(wèn),如果調(diào)查表設(shè)計(jì)合理,則很有效,且易于為用戶接受,查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄,三、進(jìn)一步分析和表達(dá)用戶需求
14、,分析和表達(dá)用戶的需求的常用方法自頂向下的結(jié)構(gòu)化分析方法(Structured Analysis,簡(jiǎn)稱SA方法)SA方法從最上層的系統(tǒng)組織機(jī)構(gòu)入手,采用逐層分解的方式分析系統(tǒng),并用數(shù)據(jù)流圖和數(shù)據(jù)字典描述系統(tǒng)。,1.首先把任何一個(gè)系統(tǒng)都抽象為:,2.分解處理功能和數(shù)據(jù)(1)分解處理功能將處理功能的具體內(nèi)容分解為若干子功能,再將每個(gè)子功能繼續(xù)分解,直到把系統(tǒng)的工作過(guò)程表達(dá)清楚為止。(2)分解數(shù)據(jù)在處理功能逐步分解的同時(shí),其所用的
15、數(shù)據(jù)也逐級(jí)分解,形成若干層次的數(shù)據(jù)流圖。 數(shù)據(jù)流圖表達(dá)了數(shù)據(jù)和處理過(guò)程的關(guān)系。(3)表達(dá)方法處理過(guò)程:用判定表或判定樹(shù)來(lái)描述數(shù)據(jù):用數(shù)據(jù)字典來(lái)描述3.將分析結(jié)果再次提交給用戶,征得用戶的認(rèn)可,四、需求分析過(guò)程,圖7.6 需求分析過(guò)程,7.2.3 數(shù)據(jù)字典和數(shù)據(jù)流圖,一、數(shù)據(jù)字典的用途,數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合數(shù)據(jù)字典是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果數(shù)據(jù)字典在數(shù)據(jù)庫(kù)設(shè)計(jì)中占有很重要的地位,二、數(shù)據(jù)字典的
16、內(nèi)容,數(shù)據(jù)字典的內(nèi)容數(shù)據(jù)項(xiàng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)處理過(guò)程 數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小組成單位 若干個(gè)數(shù)據(jù)項(xiàng)可以組成一個(gè)數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)字典通過(guò)對(duì)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)的定義來(lái)描述數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容。,⒈ 數(shù)據(jù)項(xiàng),數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位 對(duì)數(shù)據(jù)項(xiàng)的描述數(shù)據(jù)項(xiàng)描述={數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說(shuō)明, 別名,數(shù)據(jù)類型,長(zhǎng)度,取值范圍, 取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系}
17、取值范圍、與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系定義了數(shù)據(jù)的完整性約束條件,⒉ 數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。 一個(gè)數(shù)據(jù)結(jié)構(gòu)可以由若干個(gè)數(shù)據(jù)項(xiàng)組成,也可以由若干個(gè)數(shù)據(jù)結(jié)構(gòu)組成,或由若干個(gè)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)混合組成。 對(duì)數(shù)據(jù)結(jié)構(gòu)的描述數(shù)據(jù)結(jié)構(gòu)描述={數(shù)據(jù)結(jié)構(gòu)名,含義說(shuō)明,組成:{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}},⒊ 數(shù)據(jù)流,數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂健?對(duì)數(shù)據(jù)流的描述 數(shù)據(jù)流描述={數(shù)據(jù)流名,說(shuō)明,數(shù)據(jù)流來(lái)源,
18、 數(shù)據(jù)流去向,組成:{數(shù)據(jù)結(jié)構(gòu)}, 平均流量,高峰期流量}數(shù)據(jù)流來(lái)源是說(shuō)明該數(shù)據(jù)流來(lái)自哪個(gè)過(guò)程數(shù)據(jù)流去向是說(shuō)明該數(shù)據(jù)流將到哪個(gè)過(guò)程去平均流量是指在單位時(shí)間(每天、每周、每月等)里的傳輸次數(shù)高峰期流量則是指在高峰時(shí)期的數(shù)據(jù)流量,⒋ 數(shù)據(jù)存儲(chǔ),數(shù)據(jù)存儲(chǔ)是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方,也是數(shù)據(jù)流的來(lái)源和去向之一。對(duì)數(shù)據(jù)存儲(chǔ)的描述 數(shù)據(jù)存儲(chǔ)描述={數(shù)據(jù)存儲(chǔ)
19、名,說(shuō)明,編號(hào), 流入的數(shù)據(jù)流 ,流出的數(shù)據(jù)流 , 組成:{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取方式}流入的數(shù)據(jù)流:指出數(shù)據(jù)來(lái)源流出的數(shù)據(jù)流:指出數(shù)據(jù)去向數(shù)據(jù)量:每次存取多少數(shù)據(jù),每天(或每小時(shí)、每周等)存取幾次等信息存取方法:批處理 / 聯(lián)機(jī)處理;檢索 / 更新;順序檢索 / 隨機(jī)檢索,⒌ 處理過(guò)程,處理過(guò)程的具體處理邏輯一般用
20、判定表或判定樹(shù)來(lái)描述。數(shù)據(jù)字典中只需要描述處理過(guò)程的說(shuō)明性信息處理過(guò)程說(shuō)明性信息的描述 處理過(guò)程描述={處理過(guò)程名,說(shuō)明, 輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流}, 處理:{簡(jiǎn)要說(shuō)明}}簡(jiǎn)要說(shuō)明:主要說(shuō)明該處理過(guò)程的功能及處理要求功能:該處理過(guò)程用來(lái)做什么處理要求:處理頻度要求(如單位時(shí)間里處理多少事務(wù),多少數(shù)據(jù)量);響應(yīng)時(shí)間要求等處理要求是
21、后面物理設(shè)計(jì)的輸入及性能評(píng)價(jià)的標(biāo)準(zhǔn),數(shù)據(jù)字典舉例,例:學(xué)生學(xué)籍管理子系統(tǒng)的數(shù)據(jù)字典。數(shù)據(jù)項(xiàng),以“學(xué)號(hào)”為例: 數(shù)據(jù)項(xiàng): 學(xué)號(hào) 含義說(shuō)明:唯一標(biāo)識(shí)每個(gè)學(xué)生 別名: 學(xué)生編號(hào) 類型: 字符型 長(zhǎng)度: 8 取值范圍:00000000至99999999 取值含義:前兩位標(biāo)別該學(xué)生所在年級(jí), 后六位按順序編號(hào) 與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系:,數(shù)據(jù)結(jié)構(gòu)
22、 以“學(xué)生”為例 “學(xué)生”是該系統(tǒng)中的一個(gè)核心數(shù)據(jù)結(jié)構(gòu): 數(shù)據(jù)結(jié)構(gòu):學(xué)生 含義說(shuō)明:是學(xué)籍管理子系統(tǒng)的主體數(shù)據(jù)結(jié)構(gòu),定義了一個(gè)學(xué)生 的有關(guān)信息 組成: 學(xué)號(hào),姓名,性別,年齡,所在系,年級(jí),數(shù)據(jù)流“體檢結(jié)果”可如下描述: 數(shù)據(jù)流: 體檢結(jié)果 說(shuō)明: 學(xué)生參加體格檢查的最終結(jié)果 數(shù)據(jù)流來(lái)源:體檢 數(shù)據(jù)流去向:批準(zhǔn) 組
23、成: …… 平均流量: …… 高峰期流量:……,數(shù)據(jù)存儲(chǔ)“學(xué)生登記表”可如下描述: 數(shù)據(jù)存儲(chǔ): 學(xué)生登記表 說(shuō)明: 記錄學(xué)生的基本情況 流入數(shù)據(jù)流:…… 流出數(shù)據(jù)流:…… 組成: …… 數(shù)據(jù)量: 每年3000張 存取方式: 隨機(jī)存取,處理過(guò)程“分配宿舍”可如下描述: 處理過(guò)程:分配宿舍 說(shuō)明: 為所有新生分配學(xué)生宿舍 輸入: 學(xué)生,宿舍, 輸出: 宿舍安排
24、 處理: 在新生報(bào)到后,為所有新生分配學(xué) 生宿舍。要求同一間宿舍只能安排 同一性別的學(xué)生,同一個(gè)學(xué)生只能 安排在一個(gè)宿舍中。每個(gè)學(xué)生的居 住面積不小于3平方米。安排新生 宿舍其處理時(shí)間應(yīng)不超過(guò)1
25、5分鐘。,三、數(shù)據(jù)流圖(Data Flow Diagram,簡(jiǎn)稱DFD),數(shù)據(jù)流圖是描繪系統(tǒng)邏輯模型的一種網(wǎng)絡(luò)表示(這里的系統(tǒng)可以是自動(dòng)化系統(tǒng)、手工系統(tǒng)或是兩者混合而成的系統(tǒng))。數(shù)據(jù)流圖通過(guò)它的成分及所標(biāo)明各個(gè)成分之間的接口來(lái)描述系統(tǒng),數(shù)據(jù)流圖的基本成分是:1.數(shù)據(jù)流;2.文件(數(shù)據(jù)存儲(chǔ));3.加工(亦稱處理、過(guò)程或變換);4.數(shù)據(jù)源點(diǎn)或終點(diǎn)。,是某種已知構(gòu)成的信息所流過(guò)的通道,是數(shù)據(jù)的暫存區(qū),是系統(tǒng)之外的人或組織;這些人或組織
26、是單純數(shù)據(jù)的產(chǎn)生源或接收者,是一種將進(jìn)入數(shù)據(jù)流轉(zhuǎn)化為流出數(shù)據(jù)流的變換,命名原則:要具體,便于區(qū)分,名副其實(shí),反映功用,數(shù)據(jù)流圖常用的符號(hào),1.數(shù)據(jù)流—用箭頭線表示;,2.文件(數(shù)據(jù)存儲(chǔ))—用開(kāi)口矩形或兩條平行橫線表示;,3.加工(亦稱處理、過(guò)程或變換)—用圓角矩形或圓形表示;,4.數(shù)據(jù)源點(diǎn)或終點(diǎn)—用正方形或立方體表示。,7.3.1 概念結(jié)構(gòu),什么是概念結(jié)構(gòu)設(shè)計(jì)需求分析階段描述的用戶應(yīng)用需求是現(xiàn)實(shí)世界的具體需求將需求分析得到
27、的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過(guò)程就是概念結(jié)構(gòu)設(shè)計(jì)概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),它比數(shù)據(jù)模型更獨(dú)立于機(jī)器、更抽象,從而更加穩(wěn)定。概念結(jié)構(gòu)設(shè)計(jì)是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵,概念結(jié)構(gòu)設(shè)計(jì)的特點(diǎn)(1)能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求。是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型。(2)易于理解,從而可以用它和不熟悉計(jì)算機(jī)的用戶交換意見(jiàn),用戶的積極參與是數(shù)據(jù)庫(kù)的設(shè)計(jì)成功的關(guān)鍵。(3)易于更改,當(dāng)應(yīng)用環(huán)
28、境和應(yīng)用要求改變時(shí),容易對(duì)概念模型修改和擴(kuò)充。(4)易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換描述概念模型的工具E-R模型,自底向上首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來(lái),得到全局概念結(jié)構(gòu),7.3.2 概念結(jié)構(gòu)設(shè)計(jì)的方法與步驟,設(shè)計(jì)概念結(jié)構(gòu)的四類方法自頂向下 首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化,,,,,逐步擴(kuò)張 首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)
29、,混合策略 將自頂向下和自底向上相結(jié)合,用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)。,,,,概念結(jié)構(gòu)設(shè)計(jì)的方法與步驟(續(xù)),,,常用策略(P211圖7.8)自頂向下進(jìn)行需求分析自底向上設(shè)計(jì)概念結(jié)構(gòu),,自底向上設(shè)計(jì)概念結(jié)構(gòu)的步驟 (P211圖7.9)第1步:抽象數(shù)據(jù)并設(shè)計(jì)局部視圖第2步:集成局部視圖,得到全局概念結(jié)構(gòu),圖7.9 自底向上方法的設(shè)計(jì)步驟,需求分析,數(shù)據(jù)抽象、局部視
30、圖設(shè)計(jì),視圖集成,,,,,,,,,征求用戶意見(jiàn),,,,DFD、DD,局部E-R圖,全局E-R圖,邏輯結(jié)構(gòu)設(shè)計(jì),概念結(jié)構(gòu)是對(duì)現(xiàn)實(shí)世界的一種抽象從實(shí)際的人、物、事和概念中抽取所關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié)把這些特性用各種概念精確地加以描述這些概念組成了某種模型三種常用抽象 1. 分類(Classification)定義某一類概念作為現(xiàn)實(shí)世界中一組對(duì)象的類型這些對(duì)象具有某些共同的特性和行為它抽象了對(duì)象值和型之間的“is
31、member of”的語(yǔ)義在E-R模型中,實(shí)體型就是這種抽象例:P212圖7.10,一、數(shù)據(jù)抽象,7.3.3 數(shù)據(jù)抽象與局部視圖設(shè)計(jì),2. 聚集(Aggregation)定義某一類型的組成成分它抽象了對(duì)象內(nèi)部類型和成分之間“is part of”的語(yǔ)義在E-R模型中若干屬性的聚集組成了實(shí)體型,就是這種抽象例:P212圖7.11,圖7.12,3. 概括(Generalization)定義類型之間的一種子集聯(lián)系它抽象了類型
32、之間的“is subset of”的語(yǔ)義概括有一個(gè)很重要的性質(zhì):繼承性。子類繼承超類上定義的所有抽象。 例:P213圖7.13,注:原E-R模型不具有概括,本書(shū)對(duì)E-R模型作了擴(kuò)充,允許定義超類實(shí)體型和子類實(shí)體型。 用雙豎邊的矩形框表示子類, 用直線加小圓圈表示超類-子類的聯(lián)系,數(shù)據(jù)抽象的用途對(duì)需求分析階段收集到的數(shù)據(jù)進(jìn)行分類、組織(聚集),形成實(shí)體實(shí)體的屬性,標(biāo)識(shí)實(shí)體的碼確定實(shí)體之間的聯(lián)系類型(1:1,1:n,m
33、:n),二、局部視圖設(shè)計(jì),設(shè)計(jì)分E-R圖的步驟:選擇局部應(yīng)用逐一設(shè)計(jì)分E-R圖,⒈ 選擇局部應(yīng)用,需求分析階段,已用多層數(shù)據(jù)流圖和數(shù)據(jù)字典描述了整個(gè)系統(tǒng)。設(shè)計(jì)分E-R圖首先需要根據(jù)系統(tǒng)的具體情況,在多層的數(shù)據(jù)流圖中選擇一個(gè)適當(dāng)層次的數(shù)據(jù)流圖,讓這組圖中每一部分對(duì)應(yīng)一個(gè)局部應(yīng)用,然后以這一層次的數(shù)據(jù)流圖為出發(fā)點(diǎn),設(shè)計(jì)分E-R圖。通常以中層數(shù)據(jù)流圖作為設(shè)計(jì)分E-R圖的依據(jù)。原因:高層數(shù)據(jù)流圖只能反映系統(tǒng)的概貌中層數(shù)據(jù)流圖能較好地
34、反映系統(tǒng)中各局部應(yīng)用的子系統(tǒng)組成低層數(shù)據(jù)流圖過(guò)細(xì),實(shí)例:某工廠的信息管理系統(tǒng),圖7.14 設(shè)計(jì)分E-R圖的出發(fā)點(diǎn),⒉ 逐一設(shè)計(jì)分E-R圖,任務(wù)——標(biāo)定局部應(yīng)用中的實(shí)體、屬性、碼,實(shí)體間的聯(lián)系將各局部應(yīng)用涉及的數(shù)據(jù)分別從數(shù)據(jù)字典中抽取出來(lái),參照數(shù)據(jù)流圖,標(biāo)定各局部應(yīng)用中的實(shí)體、實(shí)體的屬性、標(biāo)識(shí)實(shí)體的碼,確定實(shí)體之間的聯(lián)系及其類型(1:1,1:n,m:n)如何抽象實(shí)體和屬性實(shí)體:現(xiàn)實(shí)世界中一組具有某些共同特性和行為的對(duì)象就可以抽象
35、為一個(gè)實(shí)體。對(duì)象和實(shí)體之間是“is member of"的關(guān)系。例:在學(xué)校環(huán)境中,可把張三、李四等對(duì)象抽象為學(xué)生實(shí)體。屬性:對(duì)象類型的組成成分可以抽象為實(shí)體的屬性。組成成分與對(duì)象類型之間是“is part of"的關(guān)系。例:學(xué)號(hào)、姓名、專業(yè)、年級(jí)等可以抽象為學(xué)生實(shí)體的屬性。其中學(xué)號(hào)為標(biāo)識(shí)學(xué)生實(shí)體的碼,如何區(qū)分實(shí)體和屬性實(shí)體與屬性是相對(duì)而言的。同一事物,在一種應(yīng)用環(huán)境中作為“屬性”,在另一種應(yīng)用環(huán)境中就必須作為
36、“實(shí)體”。例:學(xué)校中的系,在某種應(yīng)用環(huán)境中,它只是作為“學(xué)生”實(shí)體的一個(gè)屬性,表明一個(gè)學(xué)生屬于哪個(gè)系;而在另一種環(huán)境中,由于需要考慮一個(gè)系的系主任、教師人數(shù)、學(xué)生人數(shù)、辦公地點(diǎn)等,這時(shí)它就需要作為實(shí)體了。一般原則屬性不能再具有需要描述的性質(zhì)。即屬性必須是不可分的數(shù)據(jù)項(xiàng),不能再由另一些屬性組成。屬性不能與其他實(shí)體具有聯(lián)系。聯(lián)系只發(fā)生在實(shí)體之間。符合上述兩條特性的事物一般作為屬性對(duì)待。為了簡(jiǎn)化E-R圖的處置,現(xiàn)實(shí)世界中的事物凡
37、能夠作為屬性對(duì)待的,應(yīng)盡量作為屬性。,舉例例1:“學(xué)生”由學(xué)號(hào)、姓名等屬性進(jìn)一步描述,根據(jù)準(zhǔn)則1,“學(xué)生”只能作為實(shí)體,不能作為屬性。例2:職稱通常作為教師實(shí)體的屬性,但在涉及住房分配時(shí),由于分房與職稱有關(guān),也就是說(shuō)職稱與住房實(shí)體之間有聯(lián)系,根據(jù)準(zhǔn)則2,這時(shí)把職稱作為實(shí)體來(lái)處理會(huì)更合適些。,設(shè)計(jì)分E-R圖的步驟(1)以數(shù)據(jù)字典為出發(fā)點(diǎn)定義E-R圖。 數(shù)據(jù)字典中的“數(shù)據(jù)結(jié)構(gòu)”、“數(shù)據(jù)流”和“數(shù)據(jù)存儲(chǔ)”等已是若干屬性的
38、有意義的聚合(2)按上面給出的準(zhǔn)則進(jìn)行必要的調(diào)整。,例:銷售子系統(tǒng)分E-R圖的設(shè)計(jì)第一層數(shù)據(jù)流圖(P216 圖7.18)第二層數(shù)據(jù)流圖(P216 圖7.19~圖7.22),,,分析數(shù)據(jù)字典整個(gè)系統(tǒng)功能圍繞“訂單”和“應(yīng)收帳款的處理,數(shù)據(jù)結(jié)構(gòu)中訂單、顧客、顧客應(yīng)付帳目用的最多,是許多子功能共享的數(shù)據(jù),因此先設(shè)計(jì)分E-R的草圖(P218 圖7.32),逐一設(shè)計(jì)分E-R圖(例),,逐一設(shè)計(jì)分E-R圖(例),,,1.1,核對(duì)價(jià)格,,,產(chǎn)品
39、描述,,主管,部門(mén),,,顧客,,,訂單數(shù)據(jù),,已核對(duì)價(jià),格的訂單,,1.,2,核對(duì)賬,目狀況,,圖7.19 接收訂單,,逐一設(shè)計(jì)分E-R圖(例),圖7.20 處理訂單,,圖7.21 開(kāi)發(fā)票,,圖中在訂單實(shí)體與產(chǎn)品實(shí)體之間的問(wèn)號(hào)“?”表示還不能確定這兩個(gè)實(shí)體之間的聯(lián)系類型。然后參照第二層數(shù)據(jù)流圖和數(shù)據(jù)字典中的詳盡描述,遵循前面給出的兩個(gè)準(zhǔn)則,進(jìn)行如下調(diào)整:,每張訂單由訂單號(hào)、若干頭信息和訂單細(xì)節(jié)組成。訂單細(xì)節(jié)又有訂貨的零件號(hào)、數(shù)量等
40、來(lái)描述。按照準(zhǔn)則(2),訂單細(xì)節(jié)就不能作訂單的屬性處理而應(yīng)該上升為實(shí)體。一張訂單可以訂若干產(chǎn)品,所以訂單與訂單細(xì)節(jié)兩個(gè)實(shí)體之間是1∶n的聯(lián)系。,原訂單和產(chǎn)品的聯(lián)系實(shí)際上是訂單細(xì)節(jié)和產(chǎn)品的聯(lián)系發(fā)票清單是否作為實(shí)體? 否,因?yàn)樵撔畔⒃趹?yīng)收帳款中體現(xiàn)了折扣規(guī)則實(shí)體——體現(xiàn)各種商品不同數(shù)量的折扣。,通過(guò)調(diào)整得到分E-R圖如下:,圖7.24 銷售子系統(tǒng)的分E-R圖,每個(gè)實(shí)體定義的屬性如下;,顧客:{顧客號(hào),顧客名,地址,電話,信貸狀況,帳目
41、余額}訂單:{訂單號(hào),顧客號(hào),訂貨項(xiàng)數(shù),訂貨日期,交貨日期,工種號(hào),生產(chǎn)地點(diǎn)}訂單細(xì)則:{訂單號(hào),細(xì)則號(hào),零件號(hào),訂貨數(shù),金額}應(yīng)收帳款:{顧客號(hào),訂單號(hào),發(fā)票號(hào),應(yīng)收金額,支付日期,支付金額,當(dāng)前余額,貨款限額折扣規(guī)則:{產(chǎn)品號(hào),訂貨量,折扣},7.3.4 視圖的集成,各個(gè)局部視圖即分E-R圖建立好后,還需要對(duì)它們進(jìn)行合并,集成為一個(gè)整體的數(shù)據(jù)概念結(jié)構(gòu)即總E-R圖。視圖集成的兩種方式一次集成(P219圖7.25(a))
42、一次集成多個(gè)分E-R圖,通常用于局部視圖比較簡(jiǎn)單時(shí)。逐步集成(P220圖7.25(b)) 首先集成兩個(gè)局部視圖(通常是比較關(guān)鍵的兩個(gè)局部視圖)以后每次將一個(gè)新的局部視圖集成進(jìn)來(lái),第1種方法比較復(fù)雜,做起來(lái)難度較大。第2種方法每次只集成兩個(gè)分E-R圖,可以降低復(fù)雜度。,集成局部E-R圖的步驟1. 合并2. 修改與重構(gòu),一、合并分E-R圖,生成初步E-R圖,各分E-R圖存在沖突各個(gè)局部應(yīng)用所面向的問(wèn)題不同,并且通常由不
43、同的設(shè)計(jì)人員進(jìn)行設(shè)計(jì),所以各個(gè)分E-R圖之間必定會(huì)存在許多不一致的地方,稱之為沖突。合并分E-R圖的主要工作與關(guān)鍵所在:合理消除各分E-R圖的沖突。沖突的種類屬性沖突命名沖突結(jié)構(gòu)沖突,⒈ 屬性沖突,兩類屬性沖突屬性域沖突:屬性值的類型、取值范圍或取值集合不同。例如:零件號(hào)(C/N)年齡(D/N)屬性取值單位沖突:例如:零件的重量(公斤/克)屬性沖突的解決方法通常用討論、協(xié)商等行政手段加以解決。,⒉ 命名沖突,兩類命名沖
44、突同名異義:不同意義的對(duì)象在不同的局部應(yīng)用中具有相同的名字。 異名同義(一義多名):同一意義的對(duì)象在不同的局部應(yīng)用中具有不同的名字 例如:有的部門(mén)把科研項(xiàng)目稱項(xiàng)目 有的部門(mén)則把科研項(xiàng)目稱課題命名沖突可能發(fā)生在屬性級(jí)、實(shí)體級(jí)、聯(lián)系級(jí)上。其中屬性的命名沖突更為常見(jiàn)。命名沖突的解決方法通過(guò)討論、協(xié)商等行政手段加以解決,⒊ 結(jié)構(gòu)沖突,三類結(jié)構(gòu)沖突同一對(duì)象在不同應(yīng)用中具有不同的抽象 例,“課
45、程”在某一局部應(yīng)用中被當(dāng)作實(shí)體在另一局部應(yīng)用中則被當(dāng)作屬性解決方法:通常是把屬性變換為實(shí)體或把實(shí)體變換為屬性,使同一對(duì)象具有相同的抽象。變換時(shí)要遵循兩個(gè)準(zhǔn)則。同一實(shí)體在不同局部視圖中所包含的屬性不完全相同,或者屬性的排列次序不完全相同。產(chǎn)生原因:不同的局部應(yīng)用關(guān)心的是該實(shí)體的不同側(cè)面。解決方法:使該實(shí)體的屬性取各分E-R圖中屬性的并集,再適當(dāng)設(shè)計(jì)屬性的次序。實(shí)體之間的聯(lián)系在不同局部視圖中呈現(xiàn)不同的類型解決方法:根據(jù)應(yīng)用語(yǔ)義對(duì)
46、實(shí)體聯(lián)系的類型進(jìn)行綜合或調(diào)整。(P221圖7.27),例如:,圖7.27 合并兩個(gè)分E-R圖的綜合,二、消除不必要的冗余,設(shè)計(jì)基本E-R圖,1 .冗余所謂冗余的數(shù)據(jù)是指可由基本數(shù)據(jù)導(dǎo)出的數(shù)據(jù),冗余的聯(lián)系是指可由其他聯(lián)系導(dǎo)出的聯(lián)系。,,合并解決沖突,初步E-R圖,分E-R圖,可能存在冗余的數(shù)據(jù)和冗余的實(shí)體間聯(lián)系,基本E-R圖,,消除不必要的冗余,冗余數(shù)據(jù)和冗余聯(lián)系容易破壞數(shù)據(jù)庫(kù)的完整性,給數(shù)據(jù)庫(kù)維護(hù)增加困難并不是所有的冗余數(shù)據(jù)與冗
47、余聯(lián)系都必須加以消除,有時(shí)為了提高某些應(yīng)用的效率,不得不以冗余信息作為代價(jià)。設(shè)計(jì)數(shù)據(jù)庫(kù)概念結(jié)構(gòu)時(shí),哪些冗余信息必須消除,哪些冗余信息允許存在,需要根據(jù)用戶的整體需求來(lái)確定。消除不必要的冗余后的初步E-R圖稱為基本E-R圖。,,2.消除冗余的方法 1) 分析方法以數(shù)據(jù)字典和數(shù)據(jù)流圖為依據(jù),根據(jù)數(shù)據(jù)字典中關(guān)于數(shù)據(jù)項(xiàng)之間邏輯關(guān)系的說(shuō)明來(lái)消除冗余。如果是為了提高效率,人為地保留了一些冗余數(shù)據(jù),則應(yīng)把數(shù)據(jù)字典中數(shù)據(jù)關(guān)聯(lián)的說(shuō)明作為完整性
48、約束條件。一種更好的方法是把冗余數(shù)據(jù)定義在視圖中。,,消除不必要的冗余,冗余 Q3=Q1 × Q2 Q4=∑Q5 允許冗余 提高某些應(yīng)用響應(yīng)時(shí)間Q4保留,Q4=∑Q5是完整性約束條件。并且由于Q3消去,產(chǎn)品與材料間m∶n的冗余聯(lián)系也應(yīng)消去。,2) 規(guī)范化理論函數(shù)依賴的概念提供了消除冗余聯(lián)系的形式化工具。方法(1) 確定分
49、E-R圖實(shí)體之間的數(shù)據(jù)依賴FL 。實(shí)體之間一對(duì)一、一對(duì)多、多對(duì)多的聯(lián)系可以用實(shí)體碼之間的函數(shù)依賴來(lái)表示。(2) 求FL的最小覆蓋GL ,差集為: D = FL-GL。 逐一考察D中的函數(shù)依賴,確定是否是冗余的聯(lián)系,若是,就把它去掉。由于規(guī)范化理論受到泛關(guān)系假設(shè)的限制,應(yīng)注意下面兩個(gè)問(wèn)題:(1) 冗余的聯(lián)系一定在D中,而D中的聯(lián)系不一定是冗余的;(2) 當(dāng)實(shí)體之間存在多種聯(lián)系時(shí)要將實(shí)體之間的聯(lián)系在形式上
50、加以區(qū)分。,實(shí)例:某工廠信息管理系統(tǒng)的視圖集成。,圖1.14 工廠物資管理系統(tǒng),圖1.14 工廠物資管理系統(tǒng),圖1.14 工廠物資管理系統(tǒng)E-R圖,實(shí)例:某工廠信息管理系統(tǒng)的視圖集成。,圖1.14(c)、圖7.24、圖7.29分別為該廠物資、勞動(dòng)人事和銷售管理的分E-R圖。把這3個(gè)分E-R圖進(jìn)行集成過(guò)程中解決了以下問(wèn)題:(1)異名同義,“項(xiàng)目”和“產(chǎn)品”含義相同。某個(gè)“項(xiàng)目”實(shí)質(zhì)上是指某個(gè)“產(chǎn)品”的生產(chǎn)。統(tǒng)一用“產(chǎn)品”作實(shí)體
51、名。(2)庫(kù)存管理中職工與倉(cāng)庫(kù)的工作關(guān)系已包含在勞動(dòng)人事管理部門(mén)與職工之間的聯(lián)系之中,所以可以取消。職工之間領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)關(guān)系可由部門(mén)與職工(經(jīng)理)之間的領(lǐng)導(dǎo)關(guān)系、部門(mén)與職工之間的從屬關(guān)系兩者導(dǎo)出,所以也可以取消。圖7.30為該系統(tǒng)的基本E-R圖。基本E-R圖中各實(shí)體的屬性因篇幅有限這里從略。,三、驗(yàn)證整體概念結(jié)構(gòu),視圖集成后形成一個(gè)整體的數(shù)據(jù)庫(kù)概念結(jié)構(gòu),對(duì)該整體概念結(jié)構(gòu)還必須進(jìn)行進(jìn)一步驗(yàn)證,確保它能夠滿足下列條件:整體概念結(jié)構(gòu)內(nèi)部
52、必須具有一致性,不存在互相矛盾的表達(dá)。整體概念結(jié)構(gòu)能準(zhǔn)確地反映原來(lái)的每個(gè)視圖結(jié)構(gòu),包括屬性、實(shí)體及實(shí)體間的聯(lián)系。整體概念結(jié)構(gòu)能滿足需要分析階段所確定的所有要求。整體概念結(jié)構(gòu)最終還應(yīng)該提交給用戶,征求用戶和有關(guān)人員的意見(jiàn),進(jìn)行評(píng)審、修改和優(yōu)化,然后把它確定下來(lái),作為數(shù)據(jù)庫(kù)的概念結(jié)構(gòu),作為進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫(kù)的依據(jù),概念結(jié)構(gòu)設(shè)計(jì)小結(jié),概念結(jié)構(gòu)設(shè)計(jì)的步驟抽象數(shù)據(jù)并設(shè)計(jì)局部視圖集成局部視圖,得到全局概念結(jié)構(gòu)驗(yàn)證整體概念結(jié)構(gòu)數(shù)據(jù)抽象(分
53、類、聚集、概括)設(shè)計(jì)局部視圖⒈ 選擇局部應(yīng)用⒉ 逐一設(shè)計(jì)分E-R圖標(biāo)定局部應(yīng)用中的實(shí)體、屬性、碼,實(shí)體間的聯(lián)系用E-R圖描述出來(lái)集成局部視圖1.合并分E-R圖,生成初步E-R圖消除沖突(屬性沖突、命名沖突、結(jié)構(gòu)沖突)2. 修改與重構(gòu)消除不必要的冗余,設(shè)計(jì)生成基本E-R圖分析方法規(guī)范化理論,7.4 邏輯結(jié)構(gòu)設(shè)計(jì),邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ)為了能夠用某一DBMS實(shí)現(xiàn)用戶需求,還必須將
54、概念結(jié)構(gòu)進(jìn)一步轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)模型,這正是數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)所要完成的任務(wù)。邏輯結(jié)構(gòu)設(shè)計(jì)的步驟將概念結(jié)構(gòu)轉(zhuǎn)化為一般的關(guān)系、網(wǎng)狀、層次模型將轉(zhuǎn)化來(lái)的關(guān)系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化,,,,7.4.1 E-R圖向關(guān)系模型的轉(zhuǎn)換,轉(zhuǎn)換內(nèi)容E-R圖由實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系三個(gè)要素組成;關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合;將E-R圖轉(zhuǎn)換為關(guān)系模型:將實(shí)體、實(shí)體的屬性和實(shí)體之間的
55、聯(lián)系轉(zhuǎn)化為關(guān)系模式。,轉(zhuǎn)換原則,⒈ 一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。關(guān)系的屬性:實(shí)體型的屬性關(guān)系的碼:實(shí)體型的碼例,職工實(shí)體可以轉(zhuǎn)換為如下關(guān)系模式: 職工(職工號(hào),部門(mén)號(hào),姓名,職務(wù),性別,出生日期),⒉ 一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。關(guān)系的屬性:與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性關(guān)系的碼:各實(shí)體碼的組合[例] “選修”聯(lián)系是一個(gè)m:n聯(lián)系,可以將它轉(zhuǎn)換為如下關(guān)系模式,其中學(xué)號(hào)與課程號(hào)為關(guān)系的組合碼: 選
56、修(學(xué)號(hào),課程號(hào),成績(jī)),⒊ 一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。1) 轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式關(guān)系的屬性:與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性關(guān)系的碼:n端實(shí)體的碼2) 與n端對(duì)應(yīng)的關(guān)系模式合并合并后關(guān)系的屬性:在n端關(guān)系中加入1端關(guān)系的碼和聯(lián)系本身的屬性合并后關(guān)系的碼:不變 可以減少系統(tǒng)中的關(guān)系個(gè)數(shù),一般情況下更傾向于采用這種方法。,⒋ 一個(gè)1:1聯(lián)系可
57、以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。1) 轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式關(guān)系的屬性:與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性關(guān)系的候選碼:每個(gè)實(shí)體的碼均是該關(guān)系的候選碼2) 與某一端對(duì)應(yīng)的關(guān)系模式合并合并后關(guān)系的屬性:加入對(duì)應(yīng)關(guān)系的碼和聯(lián)系本身的屬性合并后關(guān)系的碼:不變,⒌ 三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。關(guān)系的屬性:與該多元聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性關(guān)系的碼:各
58、實(shí)體碼的組合例,“供應(yīng)”聯(lián)系是一個(gè)三元聯(lián)系,可以將它轉(zhuǎn)換為如下關(guān)系模式,其中產(chǎn)品號(hào)、供應(yīng)商號(hào)和零件號(hào)為關(guān)系的組合碼: 供應(yīng)(產(chǎn)品號(hào),供應(yīng)商號(hào),零件號(hào),供應(yīng)量),⒍ 同一實(shí)體集的實(shí)體間的聯(lián)系,即自聯(lián)系,也可按上述1:1、1:n和m:n三種情況分別處理。[例] 如果職工實(shí)體集內(nèi)部存在領(lǐng)導(dǎo)與被領(lǐng)導(dǎo)的1:n自聯(lián)系,我們可以將該聯(lián)系與職工實(shí)體合并,這時(shí)主碼職工號(hào)將多次出現(xiàn),但作用不同,可用不同的屬性名加以區(qū)分:職工:{職工號(hào),部門(mén)號(hào)
59、,姓名,性別,職稱,出生日期,部門(mén)領(lǐng)導(dǎo)},⒎ 具有相同碼的關(guān)系模式可合并。目的:減少系統(tǒng)中的關(guān)系個(gè)數(shù)。合并方法:將其中一個(gè)關(guān)系模式的全部屬性加入到另一個(gè)關(guān)系模式中,然后去掉其中的同義屬性(可能同名也可能不同名),并適當(dāng)調(diào)整屬性的次序。,下面把圖7.30中虛線上部的E-R圖轉(zhuǎn)換為一組關(guān)系模式。關(guān)系模式的碼用下橫線標(biāo)出。,部門(mén)(部門(mén)號(hào),部門(mén)名,經(jīng)理的職工號(hào),……)此為部門(mén)實(shí)體對(duì)應(yīng)的關(guān)系模式。該關(guān)系模式已包含了聯(lián)系“領(lǐng)導(dǎo)”所對(duì)應(yīng)的關(guān)系模
60、式。經(jīng)理的職工號(hào)是關(guān)系的候選碼。職工(職工號(hào),部門(mén)號(hào),職工名,職務(wù),……)此為職工實(shí)體對(duì)應(yīng)的關(guān)系模式。該關(guān)系模式已包含了聯(lián)系“屬于”所對(duì)應(yīng)的關(guān)系模式。 產(chǎn)品(產(chǎn)品號(hào),產(chǎn)品名,產(chǎn)品組長(zhǎng)的職工,……)此為產(chǎn)品實(shí)體對(duì)應(yīng)的關(guān)系模式。供應(yīng)商(供應(yīng)商號(hào),姓名,……)------此為供應(yīng)商實(shí)體對(duì)應(yīng)的關(guān)系模式。零件(零件號(hào),零件名,……)-----此為零件實(shí)體對(duì)應(yīng)的關(guān)系模式。職工工作(職工號(hào),產(chǎn)品號(hào),工作天數(shù),……)此為聯(lián)系“參加”所對(duì)
61、應(yīng)的關(guān)系模式。供應(yīng)(產(chǎn)品號(hào),供應(yīng)商號(hào),零件號(hào),供應(yīng)量)此為聯(lián)系“供應(yīng)”所對(duì)應(yīng)的關(guān)系模式。,向特定DBMS規(guī)定的模型進(jìn)行轉(zhuǎn)換,一般的數(shù)據(jù)模型還需要向特定DBMS規(guī)定的模型進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換的主要依據(jù)是所選用的DBMS的功能及限制。沒(méi)有通用規(guī)則。對(duì)于關(guān)系模型來(lái)說(shuō),這種轉(zhuǎn)換通常都比較簡(jiǎn)單。,7.4.2 數(shù)據(jù)模型的優(yōu)化,數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的結(jié)果不是唯一的。得到初步數(shù)據(jù)模型后,還應(yīng)該適當(dāng)?shù)匦薷?、調(diào)整數(shù)據(jù)模型的結(jié)構(gòu),以進(jìn)一步提高數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的
62、性能,這就是數(shù)據(jù)模型的優(yōu)化。關(guān)系數(shù)據(jù)模型的優(yōu)化通常以規(guī)范化理論為指導(dǎo)。,數(shù)據(jù)模型的優(yōu)化(方法),⒈ 確定數(shù)據(jù)依賴按需求分析階段所得到的語(yǔ)義,分別寫(xiě)出每個(gè)關(guān)系模式內(nèi)部各屬性之間的數(shù)據(jù)依賴以及不同關(guān)系模式屬性之間數(shù)據(jù)依賴。⒉ 對(duì)于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系。⒊ 按照數(shù)據(jù)依賴的理論對(duì)關(guān)系模式逐一進(jìn)行分析,考查是否存在部分函數(shù)依賴、傳遞函數(shù)依賴、多值依賴等,確定各關(guān)系模式分別屬于第幾范式。,⒋ 按照需求
63、分析階段得到的各種應(yīng)用對(duì)數(shù)據(jù)處理的要求,分析對(duì)于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否要對(duì)它們進(jìn)行合并或分解。 并不是規(guī)范化程度越高的關(guān)系就越優(yōu)。當(dāng)一個(gè)應(yīng)用的查詢中經(jīng)常涉及到兩個(gè)或多個(gè)關(guān)系模式的屬性時(shí),系統(tǒng)必須經(jīng)常地進(jìn)行聯(lián)接運(yùn)算,而聯(lián)系運(yùn)算的代價(jià)是相當(dāng)高的,可以說(shuō)關(guān)系模型低效的主要原因就是做聯(lián)接運(yùn)算引起的,因此在這種情況下,第二范式甚至第一范式也許是最好的。非BCNF的關(guān)系模式雖然從理論上分析會(huì)存在不同程度的更新異常,但如果在
64、實(shí)際應(yīng)用中對(duì)此關(guān)系模式只是查詢,并不執(zhí)行更新操作,則就不會(huì)產(chǎn)生實(shí)際影響。對(duì)于一個(gè)具體應(yīng)用來(lái)說(shuō),到底規(guī)范化進(jìn)行到什么程度,需要權(quán)衡響應(yīng)時(shí)間和潛在問(wèn)題兩者的利弊才能決定。一般說(shuō)來(lái),第三范式就足夠了。,⒌ 按照需求分析階段得到的各種應(yīng)用對(duì)數(shù)據(jù)處理的要求,對(duì)關(guān)系模式進(jìn)行必要的分解或合并,以提高數(shù)據(jù)操作的效率和存儲(chǔ)空間的利用率。常用分解方法水平分解垂直分解,水平分解,什么是水平分解把(基本)關(guān)系的元組分為若干子集合,定義每個(gè)子集合為一
65、個(gè)子關(guān)系,以提高系統(tǒng)的效率。水平分解的適用范圍1. 滿足“80/20原則”的應(yīng)用80/20原則:一個(gè)大關(guān)系中,經(jīng)常被使用的數(shù)據(jù)只是關(guān)系的一部分,約20%,把經(jīng)常使用的數(shù)據(jù)分解出來(lái),形成一個(gè)子關(guān)系,可以減少查詢的數(shù)據(jù)量。2.并發(fā)事務(wù)經(jīng)常存取不相交的數(shù)據(jù)如果關(guān)系R上具有n個(gè)事務(wù),而且多數(shù)事務(wù)存取的數(shù)據(jù)不相交,則R可分解為少于或等于n個(gè)子關(guān)系,使每個(gè)事務(wù)存取的數(shù)據(jù)對(duì)應(yīng)一個(gè)關(guān)系。,垂直分解,什么是垂直分解把關(guān)系模式R的屬性分解為若
66、干子集合,形成若干子關(guān)系模式。垂直分解的原則經(jīng)常在一起使用的屬性從R中分解出來(lái)形成一個(gè)子關(guān)系模式。垂直分解的優(yōu)點(diǎn)可以提高某些事務(wù)的效率垂直分解的缺點(diǎn)可能使另一些事務(wù)不得不執(zhí)行連接操作,從而降低了效率。垂直分解的適用范圍取決于分解后R上的所有事務(wù)的總效率是否得到了提高。進(jìn)行垂直分解的方法簡(jiǎn)單情況:直觀分解復(fù)雜情況:用第五章中的模式分解算法垂直分解必須不損失關(guān)系模式的語(yǔ)義(保持無(wú)損連接性和保持函數(shù)依賴)。,7.4.3
67、 設(shè)計(jì)用戶子模式,將概念模型轉(zhuǎn)換為全局邏輯模型后,還應(yīng)該根據(jù)局部應(yīng)用需求,結(jié)合具體RDBMS的特點(diǎn),設(shè)計(jì)用戶的外模式。目前關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)一般都提供了視圖(View)概念,可以利用這一功能設(shè)計(jì)更符合局部用戶需要的用戶外模式。定義數(shù)據(jù)庫(kù)模式主要是從系統(tǒng)的時(shí)間效率、空間效率、易維護(hù)等角度出發(fā)。由于用戶外模式與模式是相對(duì)獨(dú)立的,因此在定義用戶外模式時(shí)可以考慮用戶的習(xí)慣與方便。包括三個(gè)方面:,7.4.3 設(shè)計(jì)用戶子模式,(1) 使用
68、更符合用戶習(xí)慣的別名合并各分E-R圖曾做了消除命名沖突的工作,以使數(shù)據(jù)庫(kù)系統(tǒng)中同一關(guān)系和屬性具有唯一的名字。這在設(shè)計(jì)數(shù)據(jù)庫(kù)整體結(jié)構(gòu)時(shí)是非常必要的。但對(duì)于某些局部應(yīng)用,由于改用了不符合用戶習(xí)慣的屬性名,可能會(huì)使他們感到不方便,因此在設(shè)計(jì)用戶的子模式時(shí)可以重新定義某些屬性名,使其與用戶習(xí)慣一致。當(dāng)然,為了應(yīng)用的規(guī)范化,我們也不應(yīng)該一味地遷就用戶。,(2) 針對(duì)不同級(jí)別的用戶定義不同的外模式,以滿足系統(tǒng)對(duì)安全性的要求。例如,有關(guān)系模式:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論