版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、WORD格式數(shù)據(jù)庫設(shè)計(jì)標(biāo)準(zhǔn)化的五個(gè)要求通常情況下,可以從兩個(gè)方面來判斷數(shù)據(jù)庫是否設(shè)計(jì)的比擬標(biāo)準(zhǔn)。一是看看是否擁有大量的窄表,二是寬表的數(shù)量是否足夠的少。假設(shè)符合這兩個(gè)條件,那么可以說明這個(gè)數(shù)據(jù)庫的規(guī)X化水平還是比擬高的。當(dāng)然這是兩個(gè)泛泛而談的指標(biāo)。為了到達(dá)數(shù)據(jù)庫設(shè)計(jì)標(biāo)準(zhǔn)化的要求,一般來說,需要符合以下五個(gè)要求。要求一:表中應(yīng)該防止可為空的列。雖然表中允許空列,但是,空字段是一種比擬特殊的數(shù)據(jù)類型。數(shù)據(jù)庫在處理的時(shí)候,需要進(jìn)展特殊的處理。如此的話,就會(huì)增加數(shù)據(jù)庫處理記錄的復(fù)雜性。當(dāng)表中有比擬多的空字段時(shí),在同等條件下,數(shù)據(jù)庫處理的性能會(huì)降低許多。所以,雖然在數(shù)據(jù)庫表設(shè)計(jì)的時(shí)候,允許表中具有空字段
2、,但是,我們應(yīng)該盡量防止。假設(shè)確實(shí)需要的話,我們可以通過一些折中的方式,來處理這些空字段,讓其對(duì)數(shù)據(jù)庫性能的影響降低到最少。一是通過設(shè)置默認(rèn)值的形式,來防止空字段的產(chǎn)生。如在一個(gè)人事管理系統(tǒng)中,有時(shí)候XX字段可能允許為空。因?yàn)椴皇敲總€(gè)人都可以記住自己的XX。而在員工報(bào)到的時(shí)候,可能XX沒有帶在身邊。所以,XX字段往往不能及時(shí)提供。為此,身份證字段可以允許為空,以滿足這些特殊情況的需要。但是,在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,那么可以做一些處理。如當(dāng)用戶沒有輸入內(nèi)容的時(shí)候,那么把這個(gè)字段的默認(rèn)值設(shè)置為0 或者為N/A。以防止空字段的產(chǎn)生。二是假設(shè)一X表中,允許為空的列比擬多,接近表全部列數(shù)的三分之一。而且,這
3、些列在大局部情況下,都是可有可無的。假設(shè)數(shù)據(jù)庫管理員遇到這種情況,筆者建議另外建立一X副表,以保存這些列。然后通過關(guān)鍵字把主表跟這X副表關(guān)聯(lián)起來。將數(shù)據(jù)存儲(chǔ)在兩個(gè)獨(dú)立的表中使得主表的設(shè)計(jì)更為簡單,同時(shí)也能夠滿足存儲(chǔ)空值信息的需要。要求二:表不應(yīng)該有重復(fù)的值或者列。如現(xiàn)在有一個(gè)進(jìn)銷存管理系統(tǒng),這個(gè)系統(tǒng)中有一X產(chǎn)品根本信息表中。這個(gè)產(chǎn)品開發(fā)有時(shí)候可以是一個(gè)人完成,而有時(shí)候又需要多個(gè)人合作才能夠完成。所以,在產(chǎn)品根本信息表產(chǎn)品開發(fā)者這個(gè)字段中,有時(shí)候可能需要填入多個(gè)開發(fā)者的名字。如進(jìn)銷存管理中,還需要對(duì)客戶的聯(lián)系人進(jìn)展管理。有時(shí)候,企業(yè)可能只知道客戶一個(gè)采購員的XX。但是在必要的情況下,企業(yè)需要對(duì)客
4、戶的采購代表、倉庫人員、財(cái)務(wù)人員共同進(jìn)展管理。因?yàn)樵谟唵紊?,可能需要填入采購代表的名? 可是在出貨單上,那么需要填入倉庫管理人員的名字等等。為了解決這個(gè)問題,有多種實(shí)現(xiàn)方式。但是,假設(shè)設(shè)計(jì)不合理的話在,那么會(huì)導(dǎo)致重復(fù)的值或者列。如我們也可以這么設(shè)計(jì),把客戶信息、聯(lián)系人都放入同一X表中。為了解決多個(gè)聯(lián)系人的問題,可以設(shè)置第一聯(lián)系人、第一聯(lián)系人、第二聯(lián)系人、第二聯(lián)系人等等。假設(shè)還有第三聯(lián)系人、第四聯(lián)系人等等,那么往往還需要參加更多的字段??墒沁@么設(shè)計(jì)的話,會(huì)產(chǎn)生一系列的問題。如客戶的采購員流動(dòng)性比擬大,在一年內(nèi)換了六個(gè)采購員。此時(shí),在系統(tǒng)中該如何管理呢?難道就建立六個(gè)聯(lián)系人字段?這不但會(huì)導(dǎo)致空字
5、段的增加,還需要頻繁的更改數(shù)據(jù)庫表構(gòu)造。明顯,這么做是不合理的。也有人說,可以專業(yè)資料整理WORD格式直接修改采購員的名字呀??墒沁@么處理的話,會(huì)把原先采購訂單上采購員的名字也改變了。因?yàn)椴少弳紊峡蛻舨少弳T信息在數(shù)據(jù)庫中存儲(chǔ)的不是采購員的名字,而只是采購員對(duì)應(yīng)的一個(gè)編號(hào)。在編號(hào)不改而名字改變了的情況下,采購訂單上顯示的就是更改后的名字。這不利于時(shí)候的追蹤。所以,在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候要盡量防止這種重復(fù)的值或者列的產(chǎn)生。筆者建議,假設(shè)數(shù)據(jù)庫管理員遇到這種情況,可以改變一下策略。如把客戶聯(lián)系人另外設(shè)置一X表。然后通過客戶 ID 把供給商信息表跟客戶聯(lián)系人信息表連接起來。也就是說,盡量將重復(fù)的值放置到一
6、X獨(dú)立的表中進(jìn)展管理。然后通過視圖或者其他手段把這些獨(dú)立的表聯(lián)系起來。要求三:表中記錄應(yīng)該有一個(gè)唯一的標(biāo)識(shí)符。在數(shù)據(jù)庫表設(shè)計(jì)的時(shí)候,數(shù)據(jù)庫管理員應(yīng)該養(yǎng)成一個(gè)好習(xí)慣,用一個(gè)ID 號(hào)來唯一的標(biāo)識(shí)行記錄,而不要通過名字、編號(hào)等字段來對(duì)紀(jì)錄進(jìn)展區(qū)分。每個(gè)表都應(yīng)該有一個(gè)ID 列,任何兩個(gè)記錄都不可以共享同一個(gè)ID 值。另外,這個(gè)ID 值最好有數(shù)據(jù)庫來進(jìn)展自動(dòng)管理,而不要把這個(gè)任務(wù)給前臺(tái)應(yīng)用程序。否那么的話,很容易產(chǎn)生ID 值不統(tǒng)一的情況。另外,在數(shù)據(jù)庫設(shè)計(jì)的時(shí)候,最好還能夠參加行號(hào)。如在銷售訂單管理中,ID 號(hào)是用戶不能夠維護(hù)的。但是,行號(hào)用戶就可以維護(hù)。如在銷售訂單的行中,用戶可以通過調(diào)整行號(hào)的大小來
7、對(duì)訂單行進(jìn)展排序。通常情況下,ID 列是以1 為單位遞進(jìn)的。但是,行號(hào)就要以 10 為單位累進(jìn)。如此,正常情況下,行號(hào)就以10、 20、 30 依次擴(kuò)展下去。假設(shè)此時(shí)用戶需要把行號(hào)為30 的紀(jì)錄調(diào)到第一行顯示。此時(shí),用戶在不能夠更改ID 列的情況下,可以更改行號(hào)來實(shí)現(xiàn)。如可以把行號(hào)改為1,在排序時(shí)就可以按行號(hào)來進(jìn)展排序。如此的話,原來行號(hào)為 30 的紀(jì)錄現(xiàn)在行號(hào)變?yōu)榱?,就可以在第一行中顯示。這是在實(shí)際應(yīng)用程序設(shè)計(jì)中對(duì) ID 列的一個(gè)有效補(bǔ)充。這個(gè)內(nèi)容在教科書上是沒有的。需要在實(shí)際應(yīng)用程序設(shè)計(jì)中,才會(huì)掌握到這個(gè)技巧。要求四:數(shù)據(jù)庫對(duì)象要有統(tǒng)一的前綴名。一個(gè)比擬復(fù)雜的應(yīng)用系統(tǒng),其對(duì)應(yīng)的數(shù)據(jù)庫表往
8、往以千計(jì)。假設(shè)讓數(shù)據(jù)庫管理員看到對(duì)象名就了解這個(gè)數(shù)據(jù)庫對(duì)象所起的作用,恐怕會(huì)比擬困難。而且在數(shù)據(jù)庫對(duì)象引用的時(shí)候,數(shù)據(jù)庫管理員也會(huì)為不能迅速找到所需要的數(shù)據(jù)庫對(duì)象而頭疼。為此,筆者建立,在開發(fā)數(shù)據(jù)庫之前,最好能夠花一定的時(shí)間,去制定一個(gè)數(shù)據(jù)庫對(duì)象的前綴命名標(biāo)準(zhǔn)。如筆者在數(shù)據(jù)庫設(shè)計(jì)時(shí),喜歡跟前臺(tái)應(yīng)用程序協(xié)商,確定合理的命名標(biāo)準(zhǔn)。筆者最常用的是根據(jù)前臺(tái)應(yīng)用程序的模塊來定義后臺(tái)數(shù)據(jù)庫對(duì)象前綴名。如跟物料管理模塊相關(guān)的表可以用M 為前綴 ; 而以訂單管理相關(guān)的,那么可以利用C 作為前綴。具體采用什么前綴可以以用戶的愛好而定義。但是,需要注意的是,這個(gè)命名標(biāo)準(zhǔn)應(yīng)該在數(shù)據(jù)庫管理員與前臺(tái)應(yīng)用程序開發(fā)者之間達(dá)
9、成共識(shí),并且嚴(yán)格按照這個(gè)命名標(biāo)準(zhǔn)來定義對(duì)象名。其次,表、視圖、函數(shù)等最好也有統(tǒng)一的前綴。如視圖可以用V 為前綴,而函數(shù)那么可以利用 F 為前綴。如此數(shù)據(jù)庫管理員無論是在日常管理還是對(duì)象引用的時(shí)候,都能夠在最短的時(shí)間內(nèi)找到自己所需要的對(duì)象。專業(yè)資料整理WORD格式要求五:盡量只存儲(chǔ)單一實(shí)體類型的數(shù)據(jù)。這里將的實(shí)體類型跟數(shù)據(jù)類型不是一回事,要注意區(qū)分。這里講的實(shí)體類型是指所需要描述對(duì)象的本身。筆者舉一個(gè)例子,估計(jì)大家就可以明白其中的內(nèi)容了。如現(xiàn)在有一個(gè)圖書館里系統(tǒng),有圖書根本信息、作者信息兩個(gè)實(shí)體對(duì)象。假設(shè)用戶要把這兩個(gè)實(shí)體對(duì)象信息放在同一X表中也是可以的。如可以把表設(shè)計(jì)成圖書名字、圖書作者等等。
10、可是如此設(shè)計(jì)的話,會(huì)給后續(xù)的維護(hù)帶來不少的麻煩。如當(dāng)后續(xù)有圖書出版時(shí),那么需要為每次出版的圖書增加作者信息,這無疑會(huì)增加額外的存儲(chǔ)空間,也會(huì)增加記錄的長度。而且假設(shè)作者的情況有所改變,如住址改變了以后,那么還需要去更改每本書的記錄。同時(shí),假設(shè)這個(gè)作者的圖書從數(shù)據(jù)庫中全部刪除之后,這個(gè)作者的信息也就蕩然無存了。很明顯,這不符合數(shù)據(jù)庫設(shè)計(jì)標(biāo)準(zhǔn)化的需求。遇到這種情況時(shí),筆者建議可以把上面這X表分解成三種獨(dú)立的表,分別為圖書根本信息表、作者根本信息表、圖書與作者對(duì)應(yīng)表等等。如此設(shè)計(jì)以后,以上遇到的所有問題就都引刃而解了。以上五條是在數(shù)據(jù)庫設(shè)計(jì)時(shí)到達(dá)標(biāo)準(zhǔn)化水平的根本要求。除了這些另外還有很多細(xì)節(jié)方面的要
11、求,如數(shù)據(jù)類型、存儲(chǔ)過程等等。而且,數(shù)據(jù)庫標(biāo)準(zhǔn)往往沒有技術(shù)方面的嚴(yán)格限制,主要依靠數(shù)據(jù)庫管理員日常工作經(jīng)歷的累積。數(shù)據(jù)庫設(shè)計(jì)中的反標(biāo)準(zhǔn)技術(shù)探討1.數(shù)據(jù)庫設(shè)計(jì)簡述數(shù)據(jù)庫設(shè)計(jì)是把現(xiàn)實(shí)世界的商業(yè)模型與需求轉(zhuǎn)換成數(shù)據(jù)庫的模型的過程,它是建立數(shù)據(jù)庫應(yīng)用系統(tǒng)的核心問題。設(shè)計(jì)的關(guān)鍵是如何使設(shè)計(jì)的數(shù)據(jù)庫能合理地存儲(chǔ)用戶的數(shù)據(jù),方便用戶進(jìn)展數(shù)據(jù)處理。數(shù)據(jù)庫設(shè)計(jì)完全是人的問題,而不是數(shù)據(jù)庫管理系統(tǒng)的問題。系統(tǒng)不管設(shè)計(jì)是好是壞,照樣運(yùn)行。數(shù)據(jù)庫設(shè)計(jì)應(yīng)當(dāng)由數(shù)據(jù)庫管理員和系統(tǒng)分析員一起和用戶一道工作,了解各個(gè)用戶的要求,共同為整個(gè)數(shù)據(jù)庫做出恰當(dāng)?shù)摹⑼暾脑O(shè)計(jì)。數(shù)據(jù)庫及其應(yīng)用的性能和調(diào)優(yōu)都是建立在良好的數(shù)據(jù)庫設(shè)計(jì)的根底上
12、,數(shù)據(jù)庫的數(shù)據(jù)是一切操作的根底,如果數(shù)據(jù)庫設(shè)計(jì)不好,那么其它一切調(diào)優(yōu)方法提高數(shù)據(jù)庫性能的效果都是有限的。數(shù)據(jù)的標(biāo)準(zhǔn)化1.1.X式概述標(biāo)準(zhǔn)化理論是研究如何將一個(gè)不好的關(guān)系模式轉(zhuǎn)化為好的關(guān)系模式的理論,標(biāo)準(zhǔn)化理論是圍繞X式而建立的。標(biāo)準(zhǔn)化理論認(rèn)為,一個(gè)關(guān)系數(shù)據(jù)庫中所有的關(guān)系,都應(yīng)滿足一定的規(guī)X(約束條件 )。標(biāo)準(zhǔn)化理論把關(guān)系應(yīng)滿足的標(biāo)準(zhǔn)要求分為幾級(jí),滿足最低要求的一級(jí)叫做第一X式 (1NF),在第一X式的根底上提出了第二X式(2NF),在第二X式的根底上又提出了第專業(yè)資料整理WORD格式三X式 (3NF),以后又提出了BCNF X式, 4NF, 5NF。X式的等級(jí)越高,應(yīng)滿足的約束集條件也越嚴(yán)格。
13、標(biāo)準(zhǔn)的每一級(jí)別都依賴于它的前一級(jí)別,例如假設(shè)一個(gè)關(guān)系模式滿足 2NF,那么一定滿足 1NF。下面我們只介紹 1NF, 2NF,3NF X式。1.2.1NF1NF 是關(guān)系模型的最低要求,它的規(guī)那么是:每一列必須是原子的,不能分成多個(gè)子列。每一行和列的位置只能有一個(gè)值。不能具有多值列。例:如果要求一個(gè)學(xué)生一行,一個(gè)學(xué)生可選多門課,那么下面的“學(xué)生表就不滿足1NF: student(s no,s name,classno)其中: s no 為學(xué)號(hào), s name 為學(xué)生XX, class no 為課程號(hào)。因?yàn)橐粋€(gè)學(xué)生可選多門課,所以列 classno 有多個(gè)值,所以空不符合 1NF。標(biāo)準(zhǔn)化就是把它分
14、成如下兩個(gè)表:“學(xué)生表和“選課表,那么這兩個(gè)表就都滿足1NF 了。student(s no,s name)stu class(s no,class no)1.3.2NF對(duì)于滿足2NF 的表,除滿足1NF 外,非主碼的列必須依賴于所有的主碼,而不是組合主碼的一局部。如果滿足1NF 的表的主碼只有一列,那么它自動(dòng)滿足2NF。例:下面的“選課表,不符合2NF。stu class(s no,class no,classname)其中: class name 為課程名稱。因?yàn)樵~表的主碼是:(s no,class no),非主碼列class name 依賴于組合主碼的一局部classno,所以它不符合2N
15、F。對(duì)該表標(biāo)準(zhǔn)化也是把它分解成兩個(gè)表:“選課表和“課程表,那么它們就都滿足2NF 了。stu class(s no,class no)專業(yè)資料整理WORD格式class(class no,class name)專業(yè)資料整理WORD格式1.4.3NF3NF 的規(guī)那么是除滿足2NF 外,任一非主碼列不能依賴于其它非主碼列。例:下面的“課程表,不符合3NF。class(class no,class name,teacher no,teacher name)其中: teacher no 為任課教師號(hào), teacher name 為任課教師XX。因?yàn)榉侵鞔a列teacher name 依賴于另一非主碼列t
16、eacher no,所以它不符合3NF。其解決方法也是把它分解成兩個(gè)表:“課程表和“教師表,那么它們就都滿足3NF 了。class(class no,class name,teacher no)teacher(teacher no,teacher name)1.5.小結(jié)當(dāng)一個(gè)表是標(biāo)準(zhǔn)的,那么其非主碼列依賴于主碼列。從關(guān)系模型的角度來看,表滿足3NF 最符合標(biāo)準(zhǔn),這樣的設(shè)計(jì)容易維護(hù)。一個(gè)完全標(biāo)準(zhǔn)化的設(shè)計(jì)并不總能生成最優(yōu)的性能,因此通常是先按照 3NF 設(shè)計(jì),如果有性能問題,再通過反標(biāo)準(zhǔn)來解決。數(shù)據(jù)庫中的數(shù)據(jù)標(biāo)準(zhǔn)化的優(yōu)點(diǎn)是減少了數(shù)據(jù)冗余,節(jié)約了存儲(chǔ)空間,相應(yīng)邏輯和物理的 I/O 次數(shù)減少,同時(shí)加快
17、了增、刪、改的速度,但是對(duì)完全標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢,通常需要更多的連接操作,從而影響查詢的速度。因此,有時(shí)為了提高某些查詢或應(yīng)用的性能而破壞標(biāo)準(zhǔn)規(guī)那么,即反標(biāo)準(zhǔn)。2. 數(shù)據(jù)的反標(biāo)準(zhǔn)2.1.反標(biāo)準(zhǔn)的好處是否標(biāo)準(zhǔn)化的程度越高越好?這要根據(jù)需要來決定,因?yàn)椤皠e離越深,產(chǎn)生的關(guān)系越多,關(guān)系過多,連接操作越頻繁,而連接操作是最費(fèi)時(shí)間的,特別對(duì)以查詢?yōu)橹鞯臄?shù)據(jù)庫應(yīng)用來說,頻繁的連接會(huì)影響查詢速度。所以,關(guān)系有時(shí)成心保存成非標(biāo)準(zhǔn)化的,或者規(guī)X化以后又反標(biāo)準(zhǔn)了,這樣做通常是為了改良性能。例如XX系統(tǒng)中的“XX表 B TB01,它的列 busi balance(企業(yè)XX的總余額 )就違反標(biāo)準(zhǔn),其中的值可以通過下面的
18、查詢獲得:select busi code,sum(acc balance)fromB TB06group by busi code專業(yè)資料整理WORD格式如果 BTB01 中沒有該列,假設(shè)想獲得busi name(企業(yè)名稱 )和企業(yè)XX的總余額,專業(yè)資料整理WORD格式那么需要做連接操作:select busi name,sum(acc balance)from B TB01,B TB06where B TB01.busi code=BTB06.busi codegroup by busi code如果經(jīng)常做這種查詢,那么就有必要在B TB01 中參加列busibalance,相應(yīng)的代價(jià)那么
19、是必須在表 B TB06 上創(chuàng)立增、刪、改的觸發(fā)器來維護(hù) BTB01 表上 busi balance 列的值。類似的情況在決策支持系統(tǒng)中經(jīng)常發(fā)生。反標(biāo)準(zhǔn)的好處是降低連接操作的需求、降低外碼和索引的數(shù)目,還可能減少表的數(shù)目,相應(yīng)帶來的問題是可能出現(xiàn)數(shù)據(jù)的完整性問題。加快查詢速度,但會(huì)降低修改速度。因此決定做反標(biāo)準(zhǔn)時(shí),一定要權(quán)衡利弊,仔細(xì)分析應(yīng)用的數(shù)據(jù)存取需求和實(shí)際的性能特點(diǎn),好的索引和其它方法經(jīng)常能夠解決性能問題,而不必采用反標(biāo)準(zhǔn)這種方法。2.2.常用的反標(biāo)準(zhǔn)技術(shù)在進(jìn)展反標(biāo)準(zhǔn)操作之前,要充分考慮數(shù)據(jù)的存取需求、常用表的大小、一些特殊的計(jì)算 (例如合計(jì) )、數(shù)據(jù)的物理存儲(chǔ)位置等。常用的反標(biāo)準(zhǔn)技術(shù)有
20、增加冗余列、增加派生列、重新組表和分割表。2.2.1.增加冗余列增加冗余列是指在多個(gè)表中具有一樣的列,它常用來在查詢時(shí)防止連接操作。例如前面例子中,如果經(jīng)常檢索一門課的任課教師XX,那么需要做class和teacher表的連接查詢:select class name,teacher namefromclass,teacherwhereclass.teacher no=teacher.teacher no這樣的話就可以在class 表中增加一列teacher name 就不需要連接操作了。增加冗余列可以在查詢時(shí)防止連接操作,但它需要更多的磁盤空間,同時(shí)增加表維護(hù)的工作量。2.2.2.增加派生列專
21、業(yè)資料整理WORD格式增加派生列指增加的列來自其它表中的數(shù)據(jù),由它們計(jì)算生成。它的作用是在查詢專業(yè)資料整理WORD格式時(shí)減少連接操作,防止使用集函數(shù)。例如前面所講的賬戶系統(tǒng)中的表B TB01 的列busibalance 就是派生列。派生列也具有與冗余列同樣的缺點(diǎn)。2.2.3.重新組表專業(yè)資料整理WORD格式重新組表指如果許多用戶需要查看兩個(gè)表連接出來的結(jié)果數(shù)據(jù),組成一個(gè)表來減少連接而提高性能。例如,用戶經(jīng)常需要同時(shí)查看課程號(hào),那么把這兩個(gè)表重新課程名稱,任課專業(yè)資料整理WORD格式教師號(hào),任課教師XX,那么可把表class(class no,class name,teacher no) 和表t
22、eacher(teacher no,teacher name) 合并成一個(gè)表 class(class no,class name,teacher no,teacher name)。這樣可提高性能,但需要更多的磁盤空間,同時(shí)也損失了數(shù)據(jù)在概念上的獨(dú)立性。2.2.4.分割表有時(shí)對(duì)表做分割可以提高性能。表分割有兩種方式:1 水平分割:根據(jù)一列或多列數(shù)據(jù)的值把數(shù)據(jù)行放到兩個(gè)獨(dú)立的表中。水平分割通常在下面的情況下使用:A 表很大,分割后可以降低在查詢時(shí)需要讀的數(shù)據(jù)和索引的頁數(shù),同時(shí)也降低了索引的層數(shù),提高查詢速度。B 表中的數(shù)據(jù)本來就有獨(dú)立性,例如表中分別記錄各個(gè)地區(qū)的數(shù)據(jù)或不同時(shí)期的數(shù)據(jù),特別是有些數(shù)
23、據(jù)常用,而另外一些數(shù)據(jù)不常用。C 需要把數(shù)據(jù)存放到多個(gè)介質(zhì)上。例如法規(guī)表law 就可以分成兩個(gè)表active law 和inactive law 。activea authors 表中的內(nèi)容是正生效的法規(guī),是經(jīng)常使用的,而inactivelaw表那么使已經(jīng)作廢的法規(guī),不常被查詢。水平分割會(huì)給應(yīng)用增加復(fù)雜度,它通常在查詢時(shí)需要多個(gè)表名,查詢所有數(shù)據(jù)需要union 操作。在許多數(shù)據(jù)庫應(yīng)用中,這種復(fù)雜性會(huì)超過它帶來的優(yōu)點(diǎn),因?yàn)橹灰饕P(guān)鍵字不大,那么在索引用于查詢時(shí),表中增加兩到三倍數(shù)據(jù)量,查詢時(shí)也就增加讀一個(gè)索引層的磁盤次數(shù)。2 垂直分割:把主碼和一些列放到一個(gè)表,然后把主碼和另外的列放到另一個(gè)表
24、中。如果一個(gè)表中某些列常用,而另外一些列不常用,那么可以采用垂直分割,另外垂直分割可以使得數(shù)據(jù)行變小,一個(gè)數(shù)據(jù)頁就能存放更多的數(shù)據(jù),在查詢時(shí)就會(huì)減少I/O 次數(shù)。其缺點(diǎn)是需要管理冗余列,查詢所有數(shù)據(jù)需要join 操作。3. 反標(biāo)準(zhǔn)技術(shù)需要維護(hù)數(shù)據(jù)的完整性無論使用何種反標(biāo)準(zhǔn)技術(shù),都需要一定的管理來維護(hù)數(shù)據(jù)的完整性,常用的方法是批處理維護(hù)、應(yīng)用邏輯和觸發(fā)器。批處理維護(hù)是指對(duì)復(fù)制列或派生列的修改積累一定的時(shí)間后,運(yùn)行一批處理作業(yè)或存儲(chǔ)過程對(duì)復(fù)制或派生列進(jìn)展修改,這只能在對(duì)實(shí)時(shí)性要求不高的情況下使用。數(shù)據(jù)的完整性也可由應(yīng)用邏輯來實(shí)現(xiàn),這就要求必須在同一事務(wù)中對(duì)所有涉及的表進(jìn)展增、刪、改操作。用應(yīng)用邏輯
25、來實(shí)現(xiàn)數(shù)據(jù)的完整性風(fēng)險(xiǎn)較大,因?yàn)橥贿壿嫳仨氃谒械膽?yīng)用中使用和維護(hù),容易遺漏,特別是在需求變化時(shí),不易于維護(hù)。另一種方式就是使用觸發(fā)器,對(duì)數(shù)據(jù)的任何修改立即觸發(fā)對(duì)復(fù)制列或派生列的相應(yīng)修改。觸發(fā)器是實(shí)時(shí)的,而且相應(yīng)的處理邏輯只在一個(gè)地方出現(xiàn),易于維護(hù)。一般來說,是解決這類問題的最好的辦法。專業(yè)資料整理WORD格式4. 完畢語數(shù)據(jù)庫的反標(biāo)準(zhǔn)設(shè)計(jì)可以提高查詢性能。常用的反標(biāo)準(zhǔn)技術(shù)有增加冗余列、增加派生列、重新組表和分割表。但反標(biāo)準(zhǔn)技術(shù)需要維護(hù)數(shù)據(jù)的完整性。因此在做反標(biāo)準(zhǔn)時(shí),一定要權(quán)衡利弊,仔細(xì)分析應(yīng)用的數(shù)據(jù)存取需求和實(shí)際的性能特點(diǎn)。Oracle數(shù)據(jù)庫設(shè)計(jì)階段性能優(yōu)化策略專業(yè)資料整理WORD格式通過
26、對(duì) Oracle 數(shù)據(jù)庫系統(tǒng)物理構(gòu)造和邏輯構(gòu)造的分析,闡述了在發(fā)階段性能優(yōu)化的一些策略和方法。Oralce 數(shù)據(jù)庫設(shè)計(jì)開專業(yè)資料整理WORD格式Oracle是目前使用最為廣泛的大型數(shù)據(jù)庫管理系統(tǒng),提高Oracle數(shù)據(jù)庫系統(tǒng)的運(yùn)行效專業(yè)資料整理WORD格式率,是整個(gè)計(jì)算機(jī)信息系統(tǒng)高效運(yùn)轉(zhuǎn)的前提和保證。影響 Oracle 數(shù)據(jù)庫應(yīng)用系統(tǒng)性能的因素很多,既有軟件方面的因素,也包括數(shù)據(jù)運(yùn)行的硬件環(huán)境、網(wǎng)絡(luò)環(huán)境、數(shù)據(jù)庫管理和維護(hù)方面的因素等。數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)開發(fā)階段是 Oracle 應(yīng)用優(yōu)化的最正確階段,也是主動(dòng)優(yōu)化階段,能到達(dá)以最小本錢獲得最大性能增益的目的。通過對(duì)其邏輯存儲(chǔ)構(gòu)造和物理存儲(chǔ)構(gòu)造設(shè)計(jì)進(jìn)展優(yōu)
27、化,使之在滿足需求條件下,時(shí)空開銷性能最正確,可以解決數(shù)據(jù)庫系統(tǒng)運(yùn)行過程中專業(yè)資料整理WORD格式性能的漸進(jìn)性下降或性能突降等問題,以保證系統(tǒng)運(yùn)行的優(yōu)良性能。Oracle 數(shù)據(jù)庫的邏輯構(gòu)造和物理構(gòu)造Oracle 數(shù)據(jù)庫的邏輯構(gòu)造是由一些數(shù)據(jù)庫對(duì)象組成,如數(shù)據(jù)庫表空間、表、索引、段、視圖、存儲(chǔ)過程、觸發(fā)器等。數(shù)據(jù)庫的邏輯存儲(chǔ)構(gòu)造 (表空間等 )決定了數(shù)據(jù)庫的物理空間是如何被使用的,數(shù)據(jù)庫對(duì)象如表、索引等分布在各個(gè)表空間中。Oracle 數(shù)據(jù)庫的物理構(gòu)造從操作系統(tǒng)一級(jí)查看,是由一個(gè)個(gè)的文件組成,從物理上可劃分為:數(shù)據(jù)文件、日志文件、控制文件和參數(shù)文件。數(shù)據(jù)文件中存放了所有的數(shù)據(jù)信息 ; 日志文件存
28、放數(shù)據(jù)庫運(yùn)行期間產(chǎn)生的日志信息,它被重復(fù)覆蓋使用,假設(shè)不采用歸檔方式的話,已被覆蓋的日志信息將無法恢復(fù);控制文件記錄了整個(gè)數(shù)據(jù)庫的關(guān)鍵構(gòu)造信息,它假設(shè)被破壞,整個(gè)數(shù)據(jù)庫將無法工作和恢復(fù);參數(shù)文件中設(shè)置了很多 Oracle 數(shù)據(jù)庫的配置參數(shù),當(dāng)數(shù)據(jù)庫啟動(dòng)時(shí),會(huì)讀取這些信息。邏輯構(gòu)造的優(yōu)化邏輯構(gòu)造優(yōu)化用通俗的話來說就是通過增加、減少或調(diào)整邏輯構(gòu)造來提高應(yīng)用的效率,下面通過對(duì)根本表的設(shè)計(jì)及索引、聚簇的討論來分析ORACLE邏輯構(gòu)造的優(yōu)化。專業(yè)資料整理WORD格式1、根本表擴(kuò)展:專業(yè)資料整理WORD格式數(shù)據(jù)庫性能包括存儲(chǔ)空間需求量的大小和查詢響應(yīng)時(shí)間的長短兩個(gè)方面。為了優(yōu)化數(shù)據(jù)庫性能,需要對(duì)數(shù)據(jù)庫中的
29、表進(jìn)展標(biāo)準(zhǔn)化。一般來說,邏輯數(shù)據(jù)庫設(shè)計(jì)滿足第三X式的表結(jié)構(gòu)容易維護(hù)且根本滿足實(shí)際應(yīng)用的要求。所以,實(shí)際應(yīng)用中一般都按照第三X式的標(biāo)準(zhǔn)進(jìn)展標(biāo)準(zhǔn)化,從而保證了數(shù)據(jù)庫的一致性和完整性,設(shè)計(jì)人員往往會(huì)設(shè)計(jì)過多的表間關(guān)聯(lián),以盡可能地降低數(shù)據(jù)冗余。但在實(shí)際應(yīng)用中這種做法有時(shí)不利于系統(tǒng)運(yùn)行性能的優(yōu)化:如過程從專業(yè)資料整理WORD格式多表獲取數(shù)據(jù)時(shí)引發(fā)大量的連接操作,在需要局部數(shù)據(jù)時(shí)要掃描整個(gè)表等,這都消耗了磁盤的 I/O 和 CPU 時(shí)間。為解決這一問題,在設(shè)計(jì)表時(shí)應(yīng)同時(shí)考慮對(duì)某些表進(jìn)展反標(biāo)準(zhǔn)化,方法有以下幾種:一是分割表。分割表可分為水平分割表和垂直分割表兩種:水平分割是按照行將一個(gè)表分割為多個(gè)表,這可以
30、提高每個(gè)表的查詢速度,但查詢、更新時(shí)要選擇不同的表,統(tǒng)計(jì)時(shí)要匯總多個(gè)表,因此應(yīng)用程序會(huì)更復(fù)雜。垂直分割是對(duì)于一個(gè)列很多的表,假設(shè)某些列的訪問頻率遠(yuǎn)遠(yuǎn)高于其它列,就可以將主鍵和這些列作為一個(gè)表,將主鍵和其它列作為另外一個(gè)表。通過減少列的寬度,增加了每個(gè)數(shù)據(jù)頁的行數(shù),一次I/O 就可以掃描更多的行,從而提高了訪問每一個(gè)表的速度。但是由于造成了多表連接,所以應(yīng)該在同時(shí)查詢或更新不同分割表中的列的情況比擬少的情況下使用。二是保存冗余列。當(dāng)兩個(gè)或多個(gè)表在查詢中經(jīng)常需要連接時(shí),可以在其中一個(gè)表上增加假設(shè)干冗余的列,以防止表之間的連接過于頻繁,一般在冗余列的數(shù)據(jù)不經(jīng)常變動(dòng)的情況下使用。三是增加派生列。派生列
31、是由表中的其它多個(gè)列的計(jì)算所得,增加派生列可以減少統(tǒng)計(jì)運(yùn)算,在數(shù)據(jù)匯總時(shí)可以大大縮短運(yùn)算時(shí)間。因此,在數(shù)據(jù)庫的設(shè)計(jì)中,數(shù)據(jù)應(yīng)當(dāng)按兩種類別進(jìn)展組織:頻繁訪問的數(shù)據(jù)和頻繁修改的數(shù)據(jù)。對(duì)于頻繁訪問但是不頻繁修改的數(shù)據(jù),內(nèi)部設(shè)計(jì)應(yīng)當(dāng)物理不標(biāo)準(zhǔn)化。對(duì)于頻繁修改但并不頻繁訪問的數(shù)據(jù),內(nèi)部設(shè)計(jì)應(yīng)當(dāng)物理標(biāo)準(zhǔn)化。有時(shí)還需將標(biāo)準(zhǔn)化的表作為邏輯數(shù)據(jù)庫設(shè)計(jì)的根底,然后再根據(jù)整個(gè)應(yīng)用系統(tǒng)的需要,物理地非標(biāo)準(zhǔn)化數(shù)據(jù)。標(biāo)準(zhǔn)與反標(biāo)準(zhǔn)都是建立在實(shí)際的操作根底之上的約束,脫離了實(shí)際兩者都沒有意義。只有把兩者合理地結(jié)合在一起,才能相互補(bǔ)充,發(fā)揮各自的優(yōu)點(diǎn)。2、索引和聚簇:創(chuàng)立索引是提高檢索效率最有效的方法之一,索引把表中的邏輯值映
32、射到平安的RowID,能快速定位數(shù)據(jù)的物理地址,可以大大加快數(shù)據(jù)庫的查詢速度,一個(gè)建有合理索引的數(shù)據(jù)庫應(yīng)用系統(tǒng)可能比一個(gè)沒有建立索引的數(shù)據(jù)庫應(yīng)用系統(tǒng)效率高幾十倍,但并不是索引越多越好,在那些經(jīng)常需要修改的數(shù)據(jù)列上建立索引,將導(dǎo)致索引 B*樹的不斷重組,造成系統(tǒng)性能的下降和存儲(chǔ)空間的浪費(fèi)。對(duì)于一個(gè)大型表建立的索引,有時(shí)并不能改善數(shù)據(jù)查詢速度,反而會(huì)影響整個(gè)數(shù)據(jù)庫的性能。這主要是和 SGA的數(shù)據(jù)管理方式有關(guān), Oracle 在進(jìn)展數(shù)據(jù)塊高速緩存管理時(shí),索引數(shù)據(jù)比普通數(shù)據(jù)具有更高的駐留權(quán)限,在進(jìn)展空間競爭時(shí),專業(yè)資料整理WORD格式Oracle 會(huì)先移出普通數(shù)據(jù),對(duì)建有索引的大型表進(jìn)展數(shù)據(jù)查詢時(shí),索
33、引數(shù)據(jù)可能會(huì)用完所有專業(yè)資料整理WORD格式的數(shù)據(jù)塊緩存空間, Oracle 不得不頻繁地進(jìn)展磁盤讀寫來獲取數(shù)據(jù),所以,在對(duì)一個(gè)大型表進(jìn)展分區(qū)之后,可以根據(jù)相應(yīng)的分區(qū)建立分區(qū)索引。Oracle 提供了另一種方法來提高查詢速度,就是聚簇 (Cluster)。所謂聚簇,簡單地說就是把幾個(gè)表放在一起,按一定公共屬性混合存放。聚簇根據(jù)共同碼值將多個(gè)表的數(shù)據(jù)存儲(chǔ)在同一個(gè) Oracle 塊中,這時(shí)檢索一組 Oracle 塊就同時(shí)得到兩個(gè)表的數(shù)據(jù),這樣就可以減少需要存儲(chǔ)的 Oracle 塊,從而提高應(yīng)用程序的性能。對(duì)于邏輯構(gòu)造的優(yōu)化,還應(yīng)將表數(shù)據(jù)和索引數(shù)據(jù)分開表空間存儲(chǔ),分別使用獨(dú)立的表空間。因?yàn)槿绻麑⒈頂?shù)據(jù)和索引數(shù)據(jù)放在一起,表數(shù)據(jù)的 I/O 操作和索引的 I/O 操作將產(chǎn)生影響系統(tǒng)性能的 I/O 競爭,降低系統(tǒng)的響應(yīng)效率。將表數(shù)據(jù)和索引數(shù)據(jù)存放在不同的表空間中,并在物理層面將這兩個(gè)表空間的數(shù)據(jù)文件放在不同的物理磁盤上,就可以防止這種競爭了。專業(yè)資料
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版拌合料生產(chǎn)設(shè)備維修與保養(yǎng)合同4篇
- 2025年度農(nóng)業(yè)休閑觀光區(qū)綠化景觀建設(shè)與運(yùn)營合同4篇
- 2025版安防弱電系統(tǒng)集成服務(wù)合同3篇
- 2025年度個(gè)人肖像攝影合同范本集4篇
- 二零二五年度南京體育健身行業(yè)勞務(wù)派遣合同
- 二零二五年度木材行業(yè)安全生產(chǎn)責(zé)任保險(xiǎn)合同
- 第8~9講 反應(yīng)動(dòng)力學(xué)基礎(chǔ)知識(shí)
- 2025年度建筑幕墻工程安全質(zhì)量責(zé)任合同4篇
- 二零二五年度農(nóng)業(yè)生態(tài)環(huán)境保護(hù)與修復(fù)服務(wù)合同
- 二零二五年度使用知識(shí)產(chǎn)權(quán)許可合同
- 中國末端執(zhí)行器(靈巧手)行業(yè)市場發(fā)展態(tài)勢及前景戰(zhàn)略研判報(bào)告
- 北京離婚協(xié)議書(2篇)(2篇)
- 2025中國聯(lián)通北京市分公司春季校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 康復(fù)醫(yī)學(xué)科患者隱私保護(hù)制度
- Samsung三星SMARTCAMERANX2000(20-50mm)中文說明書200
- 2024年藥品質(zhì)量信息管理制度(2篇)
- 2024年安徽省高考地理試卷真題(含答案逐題解析)
- 廣東省廣州市2024年中考數(shù)學(xué)真題試卷(含答案)
- 高中學(xué)校開學(xué)典禮方案
- 內(nèi)審檢查表完整版本
- 3級(jí)人工智能訓(xùn)練師(高級(jí))國家職業(yè)技能鑒定考試題及答案
評(píng)論
0/150
提交評(píng)論