數(shù)據(jù)庫(kù)培訓(xùn)課程_第1頁(yè)
數(shù)據(jù)庫(kù)培訓(xùn)課程_第2頁(yè)
數(shù)據(jù)庫(kù)培訓(xùn)課程_第3頁(yè)
數(shù)據(jù)庫(kù)培訓(xùn)課程_第4頁(yè)
數(shù)據(jù)庫(kù)培訓(xùn)課程_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)由包含數(shù)據(jù)的表集合和其它對(duì)象(如視圖、索引、存儲(chǔ)過程和觸發(fā)器)組成,目的是為執(zhí)行與數(shù)據(jù)有關(guān)的活動(dòng)提供支持。存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)通常與特定的主題或過程(如生產(chǎn)倉(cāng)庫(kù)的庫(kù)存信息)相關(guān)。SQL Server 能夠支持許多數(shù)據(jù)庫(kù)。每個(gè)數(shù)據(jù)庫(kù)可以存儲(chǔ)來自其它數(shù)據(jù)庫(kù)的相關(guān)或不相關(guān)數(shù)據(jù)。例如,服務(wù)器可以有一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)職員數(shù)據(jù),另一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)與產(chǎn)品相關(guān)的數(shù)據(jù)。另一種方案是,一個(gè)數(shù)據(jù)庫(kù)可以存儲(chǔ)當(dāng)前客戶的訂單數(shù)據(jù),而另一個(gè)相關(guān)的數(shù)據(jù)庫(kù)可以存儲(chǔ)用于年度報(bào)告的歷史客戶訂單。在創(chuàng)建數(shù)據(jù)庫(kù)之前,理解數(shù)據(jù)庫(kù)的各組成部分及其設(shè)計(jì)方法,以確保實(shí)現(xiàn)數(shù)據(jù)庫(kù)后,數(shù)據(jù)庫(kù)能很好地運(yùn)行是很重要的。數(shù)據(jù)庫(kù)的組成表表是包含數(shù)據(jù)庫(kù)

2、中所有數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象。表定義為列的集合。與電子表格相似,數(shù)據(jù)在表中是按行和列的格式組織排列的。每行代表唯一的一條記錄,而每列代表記錄中的一個(gè)域。例如,在包含公司雇員數(shù)據(jù)的表中每一行代表一名雇員,各列分別表示雇員的詳細(xì)資料,如雇員編號(hào)、姓名、地址、職位以及家庭電話號(hào)碼等數(shù)據(jù)庫(kù)表的特性在關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論中,規(guī)范化規(guī)則指出了在設(shè)計(jì)良好的數(shù)據(jù)庫(kù)中必須出現(xiàn)或不出現(xiàn)的某些特性。關(guān)于規(guī)范化規(guī)則的完整討論不屬于本主題的范疇。不過,有幾個(gè)可幫助獲得合理的數(shù)據(jù)庫(kù)設(shè)計(jì)的規(guī)則: 表應(yīng)該有一個(gè)標(biāo)識(shí)符。 數(shù)據(jù)庫(kù)設(shè)計(jì)理論的基本原理是:每個(gè)表都應(yīng)有一個(gè)唯一的行標(biāo)識(shí)符,可以使用列或列集將任何單個(gè)記錄同表中的所有其它記錄區(qū)別

3、開來。每個(gè)表都應(yīng)有一個(gè) ID 列,任何兩個(gè)記錄都不可以共享同一 ID 值。作為表的唯一行標(biāo)識(shí)符的一列或多列是表的主鍵。表應(yīng)只能存儲(chǔ)單一類型實(shí)體的數(shù)據(jù)。 試圖在表中存儲(chǔ)過多的信息會(huì)妨礙對(duì)表的數(shù)據(jù)進(jìn)行有效、可靠的管理。在 SQL Server 2000 的 pubs 數(shù)據(jù)庫(kù)中,書名和出版商的信息存儲(chǔ)在兩個(gè)獨(dú)立的表內(nèi)。盡管在 titles 表中同時(shí)創(chuàng)建書籍及其出版商的信息列是可能的,但是這種設(shè)計(jì)會(huì)導(dǎo)致幾個(gè)問題。必須為出版商出版的每本書添加并存儲(chǔ)出版商信息,而這是沒有必要的,并且會(huì)占用數(shù)據(jù)庫(kù)中的額外存儲(chǔ)空間。如果出版商的地址更改了,則必須對(duì)每本書進(jìn)行更改。出版商的最后一本書從標(biāo)題表中刪除后,該出版商的

4、信息就會(huì)丟失。在 pubs 數(shù)據(jù)庫(kù)中,書和出版商的信息存儲(chǔ)在 titles 和 publishers 表中,有關(guān)出版商的信息只須輸入一次,然后即鏈接到每本書上。當(dāng)出版商信息更改時(shí),只需要在數(shù)據(jù)庫(kù)中的一個(gè)地方進(jìn)行更改,即使該出版商在數(shù)據(jù)庫(kù)中沒有書,出版商信息仍然存在。表應(yīng)避免可為空的列 表中的列可定義為允許空值??罩当硎緵]有值。盡管在個(gè)別情況下,允許空值有用,但是最好少用空值,因?yàn)榭罩敌枰M(jìn)行特殊的處理,這樣會(huì)增加數(shù)據(jù)操作的復(fù)雜性。如果某一表中有幾個(gè)可為空的列,并且列中的幾行有空值,則應(yīng)考慮將這些列置于鏈接到主表的其它表中。將數(shù)據(jù)存儲(chǔ)在兩個(gè)獨(dú)立的表中使主表的設(shè)計(jì)更為簡(jiǎn)單,但能夠滿足存儲(chǔ)空值信息的

5、偶爾需要。表不應(yīng)有重復(fù)的值或列數(shù)據(jù)庫(kù)中某一項(xiàng)目的表不應(yīng)包含特定信息的值列表。例如,pubs 數(shù)據(jù)庫(kù)中的書可以是合著的。如果在 titles 表中有一列是作者的名稱,這就會(huì)出現(xiàn)問題。一種解決方法是:在列中存儲(chǔ)兩位作者的姓名,但這樣會(huì)很難顯示單個(gè)作者的列表。另一種解決方法:是更改表的結(jié)構(gòu),為第二位作者的姓名添加另一列,但這只能包含兩位作者。當(dāng)然,如果一本書有三位作者,則必須再添一列。索引數(shù)據(jù)庫(kù)中的索引與書籍中的索引類似。在一本書中,利用索引可以快速查找所需信息,無須閱讀整本書。在數(shù)據(jù)庫(kù)中,索引使數(shù)據(jù)庫(kù)程序無須對(duì)整個(gè)表進(jìn)行掃描,就可以在其中找到所需數(shù)據(jù)。書中的索引是一個(gè)詞語(yǔ)列表,其中注明了包含各個(gè)詞

6、的頁(yè)碼。而數(shù)據(jù)庫(kù)中的索引是一個(gè)表中所包含的值的列表,其中注明了表中包含各個(gè)值的行所在的存儲(chǔ)位置??梢詾楸碇械膯蝹€(gè)列建立索引,也可以為一組列建立索引;索引采用 B 樹結(jié)構(gòu)。索引包含一個(gè)條目,該條目有來自表中每一行的一個(gè)或多個(gè)列(搜索關(guān)鍵字)。B 樹按搜索關(guān)鍵字排序,可以在搜索關(guān)鍵字的任何子詞條集合上進(jìn)行高效搜索。例如,對(duì)于一個(gè) A、B、C 列上的索引,可以在 A 以及 A、B 和 A、B、C 上對(duì)其進(jìn)行高效搜索數(shù)據(jù)庫(kù)索引的特性計(jì)索引時(shí)還要考慮的其它準(zhǔn)則包括: 一個(gè)表如果建有大量索引會(huì)影響 INSERT、UPDATE 和 DELETE 語(yǔ)句的性能,因?yàn)樵诒碇械臄?shù)據(jù)更改時(shí),所有索引都須進(jìn)行適當(dāng)?shù)恼{(diào)整

7、。另一方面,對(duì)于不需要修改數(shù)據(jù)的查詢(SELECT 語(yǔ)句),大量索引有助于提高性能,因?yàn)?SQL Server 有更多的索引可供選擇,以便確定以最快速度訪問數(shù)據(jù)的最佳方法。 覆蓋的查詢可以提高性能。覆蓋的查詢是指查詢中所有指定的列都包含在同一個(gè)索引中。例如,如果在一個(gè)表的 a、b 和 c 列上創(chuàng)建了組合索引,則從該表中檢索 a 和 b 列的查詢被視為覆蓋的查詢。創(chuàng)建覆蓋一個(gè)查詢的索引可以提高性能,因?yàn)樵摬樵兊乃袛?shù)據(jù)都包含在索引自身當(dāng)中;檢索數(shù)據(jù)時(shí)只需引用表的索引頁(yè),不必引用數(shù)據(jù)頁(yè),因而減少了 I/O 總量。盡管給索引添加列以覆蓋查詢可以提高性能,但在索引中額外維護(hù)更多的列會(huì)產(chǎn)生更新和存儲(chǔ)成本

8、。 對(duì)小型表進(jìn)行索引可能不會(huì)產(chǎn)生優(yōu)化效果,因?yàn)?SQL Server 在遍歷索引以搜索數(shù)據(jù)時(shí),花費(fèi)的時(shí)間可能會(huì)比簡(jiǎn)單的表掃描還長(zhǎng)。 應(yīng)使用 SQL 事件探查器和索引優(yōu)化向?qū)椭治霾樵?,確定要?jiǎng)?chuàng)建的索引。為數(shù)據(jù)庫(kù)及其工作負(fù)荷選擇正確的索引是非常復(fù)雜的,需要在查詢速度和更新成本之間取得平衡。窄索引(搜索關(guān)鍵字中只有很少的列的索引)需要的磁盤空間和維護(hù)開銷都更少。而另一方面,寬索引可以覆蓋更多的查詢。確定正確的索引集沒有簡(jiǎn)便的規(guī)則。經(jīng)驗(yàn)豐富的數(shù)據(jù)庫(kù)管理員常常能夠設(shè)計(jì)出很好的索引集,但是,即使對(duì)于不特別復(fù)雜的數(shù)據(jù)庫(kù)和工作負(fù)荷來說,這項(xiàng)任務(wù)也十分復(fù)雜、費(fèi)時(shí)和易于出錯(cuò)??梢允褂盟饕齼?yōu)化向?qū)惯@項(xiàng)任務(wù)自動(dòng)

9、化。SQL Server 執(zhí)行一個(gè)語(yǔ)句,在 employee 表中根據(jù)指定的 emp_id 值查找數(shù)據(jù)時(shí),它能夠識(shí)別 emp_id 列的索引,并使用該索引查找所需數(shù)據(jù)。如果該索引不存在,它會(huì)從表的第一行開始,逐行搜索指定的 emp_id 值。SQL Server 為某些類型的約束(如 PRIMARY KEY 和 UNIQUE 約束)自動(dòng)創(chuàng)建索引??梢酝ㄟ^創(chuàng)建不依賴于約束的索引,進(jìn)一步對(duì)表定義進(jìn)行自定義。不過,索引為性能所帶來的好處卻是有代價(jià)的。帶索引的表在數(shù)據(jù)庫(kù)中會(huì)占據(jù)更多的空間。另外,為了維護(hù)索引,對(duì)數(shù)據(jù)進(jìn)行插入、更新、刪除操作的命令所花費(fèi)的時(shí)間會(huì)更長(zhǎng)。在設(shè)計(jì)和創(chuàng)建索引時(shí),應(yīng)確保對(duì)性能的提高

10、程度大于在存儲(chǔ)空間和處理資源方面的代價(jià)。視圖視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。對(duì)其中所引用的基礎(chǔ)表來說,視圖的作用類似于篩選。定義視圖的篩選可以來自當(dāng)前或其它數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表,或者其它視圖。分布式查詢也可用于定義使用多個(gè)異類源數(shù)據(jù)的視圖。如果有幾臺(tái)不同的服務(wù)器分別存儲(chǔ)組織中不同地區(qū)的數(shù)據(jù),而您需要將這些服務(wù)器上相似結(jié)構(gòu)的數(shù)據(jù)組合起來,這種方式就很有用。著重于特定數(shù)據(jù)視圖讓用戶能夠著重于他們所感興趣的特定數(shù)據(jù)和所負(fù)責(zé)的特定

11、任務(wù)。不必要的數(shù)據(jù)可以不出現(xiàn)在視圖中。這同時(shí)增強(qiáng)了數(shù)據(jù)的安全性,因?yàn)橛脩糁荒芸吹揭晥D中所定義的數(shù)據(jù),而不是基礎(chǔ)表中的數(shù)據(jù)。有關(guān)出于安全考慮使用視圖的更多信息,請(qǐng)參見使用視圖作為安全機(jī)制。 簡(jiǎn)化數(shù)據(jù)操作視圖可以簡(jiǎn)化用戶操作數(shù)據(jù)的方式??蓪⒔?jīng)常使用的聯(lián)接、投影、聯(lián)合查詢和選擇查詢定義為視圖,這樣,用戶每次對(duì)特定的數(shù)據(jù)執(zhí)行進(jìn)一步操作時(shí),不必指定所有條件和限定。例如,一個(gè)用于報(bào)表目的,并執(zhí)行子查詢、外聯(lián)接及聚合以從一組表中檢索數(shù)據(jù)的復(fù)合查詢,就可以創(chuàng)建為一個(gè)視圖。視圖簡(jiǎn)化了對(duì)數(shù)據(jù)的訪問,因?yàn)槊看紊蓤?bào)表時(shí)無須寫或提交基礎(chǔ)查詢,而是查詢視圖。有關(guān)數(shù)據(jù)操作的更多信息,請(qǐng)參見查詢基礎(chǔ)知識(shí)。 還可以創(chuàng)建內(nèi)嵌的

12、用戶定義函數(shù),在邏輯上作為參數(shù)化視圖運(yùn)行,或作為在 WHERE 子句搜索條件中含有參數(shù)的視圖運(yùn)行。有關(guān)更多信息,請(qǐng)參見內(nèi)嵌用戶定義函數(shù)。自定義數(shù)據(jù)視圖允許用戶以不同的方式查看數(shù)據(jù),即使他們同時(shí)使用相同的數(shù)據(jù)時(shí)也如此。這在具有不同目的和技術(shù)水平的用戶共享同一個(gè)數(shù)據(jù)庫(kù)時(shí)尤為有利。例如,可定義一個(gè)視圖以僅檢索由客戶經(jīng)理處理的客戶數(shù)據(jù)。視圖可以根據(jù)使用該視圖的客戶經(jīng)理的登錄 ID 決定檢索哪些數(shù)據(jù)。導(dǎo)出和導(dǎo)入數(shù)據(jù)可使用視圖將數(shù)據(jù)導(dǎo)出至其它應(yīng)用程序。例如,可能希望使用 pubs 數(shù)據(jù)庫(kù)中的 stores 和 sales 表在 Microsoft Excel 中分析銷售數(shù)據(jù)。為此,可創(chuàng)建一個(gè)基于 stor

13、es 和 sales 表的視圖。然后使用 bcp 實(shí)用工具導(dǎo)出由視圖定義的數(shù)據(jù)。也可使用 bcp 實(shí)用工具或 BULK INSERT 語(yǔ)句將數(shù)據(jù)從數(shù)據(jù)文件中導(dǎo)入某些視圖,條件是可以使用 INSERT 語(yǔ)句在視圖中插入行。有關(guān)向視圖中復(fù)制數(shù)據(jù)的限制的更多信息,請(qǐng)參見 INSERT。有關(guān)使用 bcp 實(shí)用工具和 BULK INSERT 語(yǔ)句從(或向)視圖中復(fù)制數(shù)據(jù)的更多信息,請(qǐng)參見向(或從)視圖中復(fù)制數(shù)據(jù)。存儲(chǔ)過程在使用 Microsoft SQL Server 2000 創(chuàng)建應(yīng)用程序時(shí),Transact-SQL 編程語(yǔ)言是應(yīng)用程序和 SQL Server 數(shù)據(jù)庫(kù)之間的主要編程接口。使用 Tran

14、sact-SQL 程序時(shí),可用兩種方法存儲(chǔ)和執(zhí)行程序??梢栽诒镜卮鎯?chǔ)程序,并創(chuàng)建向 SQL Server 發(fā)送命令并處理結(jié)果的應(yīng)用程序;也可以將程序在 SQL Server 中存儲(chǔ)為存儲(chǔ)過程,并創(chuàng)建執(zhí)行存儲(chǔ)過程并處理結(jié)果的應(yīng)用程序。 SQL Server 中的存儲(chǔ)過程與其它編程語(yǔ)言中的過程類似,原因是存儲(chǔ)過程可以: 接受輸入?yún)?shù)并以輸出參數(shù)的形式將多個(gè)值返回至調(diào)用過程或批處理。 包含執(zhí)行數(shù)據(jù)庫(kù)操作(包括調(diào)用其它過程)的編程語(yǔ)句。 向調(diào)用過程或批處理返回狀態(tài)值,以表明成功或失?。ㄒ约笆≡颍?可使用 Transact-SQL EXECUTE 語(yǔ)句運(yùn)行存儲(chǔ)過程。存儲(chǔ)過程與函數(shù)不同,因?yàn)榇鎯?chǔ)過程

15、不返回取代其名稱的值,也不能直接用在表達(dá)式中。使用 SQL Server 中的存儲(chǔ)過程而不使用存儲(chǔ)在客戶計(jì)算機(jī)本地的 Transact-SQL 程序的優(yōu)勢(shì)有: 允許模塊化程序設(shè)計(jì)。 只需創(chuàng)建過程一次并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中,以后即可在程序中調(diào)用該過程任意次。存儲(chǔ)過程可由在數(shù)據(jù)庫(kù)編程方面有專長(zhǎng)的人員創(chuàng)建,并可獨(dú)立于程序源代碼而單獨(dú)修改。 允許更快執(zhí)行。 如果某操作需要大量 Transact-SQL 代碼或需重復(fù)執(zhí)行,存儲(chǔ)過程將比 Transact-SQL 批代碼的執(zhí)行要快。將在創(chuàng)建存儲(chǔ)過程時(shí)對(duì)其進(jìn)行分析和優(yōu)化,并可在首次執(zhí)行該過程后使用該過程的內(nèi)存中版本。每次運(yùn)行 Transact-SQL 語(yǔ)句時(shí),

16、都要從客戶端重復(fù)發(fā)送,并且在 SQL Server 每次執(zhí)行這些語(yǔ)句時(shí),都要對(duì)其進(jìn)行編譯和優(yōu)化。 減少網(wǎng)絡(luò)流量。 一個(gè)需要數(shù)百行 Transact-SQL 代碼的操作由一條執(zhí)行過程代碼的單獨(dú)語(yǔ)句就可實(shí)現(xiàn),而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。 可作為安全機(jī)制使用。 即使對(duì)于沒有直接執(zhí)行存儲(chǔ)過程中語(yǔ)句的權(quán)限的用戶,也可授予他們執(zhí)行該存儲(chǔ)過程的權(quán)限。其它概念聯(lián)機(jī)事務(wù)處理聯(lián)機(jī)事務(wù)處理數(shù)據(jù)庫(kù)應(yīng)用程序最適合于管理變化的數(shù)據(jù),通常,這種應(yīng)用程序有大量的用戶同時(shí)執(zhí)行更改實(shí)時(shí)數(shù)據(jù)的事務(wù)。盡管用戶對(duì)數(shù)據(jù)的單個(gè)請(qǐng)求一般只引用少量記錄,但是,這些請(qǐng)求有許多是同時(shí)發(fā)生的。這些類型的數(shù)據(jù)庫(kù)的常見例子是航空訂票系統(tǒng)和銀行事務(wù)系

17、統(tǒng)。在這種類型的應(yīng)用程序中,主要關(guān)心的是并發(fā)性和原子性。數(shù)據(jù)庫(kù)系統(tǒng)中的并發(fā)性控制確保兩個(gè)用戶不能更改同一數(shù)據(jù),或者一個(gè)用戶不能在另一個(gè)用戶對(duì)數(shù)據(jù)操作完成之前對(duì)其進(jìn)行更改。例如,如果您正在與一位航空訂票代理聯(lián)系預(yù)訂某航班上最后一個(gè)可用座位,該代理開始用您的姓名進(jìn)行座位的預(yù)訂處理,這時(shí),其他代理應(yīng)該不能再告訴其他乘客還可以預(yù)訂該座位。原子性確保事務(wù)中包括的所有步驟都作為一個(gè)組成功地完成。如果一個(gè)步驟失敗,則不應(yīng)完成其它步驟。例如,某個(gè)銀行事務(wù)可能包括兩個(gè)步驟:從您的支票帳戶中取出資金,然后將其放入您的存款帳戶中。如果從您的支票帳戶中成功地移走了資金,就需要確保將該資金放入您的存款帳戶中或重新放回到

18、您的支票帳戶中。聯(lián)機(jī)事務(wù)處理設(shè)計(jì)注意事項(xiàng)事務(wù)處理系統(tǒng)數(shù)據(jù)庫(kù)應(yīng)設(shè)計(jì)為支持: 很好的數(shù)據(jù)放置。 對(duì)于 OLTP 系統(tǒng),輸入/輸出瓶頸是一個(gè)尤為關(guān)心的問題,原因在于修改整個(gè)數(shù)據(jù)庫(kù)中數(shù)據(jù)的用戶很多。確定數(shù)據(jù)的可能訪問模式,并將經(jīng)常訪問的數(shù)據(jù)放在一起。在此過程中,可輔以文件組和 RAID(獨(dú)立磁盤冗余陣列)系統(tǒng)。 縮短事務(wù)以將長(zhǎng)期鎖減至最少,提高并發(fā)性。 在事務(wù)期間,避免用戶交互。無論何時(shí),只要有可能,就通過執(zhí)行單個(gè)存儲(chǔ)過程來處理整個(gè)事務(wù)。在事務(wù)內(nèi)對(duì)表的引用順序可能會(huì)影響并發(fā)性。將對(duì)經(jīng)常訪問的表的引用置于事務(wù)的末尾,以便將控制鎖的持續(xù)時(shí)間減至最短。 聯(lián)機(jī)備份。 OLTP 系統(tǒng)通常的特征是連續(xù)操作(一天

19、24 小時(shí),一周 7 天),為達(dá)到此目的,停工時(shí)間要保持絕對(duì)最短。盡管 Microsoft SQL Server 2000 可以在數(shù)據(jù)庫(kù)正在使用時(shí)對(duì)其進(jìn)行備份,但是應(yīng)將備份過程安排在活動(dòng)不頻繁時(shí)進(jìn)行,以使對(duì)用戶的影響減至最小。 數(shù)據(jù)庫(kù)的高度規(guī)范化。 盡可能減少冗余信息以提高更新的速度,從而提高并發(fā)性。減少數(shù)據(jù)還可以提高備份的速度,因?yàn)橹恍枰獋浞莞俚臄?shù)據(jù)。 很少或沒有歷史或聚合數(shù)據(jù)。 可以將很少引用的數(shù)據(jù)歸檔到單獨(dú)的數(shù)據(jù)庫(kù)中,或者從經(jīng)常更新的表中移出,并置于僅含歷史數(shù)據(jù)的表中。這將保持表盡可能地小,從而縮短備份時(shí)間,改善查詢性能。 小心使用索引。 每次添加或修改行時(shí),必須更新索引。若要避免對(duì)經(jīng)

20、常更新的表進(jìn)行過多的索引,索引范圍應(yīng)保持較窄。請(qǐng)用索引優(yōu)化向?qū)гO(shè)計(jì)索引。 OLTP 系統(tǒng)需要最佳的硬件配置以處理較大并發(fā)用戶數(shù)目和快速響應(yīng)時(shí)間。 決策支持決策支持?jǐn)?shù)據(jù)庫(kù)應(yīng)用程序最適合于不更改數(shù)據(jù)的數(shù)據(jù)查詢。例如,公司可以定期地按日期、銷售地區(qū)或產(chǎn)品匯總其銷售數(shù)據(jù),并將該信息存儲(chǔ)在單獨(dú)的數(shù)據(jù)庫(kù)中以供高級(jí)管理人員進(jìn)行分析。若要作出業(yè)務(wù)決策,用戶必須能夠根據(jù)各種準(zhǔn)則,通過查詢數(shù)據(jù)快速地確定銷售趨勢(shì)。然而,他們不必更改這些數(shù)據(jù)。決策支持?jǐn)?shù)據(jù)庫(kù)中的表建立了大量索引,原始數(shù)據(jù)通常要進(jìn)行預(yù)處理,并對(duì)其進(jìn)行組織以支持將要使用的各種類型的查詢。因?yàn)橛脩舨⒉桓臄?shù)據(jù),并發(fā)性和原子性問題不必考慮;數(shù)據(jù)僅定期更改,在

21、非工作時(shí)間和低流量時(shí)間對(duì)數(shù)據(jù)庫(kù)進(jìn)行大容量更新。決策支持設(shè)計(jì)注意事項(xiàng)決策支持系統(tǒng)數(shù)據(jù)庫(kù)應(yīng)設(shè)計(jì)成可以支持: 大量索引。 決策支持系統(tǒng)只需要很少的更新,但數(shù)據(jù)量很大??墒褂么罅克饕岣卟樵冃阅堋?數(shù)據(jù)庫(kù)的非規(guī)范化。 引入預(yù)聚合或匯總數(shù)據(jù)以滿足常見的查詢要求,縮短查詢響應(yīng)時(shí)間。 使用星型架構(gòu)或雪花架構(gòu)來組織數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)數(shù)據(jù)倉(cāng)庫(kù)的概念及特點(diǎn) 數(shù)據(jù)倉(cāng)庫(kù)概念始于本世紀(jì)80年代中期,首次出現(xiàn)是在號(hào)稱“數(shù)據(jù)倉(cāng)庫(kù)之父”William H.Inmon的建立數(shù)據(jù)倉(cāng)庫(kù)一書中。隨著人們對(duì)大型數(shù)據(jù)系統(tǒng)研究、管理、維護(hù)等方面的深刻識(shí)認(rèn)和不斷完善,在總結(jié)、豐富、集中多行企業(yè)信息的經(jīng)驗(yàn)之后,為數(shù)據(jù)倉(cāng)庫(kù)給出了更為精確的定義,即“

22、數(shù)據(jù)倉(cāng)庫(kù)是在企業(yè)管理和決策中面向主題的、集成的、與時(shí)間相關(guān)的、不可修改的數(shù)據(jù)集合”。 數(shù)據(jù)倉(cāng)庫(kù)并沒有嚴(yán)格的數(shù)學(xué)理論基礎(chǔ),也沒有成熟的基本模式,且更偏向于工程,具有強(qiáng)烈的工程性。因此,在技術(shù)上人們習(xí)慣于從工作過程等方面來分析,并按其關(guān)鍵技術(shù)部份分為數(shù)據(jù)的抽取、存儲(chǔ)與管理以及數(shù)據(jù)的表現(xiàn)等三個(gè)基本方面。 數(shù)據(jù)的抽?。簲?shù)據(jù)的抽取是數(shù)據(jù)進(jìn)入倉(cāng)庫(kù)的入口。由于數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)獨(dú)立的數(shù)據(jù)環(huán)境,它需要通過抽取過程將數(shù)據(jù)從聯(lián)機(jī)事務(wù)處理系統(tǒng)、外部數(shù)據(jù)源、脫機(jī)的數(shù)據(jù)存儲(chǔ)介質(zhì)中導(dǎo)入到數(shù)據(jù)倉(cāng)庫(kù)。數(shù)據(jù)抽取在技術(shù)上主要涉及互連、復(fù)制、增量、轉(zhuǎn)換、調(diào)度和監(jiān)控等方面。數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)并不要求與聯(lián)機(jī)事務(wù)處理系統(tǒng)保持實(shí)時(shí)同步,因此數(shù)據(jù)

23、抽取可以定時(shí)進(jìn)行,但多個(gè)抽取操作執(zhí)行的時(shí)間、相互的順序、成敗對(duì)數(shù)據(jù)倉(cāng)庫(kù)中信息的有效性則至關(guān)重要。 存儲(chǔ)和管理:數(shù)據(jù)倉(cāng)庫(kù)的真正關(guān)鍵是數(shù)據(jù)的存儲(chǔ)和管理。數(shù)據(jù)倉(cāng)庫(kù)的組織管理方式?jīng)Q定了它有別于傳統(tǒng)數(shù)據(jù)庫(kù),同時(shí)也決定了其對(duì)外部數(shù)據(jù)的表現(xiàn)形式。要決定采用什么產(chǎn)品和技術(shù)來建立數(shù)據(jù)倉(cāng)庫(kù)的核心,則需要從數(shù)據(jù)倉(cāng)庫(kù)的技術(shù)特點(diǎn)著手分析。 數(shù)據(jù)的表現(xiàn):數(shù)據(jù)表現(xiàn)實(shí)際上相當(dāng)于數(shù)據(jù)倉(cāng)庫(kù)的門面,其性能主要集中在多維分析、數(shù)理統(tǒng)計(jì)和數(shù)據(jù)挖掘方面。而多維分析又是數(shù)據(jù)倉(cāng)庫(kù)的重要表現(xiàn)形式,近幾年來由于互聯(lián)網(wǎng)的發(fā)展,使得多維分析領(lǐng)域的工具和產(chǎn)品更加注重提供基于Web前端聯(lián)機(jī)分析界面,而不僅僅是在網(wǎng)上發(fā)布數(shù)據(jù)。SQL語(yǔ)言的分類及語(yǔ)法1.1

24、.2 SQL語(yǔ)言的分類及語(yǔ)法可執(zhí)行的SQL語(yǔ)句的種類數(shù)目之多是驚人的。使用SQL,你可以執(zhí)行任何功能:從一個(gè)簡(jiǎn)單的表查詢,到創(chuàng)建表和存儲(chǔ)過程,到設(shè)定用戶權(quán)限。在這個(gè)章節(jié)中,我們將重點(diǎn)講述如何從數(shù)據(jù)庫(kù)中檢索、更新和報(bào)告數(shù)據(jù),也是基于這個(gè)目的,我們應(yīng)該了解的最重要的SQL語(yǔ)句是: SELCET INSERT UPDATE DELETE CREAT DROP以上這些命令可簡(jiǎn)要描述如表1.1所示,這些命令看起來并不困難,在下面的例子中,我們將在實(shí)例中應(yīng)用這些命令,了解其功能。表1.1 重要的SQL語(yǔ)句命令類別說明SELECT數(shù)據(jù)查詢語(yǔ)言從一個(gè)表或多個(gè)表中檢索列和行INSERT數(shù)據(jù)操縱語(yǔ)言向一個(gè)表中增加行UPDATE數(shù)據(jù)操縱語(yǔ)言更新表中已存在的行的某幾列DELETE數(shù)據(jù)操縱語(yǔ)言從一個(gè)表中刪除行CREATE數(shù)據(jù)定義語(yǔ)言按特定的表模式創(chuàng)建一個(gè)新表DROP數(shù)據(jù)定義語(yǔ)言刪除一張表1.SELECT語(yǔ)句語(yǔ)法表1.2 SELECT語(yǔ)句的組件組件說明SELECT指明要檢索的數(shù)據(jù)的列FROM指明從哪(幾)個(gè)表中進(jìn)行檢索WHERE指明返回?cái)?shù)據(jù)必須滿足的標(biāo)準(zhǔn)GROUP BY指明返回的列數(shù)據(jù)通過某些條件來形成組HAVING指明返回的集合必須滿足的標(biāo)準(zhǔn)ORDER BY

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論