




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
設(shè)計數(shù)據(jù)庫任務(wù)2-1數(shù)據(jù)庫設(shè)計概述目錄Contents任務(wù)2-2需求分析任務(wù)2-3概念結(jié)構(gòu)設(shè)計任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計任務(wù)2-5數(shù)據(jù)庫的物理設(shè)計任務(wù)2-6數(shù)據(jù)庫的實施、運行和維護任務(wù)2-7案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-1數(shù)據(jù)庫設(shè)計概述PART1(一)數(shù)據(jù)庫設(shè)計概述任務(wù)assignments數(shù)據(jù)庫設(shè)計概述任務(wù)2-1任務(wù)1-1數(shù)據(jù)處理【任務(wù)分析】設(shè)計人員在設(shè)計數(shù)據(jù)庫時,應(yīng)首先了解數(shù)據(jù)庫設(shè)計的基本步驟?!菊n堂任務(wù)】了解數(shù)據(jù)庫設(shè)計的基本步驟。按照規(guī)范化設(shè)計的方法,考慮數(shù)據(jù)庫及其應(yīng)用系統(tǒng)開發(fā)的全過程,將數(shù)據(jù)庫設(shè)計步驟分為6個階段(見圖2.1):需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、數(shù)據(jù)庫實施、數(shù)據(jù)庫運行和維護階段。前兩個階段是面向用戶的應(yīng)用需求、面向具體的問題,中間兩個階段是面向DBMS,最后兩個階段是面向具體的實現(xiàn)方法。前4個階段可統(tǒng)稱為“分析和設(shè)計階段”,后兩個階段統(tǒng)稱為“實現(xiàn)和運行階段”。數(shù)據(jù)庫設(shè)計概述任務(wù)2-1任務(wù)1-1數(shù)據(jù)處理在設(shè)計數(shù)據(jù)庫之前,首先選擇參加設(shè)計的人員,包括系統(tǒng)分析人員、數(shù)據(jù)庫設(shè)計人員、程序員、用戶和數(shù)據(jù)庫管理員。系統(tǒng)分析人員和數(shù)據(jù)庫設(shè)計人員是數(shù)據(jù)庫設(shè)計的核心人員,他們將自始至終參加數(shù)據(jù)庫的設(shè)計,他們的水平?jīng)Q定了數(shù)據(jù)庫系統(tǒng)的質(zhì)量。用戶和數(shù)據(jù)庫管理員在數(shù)據(jù)庫設(shè)計中也是舉足輕重的人物,他們主要參加需求分析和數(shù)據(jù)庫的運行維護,他們的積極參與不但能加快數(shù)據(jù)庫的設(shè)計,而且是決定數(shù)據(jù)庫設(shè)計質(zhì)量的重要因素。程序員則在系統(tǒng)實施階段參與進來,負責(zé)編寫程序和配置軟硬件環(huán)境。如果設(shè)計的數(shù)據(jù)庫應(yīng)用系統(tǒng)比較復(fù)雜,還應(yīng)該考慮是否需要使用數(shù)據(jù)庫設(shè)計工具和CASE工具,以提高數(shù)據(jù)庫設(shè)計質(zhì)量并減少設(shè)計工作量,并考慮選用何種工具。數(shù)據(jù)庫設(shè)計概述任務(wù)2-1數(shù)據(jù)庫設(shè)計概述任務(wù)2-1任務(wù)1-1數(shù)據(jù)處理數(shù)據(jù)庫設(shè)計6個階段的具體說明如下。1.需求分析階段需求分析就是根據(jù)用戶的需求收集數(shù)據(jù),是設(shè)計數(shù)據(jù)庫的起點。需求分析的結(jié)果是否準(zhǔn)確反映用戶的實際需求,將直接影響后面各個階段的設(shè)計,并影響設(shè)計結(jié)果是否合理和實用。2.概念設(shè)計階段概念設(shè)計是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵,它通過對用戶的需求進行綜合、歸納與抽象,形成一個獨立于具體DBMS的概念模型。3.邏輯設(shè)計階段邏輯設(shè)計是指將概念模型轉(zhuǎn)換成某個DBMS支持的數(shù)據(jù)模型,并對其進行優(yōu)化。數(shù)據(jù)庫設(shè)計概述任務(wù)2-1任務(wù)1-1數(shù)據(jù)處理4.物理設(shè)計階段物理設(shè)計是指為邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)和存取方法)。5.?dāng)?shù)據(jù)庫實施階段在數(shù)據(jù)庫實施階段,設(shè)計人員運用DBMS提供的數(shù)據(jù)語言及其宿主語言,根據(jù)邏輯設(shè)計和物理設(shè)計的結(jié)果創(chuàng)建數(shù)據(jù)庫(此項工作在項目4中具體實現(xiàn)),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫,并進行試運行。6.?dāng)?shù)據(jù)庫運行和維護階段數(shù)據(jù)庫運行和維護是指數(shù)據(jù)庫應(yīng)用系統(tǒng)正式投入運行后,不斷地對其進行評價、調(diào)整與修改。PART2任務(wù)2-2需求分析(一)需求分析的任務(wù)及目標(biāo)(二)需求分析的方法任務(wù)assignments需求分析任務(wù)2-2任務(wù)1-1數(shù)據(jù)處理(一)需求分析的任務(wù)及目標(biāo)在創(chuàng)建數(shù)據(jù)庫前,首先應(yīng)該找出數(shù)據(jù)庫系統(tǒng)必須保存的信息,以及應(yīng)當(dāng)怎樣保存那些信息(如信息的長度、用數(shù)字或文本的形式保存等)。要完成這一任務(wù),需要收集數(shù)據(jù)。收集數(shù)據(jù)可以與系統(tǒng)所有者和系統(tǒng)的用戶交談。需求分析的任務(wù)是收集數(shù)據(jù),要盡可能多地收集關(guān)于數(shù)據(jù)庫要存儲的數(shù)據(jù)以及將來如何使用這些數(shù)據(jù)的信息,確保收集到數(shù)據(jù)庫需要存儲的全部信息。需求分析任務(wù)2-2任務(wù)1-1數(shù)據(jù)處理通過對客戶和最終用戶的詳盡調(diào)查以及設(shè)計人員的親自體驗,充分了解原系統(tǒng)或手工處理工作存在的問題,正確理解用戶在數(shù)據(jù)管理中的數(shù)據(jù)需求和完整性要求,如數(shù)據(jù)庫需要存儲哪些數(shù)據(jù)、用戶如何使用這些數(shù)據(jù)、這些數(shù)據(jù)有哪些約束等。因此客戶和最終用戶必須參與到對數(shù)據(jù)和業(yè)務(wù)的調(diào)查、分析和反饋的工作中,客戶和最終用戶必須確認是否考慮了業(yè)務(wù)的所有需求,以及由業(yè)務(wù)需求轉(zhuǎn)換的數(shù)據(jù)庫需求是否正確。在收集數(shù)據(jù)的初始階段,應(yīng)盡可能多地收集數(shù)據(jù),包括各種單據(jù)、憑證、表格、工作記錄、工作任務(wù)描述、會議記錄、組織結(jié)構(gòu)及其職能、經(jīng)營目標(biāo)等。在收集到的大量信息中,有一些信息對設(shè)計工作是有用的,而有一些可能沒有用處,設(shè)計人員經(jīng)過與用戶的多次交流和溝通,才能最后確定用戶的實際需求。在與用戶討論和溝通時,要詳細記錄。明確以下問題將有助于實現(xiàn)數(shù)據(jù)庫設(shè)計目標(biāo)。需求分析任務(wù)2-2任務(wù)1-1數(shù)據(jù)處理(1)有多少數(shù)據(jù),數(shù)據(jù)源自哪里,是否有已存在的數(shù)據(jù)資源?(2)必須保存哪些數(shù)據(jù),數(shù)據(jù)是字符、數(shù)字或日期型?(3)誰使用數(shù)據(jù),如何使用?(4)數(shù)據(jù)是否經(jīng)常修改,如何修改和什么時候修改?(5)某個數(shù)據(jù)是否依賴于另一個數(shù)據(jù)或被其他數(shù)據(jù)引用?(6)某個信息是否要唯一?(7)哪些數(shù)據(jù)是組織內(nèi)部的,哪些數(shù)據(jù)是外部的?(8)哪些業(yè)務(wù)活動與數(shù)據(jù)有關(guān),數(shù)據(jù)如何支持業(yè)務(wù)活動?(9)數(shù)據(jù)訪問的頻度和增長的幅度如何?(10)誰可以訪問數(shù)據(jù),如何保護數(shù)據(jù)。需求分析任務(wù)2-2任務(wù)1-1數(shù)據(jù)處理(二)需求分析的方法需求分析首先是調(diào)查清楚用戶的實際需求,與用戶達成共識,然后分析與表達這些需求。1.調(diào)查用戶需求的步驟調(diào)查用戶需求的具體步驟如下。(1)調(diào)查組織機構(gòu)情況。包括了解該組織的部門組成情況、各部門的職責(zé)等,為分析信息流程做準(zhǔn)備。(2)調(diào)查各部門的業(yè)務(wù)活動情況。包括了解各個部門輸入和使用什么數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到什么部門,輸出結(jié)果的格式是什么,這是調(diào)查的重點。需求分析任務(wù)2-2任務(wù)1-1數(shù)據(jù)處理(3)在熟悉業(yè)務(wù)的基礎(chǔ)上,協(xié)助用戶明確對新系統(tǒng)的各種要求,包括信息要求、處理要求、完全性與完整性要求,這是調(diào)查的又一個重點。(4)確定新系統(tǒng)的邊界。對前面調(diào)查的結(jié)果進行初步分析,確定哪些功能由計算機完成或?qū)頊?zhǔn)備讓計算機完成,哪些活動由人工完成。由計算機完成的功能就是新系統(tǒng)應(yīng)該實現(xiàn)的功能。需求分析任務(wù)2-2任務(wù)1-1數(shù)據(jù)處理2.常用的調(diào)查方法在調(diào)查過程中,可以根據(jù)不同的問題和條件使用不同的調(diào)查方法。常用的調(diào)查方法如下。(1)跟班作業(yè)。親自參加業(yè)務(wù)工作來了解業(yè)務(wù)活動的情況。這種方法可以比較準(zhǔn)確地了解用戶的需求,但比較耗費時間。(2)開調(diào)查會。與用戶座談來了解業(yè)務(wù)活動情況及用戶需求。座談時,參加者和用戶可以相互啟發(fā)。(3)請專人介紹。(4)詢問。對某些調(diào)查中的問題,可以找專人詢問。(5)問卷調(diào)查。設(shè)計調(diào)查表請用戶填寫。如果調(diào)查表設(shè)計合理,這種方法是很有效的,也易于為用戶所接受。(6)查閱記錄。查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄。任務(wù)2-3概念結(jié)構(gòu)設(shè)計PART3任務(wù)assignments(一)概念結(jié)構(gòu)設(shè)計的方法和步驟(二)局部E-R圖設(shè)計(三)全局E-R圖設(shè)計概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理(一)概念結(jié)構(gòu)設(shè)計的方法和步驟1.概念結(jié)構(gòu)設(shè)計的方法概念結(jié)構(gòu)設(shè)計的方法通常有以下4種。(1)自頂向下。首先定義全局概念結(jié)構(gòu)的框架,然后逐步細化。(2)自底向上。首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來,得到全局概念結(jié)構(gòu)。(3)逐步擴張。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu)。(4)混合策略。將自頂向下和自底向上的方法相結(jié)合,用自頂向下策略設(shè)計一個全局概念結(jié)構(gòu)的框架,以它為框架自底向上設(shè)計各局部概念結(jié)構(gòu)。概念結(jié)構(gòu)設(shè)計任務(wù)2-3其中最常采用的策略是混合策略,即自頂向下進行需求分析,然后自底向上設(shè)計概念結(jié)構(gòu),其方法如圖2.2所示。圖2.2自頂向下需求分析與自底向上概念結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理2.概念結(jié)構(gòu)設(shè)計的步驟按照圖2.2所示的自頂向下需求分析與自底向上概念結(jié)構(gòu)設(shè)計的方法,概念結(jié)構(gòu)設(shè)計可分為以下兩步。(1)進行數(shù)據(jù)抽象,設(shè)計局部E-R圖。(2)集成各局部E-R圖,形成全局E-R圖,其步驟如圖2.3所示。概念結(jié)構(gòu)設(shè)計任務(wù)2-3圖2.3概念結(jié)構(gòu)設(shè)計的步驟概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理(二)局部E-R圖設(shè)計設(shè)計局部E-R圖首先需要根據(jù)系統(tǒng)的具體情況,在多層的數(shù)據(jù)流圖中選擇一組適當(dāng)層次的數(shù)據(jù)流圖,讓這組圖中的每一部分對應(yīng)一個局部應(yīng)用,然后以這一層次的數(shù)據(jù)流圖為出發(fā)點,設(shè)計分E-R圖。將各局部應(yīng)用涉及的數(shù)據(jù)分別從數(shù)據(jù)字典中抽取出來,參照數(shù)據(jù)流圖,確定各局部應(yīng)用中的實體、實體的屬性、標(biāo)識實體的碼、實體之間的聯(lián)系及其類型(1∶1,1∶n,m∶n)。實際上,實體和屬性是相對而言的。同一事物在一種應(yīng)用環(huán)境中作為“屬性”,在另一種應(yīng)用環(huán)境中就有可能作為“實體”。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理例如,如圖2.4所示,大學(xué)中的“系”在某種應(yīng)用環(huán)境中,只是作為“學(xué)生”實體的一個屬性,表明一個學(xué)生屬于哪個系;而在另一種環(huán)境中,由于需要考慮一個系的系主任、教師人數(shù)、學(xué)生人數(shù)、辦公地點等,所以它需要作為實體。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理因此,要區(qū)分同一事物在不同的應(yīng)用環(huán)境中作為“屬性”還是作為“實體”,應(yīng)當(dāng)遵循兩條基本準(zhǔn)則。(1)屬性不能再具有需要描述的性質(zhì),即屬性必須是不可分的數(shù)據(jù)項,不能再由另一些屬性組成。(2)屬性不能與其他實體具有聯(lián)系。聯(lián)系只發(fā)生在實體之間。符合上述兩條特性的事物一般作為屬性對待。為了簡化E-R圖的處理,現(xiàn)實世界中的事物凡是能夠作為屬性對待的,都應(yīng)盡量作為屬性。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理【例2.1】設(shè)有如下實體。學(xué)生:學(xué)號、系名稱、姓名、性別、年齡、選修課程名、平均成績課程:編號、課程名、開課單位、任課教師號教師:教師號、姓名、性別、職稱、講授課程編號單位:單位名稱、電話、教師號、教師姓名上述實體中存在如下聯(lián)系。①一個學(xué)生可選修多門課程,一門課程可由多個學(xué)生選修。②一個教師可講授多門課程,一門課程可由多個教師講授。③一個系可有多個教師,一個教師只能屬于一個系。根據(jù)上述約定,可以得到學(xué)生選課局部E-R圖和教師授課局部E-R圖分別如圖2.5和圖2.6所概念結(jié)構(gòu)設(shè)計任務(wù)2-3概念結(jié)構(gòu)設(shè)計任務(wù)2-3概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理(三)全局E-R圖設(shè)計1.局部E-R圖的集成方法各個局部E-R圖建立好后,還需要將它們合并集成為一個整體的概念數(shù)據(jù)結(jié)構(gòu),即全局E-R圖。局部E-R圖的集成有兩種方法。(1)多元集成法,也叫作一次集成法,是指一次性將多個局部E-R圖合并為一個全局E-R圖,如圖2.7(a)所示。(2)二元集成法,也叫作逐步集成法,首先集成兩個重要的局部E-R圖,然后用累加的方法逐步將一個新的E-R圖集成進來,如圖2.7(b)所示。概念結(jié)構(gòu)設(shè)計任務(wù)2-3概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理2.局部E-R圖集成的步驟在實際應(yīng)用中,可以根據(jù)系統(tǒng)復(fù)雜度選擇這兩種方案。如果局部E-R圖比較簡單,可以采用一次集成法。一般情況下,采用逐步集成法,即每次只綜合兩個圖,這樣可降低難度。無論使用哪一種方法,局部E-R圖集成均分為兩個步驟。(1)合并分E-R圖,生成初步E-R圖。這個步驟將所有局部E-R圖綜合成全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要支持所有的局部E-R模型,而且必須合理地表示一個完整、一致的數(shù)據(jù)庫概念結(jié)構(gòu)。由于各個局部應(yīng)用面向的問題不同,并且通常由不同的設(shè)計人員設(shè)計局部E-R圖設(shè)計,因此,各局部E-R圖不可避免地會有許多不一致的地方,通常把這種現(xiàn)象稱為沖突。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理E-R圖中的沖突有3種:屬性沖突、命名沖突和結(jié)構(gòu)沖突。①屬性沖突。屬性沖突又分為屬性值域沖突和屬性的取值單位沖突。a.屬性值域沖突。即屬性值的類型、取值范圍或取值集合不同。例如,學(xué)生的學(xué)號通常用數(shù)字表示,這樣有些部門就將其定義為數(shù)值型,而有些部門將其定義為字符型。b.屬性的取值單位沖突。比如零件的重量,有的以千克為單位,有的以公斤為單位,有的則以克為單位。屬性沖突屬于用戶業(yè)務(wù)上的約定,必須與用戶協(xié)商后解決。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理②命名沖突。命名不一致可能發(fā)生在實體名、屬性名或聯(lián)系名之間,其中屬性的命名沖突最為常見,一般表現(xiàn)為同名異義或異名同義。a.同名異義,即同一名字的對象在不同的局部應(yīng)用中具有不同的意義。例如,“單位”在某些部門表示為人員所在的部門,而在某些部門可能表示物品的重量、長度等屬性。b.異名同義,即同一意義的對象在不同的局部應(yīng)用中具有不同的名稱。例如,對于“房間”這個名稱,在教務(wù)管理部門中對應(yīng)教室,而在后勤管理部門中對應(yīng)學(xué)生宿舍。命名沖突的解決方法同屬性沖突相同,需要與各部門協(xié)商、討論后解決。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理③結(jié)構(gòu)沖突。a.同一對象在不同應(yīng)用中有不同的抽象,可能為實體,也可能為屬性。例如,教師的職稱在某一局部應(yīng)用中被當(dāng)作實體,而在另一局部應(yīng)用中被當(dāng)作屬性。在解決這類沖突時,就是使同一對象在不同應(yīng)用中具有相同的抽象,或把實體轉(zhuǎn)換為屬性,或把屬性轉(zhuǎn)換為實體。b.同一實體在不同局部應(yīng)用中的屬性組成不同,可能是屬性數(shù)或?qū)傩缘呐帕写涡虿煌=鉀Q辦法是,合并后的實體的屬性組成為各局部E-R圖中的同名實體屬性的并集,然后適當(dāng)調(diào)整屬性的排列次序。c.實體之間的聯(lián)系在不同局部應(yīng)用中呈現(xiàn)不同的類型。例如,在局部應(yīng)用X中,E1與E2可能是一對一聯(lián)系,而在另一局部應(yīng)用Y中,可能是一對多或多對多聯(lián)系,也可能是E1、E2、E3三者之間有聯(lián)系。解決方法:根據(jù)應(yīng)用語義對實體聯(lián)系的類型進行綜合或調(diào)整。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理下面以例2.1中已畫出的兩個局部E-R圖(見圖2.5、圖2.6)為例,說明如何消除各局部E-R圖之間的沖突,并合并局部E-R模型,生成初步E-R圖。首先,這兩個局部E-R圖中存在命名沖突,學(xué)生選課局部E-R圖中的實體“系”與教師授課局部E-R圖中的實體“單位”都是指系,即所謂異名同義,合并后統(tǒng)一改為“系”,這樣屬性“名稱”和“單位名稱”即可統(tǒng)一為“系名”。其次,還存在結(jié)構(gòu)沖突,實體“系”和實體“單位”在兩個局部E-R圖中的屬性組成不同,合并后,這兩個實體的屬性組成為各局部E-R圖中的同名實體屬性的并集。解決上述沖突后,合并兩個局部E-R圖,就能生成初步的全局E-R圖。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理(2)消除不必要的冗余,生成基本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)然,不是所有的冗余數(shù)據(jù)和冗余聯(lián)系都必須消除,有時為了提高某些應(yīng)用的效率,不得不以冗余信息作為代價。設(shè)計數(shù)據(jù)庫概念模型時,哪些冗余信息必須消除,哪些冗余信息允許存在,需要根據(jù)用戶的整體需求確定。把消除了冗余的初步E-R圖稱為基本E-R圖。通常采用分析的方法消除冗余。數(shù)據(jù)字典是分析冗余數(shù)據(jù)的依據(jù),還可以通過數(shù)據(jù)流圖分析出冗余的聯(lián)系。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理在如圖2.5和圖2.6所示的初步E-R圖中,因為“課程”實體中的屬性“教師號”可由“講授”這個教師與課程之間的聯(lián)系導(dǎo)出,而學(xué)生的平均成績可由“選修”聯(lián)系中的屬性“成績”計算出來,所以“課程”實體中的“教師號”與“學(xué)生”實體中的“平均成績”均屬于冗余數(shù)據(jù)。另外,因為“系”和“課程”之間的聯(lián)系“開課”,可以由“系”和“教師”之間的“屬于”聯(lián)系與“教師”和“課程”之間的“講授”聯(lián)系推導(dǎo)出來,所以“開課”屬于冗余聯(lián)系。這樣,圖2.5和圖2.6所示的初步E-R圖在消除冗余數(shù)據(jù)和冗余聯(lián)系后,便可得到基本的E-R圖,如圖2.8所示。概念結(jié)構(gòu)設(shè)計任務(wù)2-3任務(wù)1-1數(shù)據(jù)處理PART4任務(wù)2-4邏輯結(jié)構(gòu)設(shè)計(一)初始關(guān)系模式設(shè)計(二)關(guān)系模式的規(guī)范化任務(wù)assignments邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理概念結(jié)構(gòu)設(shè)計階段得到的E-R模型是用戶的模型,它獨立于任何一種數(shù)據(jù)模型和任何一個具體的DBMS。為了創(chuàng)建用戶要求的數(shù)據(jù)庫,需要把上述概念模型轉(zhuǎn)換為某個具體的DBMS支持的數(shù)據(jù)模型。數(shù)據(jù)庫邏輯設(shè)計的過程是將概念結(jié)構(gòu)轉(zhuǎn)換成特定DBMS支持的數(shù)據(jù)模型的過程。從此開始便進入了“實現(xiàn)設(shè)計”階段,該階段需要考慮具體DBMS的性能、具體的數(shù)據(jù)模型特點。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理E-R圖表示的概念模型可以轉(zhuǎn)換成任何一種具體的DBMS支持的數(shù)據(jù)模型,如網(wǎng)狀模型、層次模型和關(guān)系模型。因為這里只討論關(guān)系數(shù)據(jù)庫的邏輯設(shè)計問題,所以只介紹如何將E-R圖轉(zhuǎn)換為關(guān)系模型。一般的邏輯設(shè)計分為以下3步,如圖2.9所示。(1)初始關(guān)系模式設(shè)計。(2)關(guān)系模式規(guī)范化。(3)模式的評價與改進。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4圖2.9關(guān)系數(shù)據(jù)庫的邏輯設(shè)計邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(一)初始關(guān)系模式設(shè)計1.轉(zhuǎn)換原則因為概念設(shè)計得到的E-R圖是由實體、屬性和聯(lián)系組成的,而關(guān)系數(shù)據(jù)庫邏輯設(shè)計的結(jié)果是一組關(guān)系模式的集合。所以將E-R圖轉(zhuǎn)換為關(guān)系模型實際上就是將實體、屬性和聯(lián)系轉(zhuǎn)換成關(guān)系模式。在轉(zhuǎn)換中要遵循以下規(guī)則。規(guī)則2.1實體類型的轉(zhuǎn)換:將每個實體類型轉(zhuǎn)換成一個關(guān)系模式,實體的屬性即為關(guān)系的屬性,實體的標(biāo)識符即為關(guān)系模式的碼。規(guī)則2.2聯(lián)系類型的轉(zhuǎn)換:根據(jù)不同的聯(lián)系類型做不同的處理。規(guī)則2.2.1若實體間的聯(lián)系是1∶1,則可以在兩個實體類型轉(zhuǎn)換成的兩個關(guān)系模式中的任意一個關(guān)系模式中加入另一個關(guān)系模式的碼和聯(lián)系類型的屬性。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理規(guī)則2.2.2若實體間的聯(lián)系是1∶n,則在n端實體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實體類型的碼和聯(lián)系類型的屬性。規(guī)則2.2.3若實體間的聯(lián)系是m∶n,則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實體類型的碼加上聯(lián)系類型的屬性,而碼為兩端實體碼的組合。規(guī)則2.2.43個或3個以上的實體間的一個多元聯(lián)系,不管是何種類型的聯(lián)系,總是將多元聯(lián)系類型轉(zhuǎn)換成一個關(guān)系模式,其屬性為與該聯(lián)系相連的各實體的碼及聯(lián)系本身的屬性,其碼為各實體碼的組合。規(guī)則2.2.5具有相同碼的關(guān)系可合并。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.2】將圖2.10所示的含有1∶1聯(lián)系的E-R圖按上述規(guī)則轉(zhuǎn)換為關(guān)系模式。該E-R圖包含兩個實體,實體間存在1∶1聯(lián)系,根據(jù)規(guī)則2.1和規(guī)則2.2.1可將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。方案1:“負責(zé)”與“職工”兩關(guān)系模式合并,轉(zhuǎn)換后的關(guān)系模式如下。職工(職工號,姓名,年齡,產(chǎn)品號)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格)邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理方案2:“負責(zé)”與“產(chǎn)品”兩關(guān)系模式合并,轉(zhuǎn)換后的關(guān)系模式如下。職工(職工號,姓名,年齡)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格,職工號)比較上面兩個方案,在方案1中,由于并不是每個職工都負責(zé)產(chǎn)品,所以產(chǎn)品號屬性的NULL值較多,方案2比較合理。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.3】將圖2.11所示的含有1∶n聯(lián)系的E-R圖按上述規(guī)則轉(zhuǎn)換為關(guān)系模式。該E-R圖包含兩個實體,實體間存在1∶n聯(lián)系,規(guī)則2.1和規(guī)則2.2.2可將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。倉庫(倉庫號,地點,面積)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,價格,倉庫號,數(shù)量)邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.4】將圖2.12所示的含有同實體集1∶n聯(lián)系的E-R圖按上述規(guī)則轉(zhuǎn)換為關(guān)系模式。該E-R圖只有一個實體,實體集內(nèi)部存在1∶n聯(lián)系,按規(guī)則2.1和規(guī)則2.2.2可將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。職工(職工號,姓名,年齡,領(lǐng)導(dǎo)工號)其中,“領(lǐng)導(dǎo)工號”就是領(lǐng)導(dǎo)的“職工號”,由于同一關(guān)系中不能有相同的屬性名,故將領(lǐng)導(dǎo)的“職工號”改為“領(lǐng)導(dǎo)工號”。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.5】將圖2.13所示的含有m∶n聯(lián)系的E-R圖按規(guī)則轉(zhuǎn)換為關(guān)系模式。該E-R圖包含兩個實體,實體間存在著m∶n聯(lián)系,按規(guī)則2.1和規(guī)則2.2.3可將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。商店(店號,店名,店址,店經(jīng)理)商品(商品號,商品名,單價,產(chǎn)地)經(jīng)營(店號,商品號,月銷售量)邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.6】將圖2.14所示的同實體集間含有m∶n聯(lián)系的E-R圖按規(guī)則轉(zhuǎn)換為關(guān)系模式。該E-R圖只有一個實體,實體集內(nèi)部存在m∶n聯(lián)系,按規(guī)則2.1和規(guī)則2.2.3可將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。零件(零件號,名稱,價格)組裝(組裝件號,零件號,數(shù)量)其中,“組裝件號”為組裝后的復(fù)雜零件號,由于同一個關(guān)系中不允許存在同屬性名,因而改為“組裝件號”。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.7】將圖2.15所示的多實體集間含有m∶n聯(lián)系的E-R圖根據(jù)規(guī)則轉(zhuǎn)換為關(guān)系模式。該E-R圖包含3個實體,3個實體間存在m∶n聯(lián)系,按規(guī)則2.1和規(guī)則2.2.4可將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。供應(yīng)商(供應(yīng)商號,供應(yīng)商名,地址)零件(零件號,零件名,單價)產(chǎn)品(產(chǎn)品號,產(chǎn)品名,型號)供應(yīng)(供應(yīng)商號,零件號,產(chǎn)品號,數(shù)量)邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.8】將圖2.8所示的E-R圖,按轉(zhuǎn)換規(guī)則轉(zhuǎn)換為關(guān)系模式。圖2.8所示的E-R圖包含4個實體,實體間存在兩個1∶n聯(lián)系和兩個m∶n聯(lián)系,按規(guī)則2.1、規(guī)則2.2.2和規(guī)則2.2.3將該E-R圖轉(zhuǎn)換為如下關(guān)系模式(帶下畫線的屬性為碼)。系(系名,電話)教師(教師號,姓名,性別,職稱,系名)學(xué)生(學(xué)號,姓名,性別,年齡,系名)課程(課程號,課程名)選修(學(xué)號,課程號,成績)講授(教師號,課程號)邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(二)關(guān)系模式的規(guī)范化數(shù)據(jù)庫邏輯設(shè)計的結(jié)果不是唯一的。為了進一步提高數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能,還應(yīng)該根據(jù)應(yīng)用需要適當(dāng)修改、調(diào)整數(shù)據(jù)模型的結(jié)構(gòu),這就是數(shù)據(jù)模型的優(yōu)化。關(guān)系數(shù)據(jù)模型的優(yōu)化通常以規(guī)范化理論為指導(dǎo)。關(guān)系模式設(shè)計的好壞將直接影響數(shù)據(jù)庫設(shè)計的成敗。將關(guān)系模式規(guī)范化,使之達到較高的范式是設(shè)計好關(guān)系模式的唯一途徑,否則,設(shè)計的關(guān)系數(shù)據(jù)庫會產(chǎn)生一系列的問題。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理1.存在的問題及解決方法(1)存在的問題。下面以一個實例說明關(guān)系沒有經(jīng)過規(guī)范化可能會出現(xiàn)的問題。例如,要設(shè)計一個教學(xué)管理數(shù)據(jù)庫,希望從該數(shù)據(jù)庫中得到學(xué)生學(xué)號、姓名、年齡、性別、系別、系主任姓名、學(xué)生學(xué)習(xí)的課程名和該課程的成績信息。若將此信息要求設(shè)計為一個關(guān)系,則關(guān)系模式如下。
S(sno,sname,sage,ssex,sdept,mname,cname,score) 該關(guān)系模式中各屬性之間的關(guān)系為:一個系有若干個學(xué)生,但一個學(xué)生只屬于一個系;一個系只能有一名系主任,但一個系主任可以同時兼幾個系的系主任;一個學(xué)生可以選修多門課程,每門課程可被若干個學(xué)生選修;每個學(xué)生學(xué)習(xí)的每門課程都有一個成績。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理從表2.1中的數(shù)據(jù)情況可以看出,該關(guān)系存在以下問題。①數(shù)據(jù)冗余太大。每個系名和系主任的名字存儲的次數(shù)等于該系學(xué)生人數(shù)乘以每個學(xué)生選修的課程數(shù),系名和系主任數(shù)據(jù)重復(fù)量太大。②插入異常。一個新系沒有招生,或系里有學(xué)生但沒有選修課程時,系名和系主任名無法插入數(shù)據(jù)庫中。因為在這個關(guān)系模式中,碼是(sno,cname),這時沒有學(xué)生而使得學(xué)號無值,或?qū)W生沒有選課而使得課程名無值。但在一個關(guān)系中,碼屬性不能為空值,因此關(guān)系數(shù)據(jù)庫無法操作,導(dǎo)致插入異常。③刪除異常。當(dāng)某系的學(xué)生全部畢業(yè)而又沒有招新生時,在刪除學(xué)生信息的同時,系及系主任名的信息隨之刪除,但這個系依然存在,但在數(shù)據(jù)庫中無法找到該系的信息,即出現(xiàn)了刪除異常。④更新異常。若某系換系主任,則數(shù)據(jù)庫中該系的學(xué)生記錄應(yīng)全部修改。如果稍有不慎,某些記錄漏改了,則造成數(shù)據(jù)不一致,即出現(xiàn)了更新異常。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理為什么會發(fā)生插入異常和刪除異常?原因是該關(guān)系模式中屬性與屬性之間存在不好的數(shù)據(jù)依賴。一個“好”的關(guān)系模式應(yīng)當(dāng)不會發(fā)生插入和刪除異常,冗余度要盡可能少。(2)解決方法。對于存在問題的關(guān)系模式,可以通過模式分解的方法使之規(guī)范化。例如,將上述關(guān)系模式分解成3個關(guān)系模式。S(sno,sname,sage,ssex,sdept)SC(sno,cname,score)DEPT(sdept,mname)這樣分解后,3個關(guān)系模式都不會發(fā)生插入異常、刪除異常,數(shù)據(jù)的冗余度也得到了控制,數(shù)據(jù)的更新也變得簡單。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理2.函數(shù)依賴的基本概念(1)規(guī)范化。規(guī)范化是指用形式更為簡潔、結(jié)構(gòu)更加規(guī)范的關(guān)系模式取代原有關(guān)系模式的過程。(2)關(guān)系模式對數(shù)據(jù)的要求。關(guān)系模式必須滿足一定的完整性約束條件,以達到現(xiàn)實世界對數(shù)據(jù)的要求。完整性約束條件主要包括以下兩個方面。①對屬性取值范圍的限定。②屬性值間的相互聯(lián)系(主要體現(xiàn)在值的相等與否),這種聯(lián)系稱為數(shù)據(jù)依賴。(3)屬性間的聯(lián)系。第1章講到客觀世界的事物間存在著錯綜復(fù)雜的聯(lián)系,實體間的聯(lián)系有兩類:一類是實體與實體之間的聯(lián)系;另一類是實體內(nèi)部各屬性間的聯(lián)系。這里主要討論第二類聯(lián)系。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理屬性間的聯(lián)系可分為3類。①一對一聯(lián)系(1∶1)。以學(xué)生關(guān)系模式S(sno,sname,sage,ssex,sdept,mname,cname,score)為例,如果學(xué)生無重名,則屬性sno和sname之間是一對一聯(lián)系,一個學(xué)號唯一地決定一個姓名,一個姓名也唯一地決定一個學(xué)號。設(shè)X、Y是關(guān)系R的兩個屬性(集)。如果對于X中的任一具體值,Y中至多有一個值與之對應(yīng);反之亦然,則稱X、Y兩屬性間是一對一聯(lián)系。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理②一對多聯(lián)系(1∶n)。在學(xué)生關(guān)系模式S中,屬性sdept和sno之間是一對多聯(lián)系,即一個系對應(yīng)多個學(xué)號(如計算機系可對應(yīng)20060101、20060102等),但一個學(xué)號只對應(yīng)一個系(如20060101只能對應(yīng)計算機系)。同樣,mname和sno、sno和score之間都是一對多聯(lián)系。設(shè)X、Y是關(guān)系R的兩個屬性(集)。如果對于X中的任一具體值,Y中至多有一個值與之對應(yīng),而Y中的一個值卻可以和X中的n個值(n≥0)相對應(yīng),則稱Y對X是一對多聯(lián)系。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理③多對多聯(lián)系(m∶n)。在學(xué)生關(guān)系模式S中,cname和score兩屬性間是多對多聯(lián)系。一門課程對應(yīng)多個成績,一個成績也可以在多門課程中出現(xiàn)。sno和cname、sno和score之間也是多對多聯(lián)系。設(shè)X、Y是關(guān)系R的兩個屬性(集)。如果對于X中的任一具體值,Y中有m(m≥0)個值與之對應(yīng),而Y中的一個值也可以和X中的n個值(n≥0)相對應(yīng),則稱Y對X是多對多聯(lián)系。上述屬性間的3種聯(lián)系實際上是屬性值之間相互依賴又相互制約的反映,稱為屬性間的數(shù)據(jù)依賴。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(4)數(shù)據(jù)依賴。數(shù)據(jù)依賴是指通過一個關(guān)系中屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間的相互關(guān)系,是現(xiàn)實世界屬性間相互聯(lián)系的抽象,是數(shù)據(jù)內(nèi)在的性質(zhì)。數(shù)據(jù)依賴共有3種:函數(shù)依賴(FunctionalDependency,F(xiàn)D)、多值依賴(MultiValued-Dependency,MVD)和連接依賴(JoinDependency,JD),其中最重要的是函數(shù)依賴和多值依賴。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(5)函數(shù)依賴。在數(shù)據(jù)依賴中,函數(shù)依賴是最基本、最重要的一種依賴,它是屬性之間的一種聯(lián)系,假設(shè)給定一個屬性的值,就可以唯一確定(查找到)另一個屬性的值。例如,知道某一學(xué)生的學(xué)號,可以唯一地查詢到其對應(yīng)的系別,如果這種情況成立,就可以說系別函數(shù)依賴于學(xué)號。這種唯一性并非指只有一個記錄,而是指任何記錄。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理定義1:設(shè)有關(guān)系模式R(U),X和Y均為U={A1,A2,…,An}的子集,r是R的任一具體關(guān)系,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等(也就是說,如果對于r中的任意兩個元組t和s,只要有t[X]=s[X],就有t[Y]=s[Y]),則稱X函數(shù)決定Y,或稱Y函數(shù)依賴于X,記作X→Y,其中X叫作決定因素(Determinant),Y叫作依賴因素(Dependent)。這里的t[X]表示元組t在屬性集X上的值,s[X]表示元組s在屬性集X上的值。FD是對關(guān)系模式R的一切可能的當(dāng)前值r的定義,不是針對某個特定關(guān)系的。通俗地說,在當(dāng)前值r的兩個不同元組中,如果X值相同,就一定要求Y值也相同;或者說,對于X的每個具體值,都有Y唯一的具體值與之對應(yīng)。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理下面介紹函數(shù)依賴相關(guān)的術(shù)語與記號。①X→Y,但YX,則稱X→Y是非平凡的函數(shù)依賴。②X→Y,但YX,則稱X→Y是平凡的函數(shù)依賴。因為平凡的函數(shù)依賴總是成立的,所以若不特別聲明,則本書后面提到的函數(shù)依賴,都不包含平凡的函數(shù)依賴。③若X→Y,Y→X,則稱XY。④若Y不函數(shù)依賴于X,則記作XY。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理定義2:在關(guān)系模式R(U)中,如果X→Y,并且對于X的任何一個真子集X¢,都有X¢Y,則稱Y對X完全函數(shù)依賴,記作XY。若X→Y,如果存在X的某一真子集X(X¢X),使X¢→Y,則稱Y對X部分函數(shù)依賴,記作XY。定義3:在關(guān)系模式R(U)中,X、Y、Z是R的3個不同的屬性或?qū)傩越M,如果X→Y(YX,Y不是X的子集),且YX,Y→Z,則稱Z對X傳遞函數(shù)依賴,記作XZ。加上條件YX,是因為如果Y→X,則XY,實際上是X→Z,是直接函數(shù)依賴而不是傳遞函數(shù)依賴。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(6)屬性間聯(lián)系決定函數(shù)依賴。前面討論的屬性間的3種聯(lián)系,并不是每種聯(lián)系中都存在函數(shù)依賴。①1∶1聯(lián)系:如果兩屬性集X、Y之間是1∶1聯(lián)系,則存在函數(shù)依賴XY。例如,在學(xué)生關(guān)系模式S中,如果不允許學(xué)生重名,則有snosname。②1∶n聯(lián)系:如果兩屬性集X、Y之間是n∶1聯(lián)系,則存在函數(shù)依賴X→Y,即多方?jīng)Q定一方,如sno→sdept、sno→sage、sno→mname等。③m∶n聯(lián)系:如果兩屬性集X、Y之間是m∶n聯(lián)系,則不存在函數(shù)依賴。例如,sno和cname之間、cname和score之間就是如此。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.9】設(shè)有關(guān)系模式S(sno,sname,sage,ssex,sdept,mname,cname,score),判斷以下函數(shù)依賴的對錯。①sno→sname,sno→ssex,(sno,cname)→score。②cname→sno,sdept→cname,sno→cname。在①中,因為sno和sname之間存在一對一或一對多聯(lián)系,sno和ssex、(sno,cname)和score之間存在一對多聯(lián)系,所以這些函數(shù)依賴是存在的。在②中,因為sno和cname、sdept和cname之間都是多對多聯(lián)系,因此它們之間是不存在函數(shù)依賴的。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.10】設(shè)有關(guān)系模式:學(xué)生課程(學(xué)號,姓名,課程號,課程名稱,成績,教師,教師年齡),在該關(guān)系模式中,因為成績要由學(xué)號和課程號共同確定,教師決定教師年齡。所以此關(guān)系模式包含了以下函數(shù)依賴關(guān)系。學(xué)號→姓名(每個學(xué)號只能有一個學(xué)生姓名與之對應(yīng))課程號→課程名稱(每個課程號只能對應(yīng)一個課程名稱)(學(xué)號,課程號)→成績(每個學(xué)生學(xué)習(xí)一門課只能有一個成績)教師→教師年齡(每一個教師只能有一個年齡)邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理3.范式利用規(guī)范化理論,使關(guān)系模式的函數(shù)依賴集滿足特定的要求,滿足特定要求的關(guān)系模式稱為范式。關(guān)系按其規(guī)范化程度從低到高可分為5級范式(NormalForm),分別稱為1NF、2NF、3NF(BCNF)、4NF、5NF。規(guī)范化程度較高者必是較低者的子集,即
5NF4NFBCNF3NF2NF1NF 一個低一級范式的關(guān)系模式,通過模式分解可以轉(zhuǎn)換成若干個高一級范式的關(guān)系模式的集合,這個過程稱為規(guī)范化。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(1)第一范式(1NF)。定義4:如果關(guān)系模式R中不包含多值屬性(每個屬性必須是不可分的數(shù)據(jù)項),則R滿足第一范式(FirstNormalForm),記作R∈1NF。1NF是規(guī)范化的最低要求,是關(guān)系模式要遵循的最基本的范式,不滿足1NF的關(guān)系是非規(guī)范化的關(guān)系。關(guān)系模式如果僅僅滿足1NF是不夠的。盡管學(xué)生關(guān)系模式S滿足1NF,但它仍然會出現(xiàn)插入異常、刪除異常、更新異常及數(shù)據(jù)冗余等問題,只有對關(guān)系模式繼續(xù)規(guī)范化,使之滿足更高的范式,才能得到高性能的關(guān)系模式。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(2)第二范式(2NF)。定義5:如果關(guān)系模式R(U,F(xiàn))1NF,且R中的每個非主屬性完全函數(shù)依賴于R的某個候選碼,則R滿足第二范式(SecondNormalForm),記作R2NF。【例2.11】關(guān)系模式S-L-C(U,F(xiàn))U={SNO,SDEPT,SLOC,CNO,SCORE},其中SNO是學(xué)號,SDEPT是學(xué)生所在系,SLOC是學(xué)生的宿舍(住處),CNO是課程號,SCORE是成績。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理該關(guān)系模式的碼=(SNO,CNO)函數(shù)依賴集F={(SNO,CNO)→SCORE,SNO→SDEPT,SNO→SLOC,SDEPT→SLOC}非主屬性={SDEPT,SLOC,SCORE}非主屬性對碼的部分函數(shù)依賴={(SNO,CNO)SDEPT,(SNO,CNO)SLOC}顯然,該關(guān)系模式不滿足2NF。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理不滿足2NF的關(guān)系模式會產(chǎn)生以下幾個問題。①插入異常。插入一個新學(xué)生,若該生沒有選課,則CNO為空,但因為碼不能為空,所以不能插入。②刪除異常。某學(xué)生只選擇了一門課,現(xiàn)在該門課要刪除,則該學(xué)生的基本信息也將刪除。③更新異常。某個學(xué)生要從一個系轉(zhuǎn)到另一個系,若該生選修了K門課,則該學(xué)生必須修改的相關(guān)字段值為2K個(系別、住處),一旦有遺漏,將破壞數(shù)據(jù)的一致性。造成以上問題的原因是SDEPT、SLOC部分函數(shù)依賴于碼。解決的辦法是用投影分解把關(guān)系模式分解為多個關(guān)系模式。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理投影分解是把非主屬性及決定因素分解出來構(gòu)成新的關(guān)系,決定因素在原關(guān)系中保持,函數(shù)依賴關(guān)系相應(yīng)分開轉(zhuǎn)化(將關(guān)系模式中部分依賴的屬性去掉,將部分依賴的屬性單獨組成一個新的模式)。上述關(guān)系模式分解的結(jié)果如下。S-C(SNO,CNO,SCORE)碼={(SNO,CNO)}F={(SNO,CNO)→SCORE}S-L(SNO,SDEPT,SLOC)碼={SNO}F={SNO→SDEPT,SNO→SLOC,SDEPT→SLOC}經(jīng)過模式分解,因為兩個關(guān)系模式中的非主屬性對碼都是完全函數(shù)依賴,所以它們都滿足2NF。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(3)第三范式(3NF)。定義6:如果關(guān)系模式R(U,F(xiàn))2NF,且每個非主屬性都不傳遞函數(shù)依賴于任何候選碼,則R滿足第三范式(ThirdNormalForm),記作R3NF。在例2.11中,因為關(guān)系S-L(SNO,SDEPT,SLOC),SNO→SDEPT,SDEPT→SLOC,SLOC傳遞函數(shù)依賴于碼SNO,所以S-L不滿足3NF。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理解決的方法同樣是將S-L進行投影分解,結(jié)果如下。S-D(SNO,SDEPT)碼={SNO}F={SNO→SDEPT}D-L(SDEPT,SLOC)碼={SDEPT}F={SDEPT→SLOC}分解后的關(guān)系模式中不再存在傳遞函數(shù)依賴,即關(guān)系模式S-D和D-L都滿足3NF。3NF是一個可用的關(guān)系模式應(yīng)滿足的最低范式,也就是說,一個關(guān)系模式如果不滿足3NF,實際上它就是不能使用的。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理(4)BCNF。BCNF(BoyceCoddNormalForm)是由Boyce和Codd提出的,比3NF又進了一步,通常認為BCNF是修正的第三范式,有時也稱為擴充的第三范式。定義7:關(guān)系模式R(U,F(xiàn))1NF,若X→Y且YX時,X必含有碼,則R(U,F(xiàn))BCNF。也就是說,在關(guān)系模式R(U,F(xiàn))中,若每個決定因素都包含碼,則R(U,F(xiàn))BCNF。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理由BCNF的定義可以得出結(jié)論,一個滿足BCNF的關(guān)系模式有以下特點。①所有非主屬性對每一個碼都是完全函數(shù)依賴。②所有的主屬性對每一個不包含它的碼也是完全函數(shù)依賴。③沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性?!纠?.12】設(shè)關(guān)系模式SC(U,F(xiàn)),其中U={SNO,CNO,SCORE}F={(SNO,CNO)→SCORE}SC的候選碼為(SNO,CNO),決定因素中包含碼,因為沒有屬性對碼傳遞依賴或部分依賴,所以SCBCNF。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理【例2.13】設(shè)關(guān)系模式STJ(S,T,J),其中S是學(xué)生,T是教師,J是課程。每位教師只教一門課,每門課有若干教師,某一學(xué)生選定某門課,就對應(yīng)一位固定的教師。由語義可得到如下函數(shù)依賴。(S,J)→T,(S,T)→J,T→J該關(guān)系模式的候選碼為(S,J)、(S,T)。因為該關(guān)系模式中的所有屬性都是主屬性,所以STJ3NF,但STJBCNF,因為T是決定因素,但T不包含碼。邏輯結(jié)構(gòu)設(shè)計任務(wù)2-4任務(wù)1-1數(shù)據(jù)處理不屬于BCNF的關(guān)系模式仍然存在數(shù)據(jù)冗余問題。例如,例2.13中的關(guān)系模式STJ,如果有100個學(xué)生選定某一門課,則教師與該課程的關(guān)系就會重復(fù)存儲100次。STJ可分解為如下兩個滿足BCNF的關(guān)系模式,以消除此種冗余。TJ(T,J)ST(S,T)任務(wù)2-5數(shù)據(jù)庫的物理設(shè)計PART5(一)關(guān)系模式存取方法選擇(二)確定數(shù)據(jù)庫的存儲結(jié)構(gòu)任務(wù)assignments數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu),它依賴于給定的計算機系統(tǒng)。為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用要求的物理結(jié)構(gòu)的過程,稱為數(shù)據(jù)庫的物理設(shè)計。物理設(shè)計的目的是有效實現(xiàn)邏輯模式,確定采取的存儲策略。此階段是以邏輯設(shè)計的結(jié)果作為輸入,并結(jié)合具體DBMS的特點與存儲設(shè)備特性進行設(shè)計,選定數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理數(shù)據(jù)庫的物理設(shè)計可分為兩步。(1)確定數(shù)據(jù)庫的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存儲結(jié)構(gòu)和存取方法。(2)對物理結(jié)構(gòu)進行評價,評價的重點是時間和空間效率。如果評價結(jié)果滿足原設(shè)計要求,則可進入物理實施階段,否則需要重新設(shè)計或修改物理結(jié)構(gòu),有時甚至要返回邏輯設(shè)計階段修改數(shù)據(jù)模型。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理(一)關(guān)系模式存取方法選擇數(shù)據(jù)庫系統(tǒng)是多用戶共享的系統(tǒng),對同一個關(guān)系要建立多條存取路徑才能滿足多用戶的多種應(yīng)用要求。物理設(shè)計的任務(wù)之一就是確定選擇哪些存取方法,即建立哪些存取路徑。存取方法是快速存取數(shù)據(jù)庫中數(shù)據(jù)的技術(shù)。DBMS一般都提供多種存取方法,常用的存取方法有3類:索引方法、聚簇(Cluster)方法和HASH方法。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理1.索引存取方法的選擇在關(guān)系數(shù)據(jù)庫中,索引是一個單獨的、物理的數(shù)據(jù)結(jié)構(gòu),它是某個表中一列或若干列的集合和相應(yīng)指向表中物理標(biāo)識這些值的數(shù)據(jù)頁的邏輯指針清單。索引可以提高數(shù)據(jù)的訪問速度,可以確保數(shù)據(jù)的唯一性。所謂索引存取方法,就是根據(jù)應(yīng)用要求確定對關(guān)系的哪些屬性列建立索引、哪些屬性列建立組合索引、哪些索引要設(shè)計為唯一索引等。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理(1)如果一個(或一組)屬性經(jīng)常在查詢條件中出現(xiàn),則考慮在這個(或這組)屬性上建立索引(或組合索引)。(2)如果一個屬性經(jīng)常作為最大值或最小值等聚集函數(shù)的參數(shù),則考慮在這個屬性上建立索引。(3)如果一個(或一組)屬性經(jīng)常在連接操作的連接條件中出現(xiàn),則考慮在這個(或這組)屬性上建立索引。關(guān)系上定義的索引數(shù)并不是越多越好,因為系統(tǒng)為維護索引要付出代價,并且查找索引也要付出代價。例如,若一個關(guān)系的更新頻率很高,在這個關(guān)系上定義的索引就不能太多。因為更新一個關(guān)系時,必須對這個關(guān)系上有關(guān)的索引做相應(yīng)的修改。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理2.聚簇存取方法的選擇為了提高某個屬性或?qū)傩越M的查詢速度,把這個或這些屬性(稱為聚簇碼)上具有相同值的元組集中存放在連續(xù)的物理塊稱為聚簇。創(chuàng)建聚簇可以大大提高按聚簇碼進行查詢的效率。例如,要查詢信息系的所有學(xué)生,若信息系有500名學(xué)生,在極端情況下,這500名學(xué)生對應(yīng)的數(shù)據(jù)元組分布在500個不同的物理塊上,盡管可以按系名建立索引,由索引找到信息系學(xué)生的元組標(biāo)識,但由元組標(biāo)識去訪問數(shù)據(jù)塊就要存取500個物理塊,執(zhí)行500次I/O操作。如果在“系名”這個屬性上建立聚簇,則同一系的學(xué)生元組將集中存放,這將顯著減少訪問磁盤的次數(shù)。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu),它依賴于給定的計算機系統(tǒng)。為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用要求的物理結(jié)構(gòu)的過程,稱為數(shù)據(jù)庫的物理設(shè)計。物理設(shè)計的目的是有效實現(xiàn)邏輯模式,確定采取的存儲策略。此階段是以邏輯設(shè)計的結(jié)果作為輸入,并結(jié)合具體DBMS的特點與存儲設(shè)備特性進行設(shè)計,選定數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu),它依賴于給定的計算機系統(tǒng)。為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用要求的物理結(jié)構(gòu)的過程,稱為數(shù)據(jù)庫的物理設(shè)計。物理設(shè)計的目的是有效實現(xiàn)邏輯模式,確定采取的存儲策略。此階段是以邏輯設(shè)計的結(jié)果作為輸入,并結(jié)合具體DBMS的特點與存儲設(shè)備特性進行設(shè)計,選定數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)和存取方法。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理(1)設(shè)計聚簇的規(guī)則。①凡符合下列條件之一,都可以考慮建立聚簇。a.對經(jīng)常在一起進行連接操作的關(guān)系可以建立聚簇。b.如果一個關(guān)系的一組屬性經(jīng)常出現(xiàn)在相等比較條件中,則該關(guān)系可建立聚簇。c.如果一個關(guān)系的一個或一組屬性上的值的重復(fù)率很高,即對應(yīng)每個聚簇碼值的平均元組不是太少,則可以建立聚簇。如果元組太少,則聚簇的效果不明顯。②凡存在下列條件之一,應(yīng)考慮不建立聚簇。a.需要經(jīng)常對全表進行掃描的關(guān)系。b.在某屬性列上的更新操作遠多于查詢和連接操作的關(guān)系。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理(2)使用聚簇需要注意的問題如下。①一個關(guān)系最多只能加入一個聚簇。②聚簇對于某些特定應(yīng)用可以明顯提高性能,但建立聚簇和維護聚簇的開銷很大。③在一個關(guān)系上建立聚簇,將導(dǎo)致移動關(guān)系中元組的物理存儲位置,并使此關(guān)系上的原有索引無效,必須重建。④因為一個元組的聚簇碼值改變時,該元組的存儲也要做相應(yīng)的移動,所以聚簇碼值要相對穩(wěn)定,以減少修改聚簇碼值引起的維護開銷。因此,通過聚簇碼進行訪問或連接是關(guān)系的主要應(yīng)用,與聚簇碼無關(guān)的其他訪問很少或者是次要時,可以使用聚簇。當(dāng)SQL語句中包含有與聚簇碼有關(guān)的ORDERBY、GROUPBY、UNION、DISTINCT等子句或短語時,使用聚簇特別有利,可以省去對結(jié)果集的排序操作;否則很可能會適得其反。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理3.Hash存取方法的選擇有些DBMS提供了Hash存取方法。選擇Hash存取方法的規(guī)則如下。如果一個關(guān)系的屬性主要出現(xiàn)在等值連接條件或相等比較選擇條件中,并且滿足下列兩個條件之一時,則此關(guān)系可以選擇Hash存取方法。(1)一個關(guān)系的大小可預(yù)知,并且不變。(2)關(guān)系的大小動態(tài)改變,并且選用的DBMS提供了動態(tài)Hash存取方法。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理(二)確定數(shù)據(jù)庫的存儲結(jié)構(gòu)確定數(shù)據(jù)庫的物理結(jié)構(gòu)主要是指確定數(shù)據(jù)的存放位置和存儲結(jié)構(gòu),包括確定關(guān)系、索引、聚簇、日志、備份等的存儲安排和存儲結(jié)構(gòu);確定系統(tǒng)配置等。提示確定數(shù)據(jù)的存放位置和存儲結(jié)構(gòu)要綜合考慮存取時間、存儲空間利用率和維護代價3方面的因素。這3個方面常常相互矛盾,因此在實際應(yīng)用中需要全方位權(quán)衡,選擇一個折中的方案。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理1.確定數(shù)據(jù)的存放位置為了提高系統(tǒng)性能,應(yīng)該根據(jù)實際應(yīng)用情況將數(shù)據(jù)庫中數(shù)據(jù)的易變部分與穩(wěn)定部分、常存取部分、存取頻率較低部分分開存放。有多個磁盤的計算機可以采用下面幾種存取位置的分配方案。(1)將表和該表的索引放在不同的磁盤上。在查詢時,兩個磁盤驅(qū)動器并行操作,提高了物理I/O讀/寫的效率。(2)將比較大的表分別放在兩個磁盤上,以加快存取速度,這在多用戶環(huán)境下特別有效。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理(3)將日志文件與數(shù)據(jù)庫的對象(表、索引等)放在不同的磁盤上,以改進系統(tǒng)的性能。(4)經(jīng)常存取或?qū)Υ嫒r間要求高的對象(如表、索引)應(yīng)放在高速存儲器(如硬盤)上;存取頻率小或?qū)Υ嫒r間要求低的對象(如數(shù)據(jù)庫的數(shù)據(jù)備份和日志文件備份等,只在故障恢復(fù)時才使用),如果數(shù)據(jù)量很大,就可以存放在低速存儲設(shè)備上。數(shù)據(jù)庫的物理設(shè)計任務(wù)2-5任務(wù)1-1數(shù)據(jù)處理2.確定系統(tǒng)配置DBMS產(chǎn)品一般都提供了一些系統(tǒng)配置變量、存儲分配參數(shù),供設(shè)計人員和DBA對數(shù)據(jù)庫進行物理優(yōu)化。在初始情況下,系統(tǒng)都為這些變量賦予了合理的默認值。這些初始值并不一定適合每種應(yīng)用環(huán)境,在進行物理設(shè)計時,需要重新對這些變量賦值,以改善系統(tǒng)的性能。系統(tǒng)配置變量很多,例如,同時使用數(shù)據(jù)庫的用戶數(shù)、同時打開數(shù)據(jù)庫的對象數(shù)、內(nèi)存分配參數(shù)、緩沖區(qū)分配參數(shù)(使用的緩沖區(qū)長度、數(shù)量)、存儲分配參數(shù)、物理塊的大小、物理塊裝填因子、時間片大小、數(shù)據(jù)庫的大小、鎖的數(shù)目等。這些參數(shù)值會影響存取時間和存儲空間的分配,因此在進行物理設(shè)計時,要根據(jù)應(yīng)用環(huán)境確定這些參數(shù)值,以使系統(tǒng)性能最佳。任務(wù)2-6數(shù)據(jù)庫的實施、運行和維護PART6(一)數(shù)據(jù)庫的實施(二)數(shù)據(jù)庫的運行與維護任務(wù)assignments數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理(一)數(shù)據(jù)庫的實施完成數(shù)據(jù)庫的物理設(shè)計之后,設(shè)計人員就要用關(guān)系DBMS提供的數(shù)據(jù)定義語言和其他實用程序?qū)?shù)據(jù)庫邏輯設(shè)計和物理設(shè)計的結(jié)果嚴(yán)格地描述出來,成為DBMS可以接受的代碼,再經(jīng)過調(diào)試產(chǎn)生目標(biāo)模式,然后就可以組織數(shù)據(jù)入庫了,這就是數(shù)據(jù)庫實施階段。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理1.?dāng)?shù)據(jù)載入數(shù)據(jù)庫實施階段包括兩項重要的工作:一項是數(shù)據(jù)載入;另一項是應(yīng)用程序的編碼和調(diào)試。數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)量一般都很大,而且數(shù)據(jù)來源于部門的各個不同的單位,數(shù)據(jù)的組織方式、結(jié)構(gòu)和格式都與新設(shè)計的數(shù)據(jù)庫系統(tǒng)有相當(dāng)?shù)牟罹唷=M織數(shù)據(jù)載入就是將各類源數(shù)據(jù)從各個局部應(yīng)用中抽取出來,輸入計算機,再分類轉(zhuǎn)換,最后綜合成新設(shè)計的數(shù)據(jù)庫結(jié)構(gòu)的形式,輸入數(shù)據(jù)庫。因此這樣的數(shù)據(jù)轉(zhuǎn)換、組織入庫的工作是相當(dāng)費時費力的。由于各個不同的應(yīng)用環(huán)境差異很大,不可能有通用的轉(zhuǎn)換器,DBMS產(chǎn)品也不提供通用的轉(zhuǎn)換工具。為提高數(shù)據(jù)輸入的效率和質(zhì)量,應(yīng)該針對具體的應(yīng)用環(huán)境設(shè)計數(shù)據(jù)錄入子系統(tǒng),由計算機來完成數(shù)據(jù)載入的任務(wù)。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理由于要載入的數(shù)據(jù)在原來系統(tǒng)中的格式結(jié)構(gòu)與新系統(tǒng)中的不完全一樣,有的差別可能比較大,不僅在向計算機輸入數(shù)據(jù)時有可能發(fā)生錯誤,而且在轉(zhuǎn)換過程中也有可能出錯。因此在源數(shù)據(jù)入庫之前要采用多種方法對它們進行檢查,以防止不正確的數(shù)據(jù)入庫,這部分的工作在整個數(shù)據(jù)輸入子系統(tǒng)中是非常重要的。數(shù)據(jù)庫應(yīng)用程序的設(shè)計應(yīng)該與數(shù)據(jù)庫設(shè)計同時進行,因此在組織數(shù)據(jù)入庫的同時,還要調(diào)試應(yīng)用程序。應(yīng)用程序的設(shè)計、編碼和調(diào)試的方法、步驟在程序設(shè)計語言中有詳細的講解,這里就不再贅述了。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理2.?dāng)?shù)據(jù)庫試運行在將部分?jǐn)?shù)據(jù)輸入數(shù)據(jù)庫后,就可以開始對數(shù)據(jù)庫系統(tǒng)進行聯(lián)合調(diào)試,這稱為數(shù)據(jù)庫試運行。這一階段要實際運行數(shù)據(jù)庫應(yīng)用程序,對數(shù)據(jù)庫執(zhí)行各種操作,測試應(yīng)用程序的功能是否滿足設(shè)計要求。如果不滿足,則要對應(yīng)用程序部分進行修改、調(diào)整,直到達到設(shè)計要求為止。在數(shù)據(jù)庫試運行時,還要測試系統(tǒng)的性能指標(biāo),分析其是否達到了設(shè)計目標(biāo)。在對數(shù)據(jù)庫進行物理設(shè)計時,已初步確定了系統(tǒng)的物理參數(shù)值,但在一般的情況下,設(shè)計時的考慮在許多方面只是近似的估計,和實際系統(tǒng)運行總有一定的差距,因此必須在試運行階段實際測量和評價系統(tǒng)性能指標(biāo)。事實上,有些參數(shù)的最佳值往往是經(jīng)過運行調(diào)試后找到的。如果測試的結(jié)果與設(shè)計的目標(biāo)不符,則要返回物理設(shè)計階段,重新調(diào)整物理結(jié)構(gòu),修改系統(tǒng)參數(shù),在某些情況下,甚至要返回邏輯設(shè)計階段,修改邏輯結(jié)構(gòu)。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理這里要特別強調(diào)兩點。第一,由于數(shù)據(jù)入庫的工作量實在太大,費時又費力,如果試運行后還要修改物理結(jié)構(gòu)甚至邏輯結(jié)構(gòu),就會導(dǎo)致數(shù)據(jù)重新入庫。因此應(yīng)分期分批地組織數(shù)據(jù)入庫,先輸入小批量數(shù)據(jù)供調(diào)試用,待試運行基本合格后,再大批量輸入數(shù)據(jù),逐步增加數(shù)據(jù)量,逐步完成運行評價。第二,在數(shù)據(jù)庫試運行階段,由于系統(tǒng)還不穩(wěn)定,軟硬件故障隨時都可能發(fā)生,并且系統(tǒng)的操作人員對新系統(tǒng)還不熟悉,誤操作也不可避免,因此必須首先調(diào)試運行DBMS的恢復(fù)功能,做好數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)工作。一旦故障發(fā)生,能使數(shù)據(jù)庫盡快恢復(fù),盡量減少對數(shù)據(jù)庫的破壞。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理(二)數(shù)據(jù)庫的運行與維護數(shù)據(jù)庫試運行合格后,數(shù)據(jù)庫開發(fā)工作基本完成,可正式投入運行了。但是,由于應(yīng)用環(huán)境在不斷變化,在數(shù)據(jù)庫運行過程中,物理存儲也會不斷變化,對數(shù)據(jù)庫設(shè)計進行評價、調(diào)整、修改等維護工作是一項長期的任務(wù),也是設(shè)計工作的繼續(xù)和提高。在數(shù)據(jù)庫運行階段,對數(shù)據(jù)庫經(jīng)常性的維護工作主要是由DBA完成的,它包括以下幾個方面。(1)數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)。數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)是系統(tǒng)正式運行后最重要的維護工作之一。DBA要針對不同的應(yīng)用要求制定不同的轉(zhuǎn)儲計劃,以保證一旦發(fā)生故障,能盡快將數(shù)據(jù)庫恢復(fù)到某種一致的狀態(tài),并盡可能減少對數(shù)據(jù)庫的破壞。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理(2)數(shù)據(jù)庫的安全性、完整性控制。在數(shù)據(jù)庫運行過程中,應(yīng)用環(huán)境的變化,對安全性的要求也會發(fā)生變化。比如有的數(shù)據(jù)原來是機密的,現(xiàn)在可以公開查詢了,而新加入的數(shù)據(jù)又可能是機密的。系統(tǒng)中用戶的級別也會改變。這些都需要DBA根據(jù)實際情況修改原有的安全性控制。同樣,數(shù)據(jù)庫的完整性約束條件也會變化,也需要DBA不斷修改,以滿足用戶的要求。(3)數(shù)據(jù)庫性能的監(jiān)督、分析和改進。在數(shù)據(jù)庫運行過程中,監(jiān)督系統(tǒng)運行、分析監(jiān)測數(shù)據(jù)、找出改進系統(tǒng)性能的方法是DBA的又一重要任務(wù)。DBA應(yīng)仔細分析這些數(shù)據(jù),判斷當(dāng)前系統(tǒng)運行狀況是否最佳,應(yīng)當(dāng)做哪些改進,如調(diào)整系統(tǒng)物理參數(shù),或?qū)?shù)據(jù)庫的運行狀況進行重組織或重構(gòu)造等。數(shù)據(jù)庫的實施、運行和維護任務(wù)2-6任務(wù)1-1數(shù)據(jù)處理(4)數(shù)據(jù)庫的重組織與重構(gòu)造。數(shù)據(jù)庫運行一段時間后,記錄不斷增、刪、改,會使數(shù)據(jù)庫的物理存儲情況變壞,降低了數(shù)據(jù)的存取效率,數(shù)據(jù)庫性能下降,這時DBA就要對數(shù)據(jù)庫進行重組織或部分重組織(只對頻繁增、刪的表進行重組織)。DBMS一般都提供用于數(shù)據(jù)重組織的實用程序。在重組織的過程中,按原設(shè)計要求重新安排存儲位置、回收垃圾、減少指針鏈等,以提高系統(tǒng)的性能。數(shù)據(jù)庫的重組織并不修改原設(shè)計的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),而數(shù)據(jù)庫的重構(gòu)造則不同,它需要部分修改數(shù)據(jù)庫的模式和內(nèi)模式。PART7任務(wù)2-7案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫(一)收集數(shù)據(jù)(二)創(chuàng)建E-R模型任務(wù)assignments(三)設(shè)計關(guān)系模式(四)關(guān)系數(shù)據(jù)庫的規(guī)范化案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-7任務(wù)1-1數(shù)據(jù)處理(一)收集數(shù)據(jù)為了收集數(shù)據(jù)庫需要的信息,設(shè)計人員與學(xué)生管理人員和系統(tǒng)的操作者進行了交談,從最初的談?wù)撝校涗浟巳缦乱c。(1)數(shù)據(jù)庫要存儲每位學(xué)生的基本信息、各系部基本信息、各班級基本信息、教師基本信息、教師授課基本信息和學(xué)生宿舍基本信息。(2)管理人員可以通過數(shù)據(jù)庫管理各系部、各班、各教師、全院學(xué)生的基本信息。(3)按工作的要求查詢數(shù)據(jù),如瀏覽某系部、某班級、某年級、某專業(yè)等學(xué)生基本信息。案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-7任務(wù)1-1數(shù)據(jù)處理(4)根據(jù)要求實現(xiàn)對各種數(shù)據(jù)的統(tǒng)計。如學(xué)生人數(shù),應(yīng)屆畢業(yè)生人數(shù),某系、某專業(yè)、某班級男女生人數(shù),各系部教師人數(shù),退、休學(xué)人數(shù)等。(5)能實現(xiàn)對學(xué)生學(xué)習(xí)成績的管理(錄入、修改、查詢、統(tǒng)計、打?。?。(6)能實現(xiàn)對學(xué)生住宿信息的管理,如查詢某學(xué)生的宿舍樓號、房間號及床位號等。(7)能實現(xiàn)歷屆畢業(yè)生的信息管理,如查詢某畢業(yè)生的詳細信息。(8)數(shù)據(jù)庫系統(tǒng)的操作人員可以查詢數(shù)據(jù),管理人員可以修改數(shù)據(jù)。(9)使用關(guān)系數(shù)據(jù)庫模型。案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-7任務(wù)1-1數(shù)據(jù)處理上述信息沒有固定的順序,并且有些信息可能有重復(fù),或者遺漏了某些重要的信息,這里收集到的信息要在后面的設(shè)計工作中與用戶反復(fù)查對,以確保收集到了關(guān)于數(shù)據(jù)庫的完整和準(zhǔn)確的信息。對于比較大的系統(tǒng),可能需要數(shù)次會議,每一次會議會針對系統(tǒng)的一部分進行討論和研究,即便如此,對于每一部分,可能還要經(jīng)過數(shù)次會議反復(fù)討論。此外,還可以通過分發(fā)調(diào)查表、安排相關(guān)人員面談、親臨現(xiàn)場觀察業(yè)務(wù)活動的實際進行過程等方式收集數(shù)據(jù)。所有這一切,都是為了盡可能多地收集關(guān)于數(shù)據(jù)庫以及如何使用數(shù)據(jù)庫的信息。完成了收集數(shù)據(jù)任務(wù),設(shè)計人員就可以進入數(shù)據(jù)庫設(shè)計的下一步:概念設(shè)計,即創(chuàng)建E-R模型。案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-7任務(wù)1-1數(shù)據(jù)處理(二)創(chuàng)建E-R模型1.進行數(shù)據(jù)抽象,設(shè)計局部E-R模型設(shè)計人員對收集到的大量信息進行分析、整理后,確定了數(shù)據(jù)庫系統(tǒng)中應(yīng)該存儲如下信息:學(xué)生基本信息、系部基本信息、班級基本信息、教師基本信息、課程基本信息、學(xué)生學(xué)習(xí)成績信息、學(xué)生綜合素質(zhì)成績信息、畢業(yè)生基本信息、宿舍基本信息、系統(tǒng)用戶信息。設(shè)計人員根據(jù)這些信息抽象出系統(tǒng)將要使用的實體:學(xué)生、系部、班級、課程、教師、宿舍。定義實體之間的聯(lián)系以及描述這些實體的屬性,最后用E-R圖表示這些實體和實體之間的聯(lián)系。案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-7任務(wù)1-1數(shù)據(jù)處理學(xué)生實體的屬性:學(xué)號、姓名、性別、出生日期、身份證號、家庭住址、聯(lián)系電話、郵政編碼、政治面貌、簡歷、是否退學(xué)、是否休學(xué)。碼是學(xué)號。系部實體的屬性:系號、系名、系主任、辦公室、電話。碼是系號。班級實體的屬性:班級號、班級名稱、專業(yè)、班級人數(shù)、入學(xué)年份、教室、班主任、班長。碼是班級號。。案例:設(shè)計學(xué)生信息管理數(shù)據(jù)庫任務(wù)2-7任務(wù)1-1數(shù)據(jù)處理課程實體的屬性:課程號、課程名、學(xué)期。碼是課程號+學(xué)期。教師實體的屬性:教師號、姓名、性別、出生日期
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年郵政服務(wù)合作協(xié)議書
- 教研活動總結(jié)范文
- DB31∕T 680.6-2019 城市公共用水定額及其計算方法 第6部分:娛樂業(yè)(高爾夫)
- 2025年家庭教育心理學(xué)課件與心理健康促進
- 2025年紫外輻照計項目發(fā)展計劃
- 2025年幼兒園食品安全課件的互動設(shè)計
- 推銷拒絕處理促與成
- 2023年高考真題天津卷生物試卷
- 《元素周期表的結(jié)構(gòu)與功能:高中化學(xué)基礎(chǔ)教案》
- 2024年青海省中考初中學(xué)業(yè)水平考試一模生物試題(解析版)
- 設(shè)立弱電工程公司組建方案
- 織布工廠管理制度
- 引領(lǐng)學(xué)生了解物理科學(xué)的前沿與進展
- 初中八年級下學(xué)期班主任工作計劃樣文
- 智慧物流方案設(shè)計與實施賽題答案
- 雙重血漿置換
- 全面深化改革體會研討發(fā)言
- 產(chǎn)品質(zhì)量檢驗確認單
- 數(shù)控機床故障診斷與維護實驗指導(dǎo)書-實驗報告
- T-CHAS 20-2-11-2022 醫(yī)療機構(gòu)藥事管理與藥學(xué)服務(wù) 第2-11部分:臨床藥學(xué)服務(wù) 治療藥物監(jiān)測
- 廣州退休申請表范本
評論
0/150
提交評論