數(shù)據(jù)庫6版講稿第五章----高級SQL_第1頁
數(shù)據(jù)庫6版講稿第五章----高級SQL_第2頁
數(shù)據(jù)庫6版講稿第五章----高級SQL_第3頁
數(shù)據(jù)庫6版講稿第五章----高級SQL_第4頁
數(shù)據(jù)庫6版講稿第五章----高級SQL_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、4.4 嵌入式嵌入式SQLl為什么使用嵌入式SQL?l嵌入式SQL執(zhí)行過程l需要解決的幾個問題為什么使用嵌入式為什么使用嵌入式SQL?l有些操作對于交互式SQL是不可能的任務(wù)不可能的任務(wù) SQL的表達能力相比高級語言有一定的限制,有些數(shù)據(jù)訪問要求單純使用SQL無法完成。一方面,SQL在逐漸增強自己的表達能力(參見習(xí)題4.10),另一方面,太多的擴展會導(dǎo)致優(yōu)化能力及執(zhí)行效率的降低l非聲明性動作 實際的應(yīng)用系統(tǒng)是非常復(fù)雜的,數(shù)據(jù)庫訪問只是其中一個部件。有些動作如與用戶交互、圖形化顯示數(shù)據(jù)等只能用高級語言實現(xiàn)嵌入式嵌入式SQL執(zhí)行過程執(zhí)行過程主語言 + 嵌入SQL 預(yù)處理 主語言 + 函數(shù)調(diào)用 主語

2、言編譯器 主語言執(zhí)行程序 需要解決的幾個問題需要解決的幾個問題l區(qū)分SQL語句與C語言語句嵌入的SQL語句以EXEC SQLEXEC SQL開始,以分號(; ;) 或END_EXECEND_EXEC結(jié)束EXEC SQLEXEC SQL delete fromdelete from PROF where where DNO = 10;需要解決的幾個問題需要解決的幾個問題l嵌入SQL語句與C語言之間的數(shù)據(jù)傳遞 宿主變量lC變量,既可以用在C語句中,也可用在SQL語句中,用來在兩者之間傳遞數(shù)據(jù) 宿主變量的聲明l聲明為通常的C變量,并將其放在下列標(biāo)識語句之間EXEC SQL BEGIN DECLARE

3、 SECTIONEXEC SQL BEGIN DECLARE SECTIONEXEC SQL END DECLARE SECTIONEXEC SQL END DECLARE SECTION需要解決的幾個問題需要解決的幾個問題EXEC SQL BEGIN DECLARE SECTIONEXEC SQL BEGIN DECLARE SECTIONint prof_no;char prof_name30;int salary;EXEC SQL END DECLARE SECTIONEXEC SQL END DECLARE SECTION需要解決的幾個問題需要解決的幾個問題注:宿主變量出現(xiàn)于注:宿主變

4、量出現(xiàn)于SQLSQL語句中時,前面加(語句中時,前面加(: :)以)以區(qū)別列名區(qū)別列名 宿主變量可出現(xiàn)的地方:宿主變量可出現(xiàn)的地方:SQLSQL的數(shù)據(jù)操縱語句中可的數(shù)據(jù)操縱語句中可出現(xiàn)出現(xiàn)常數(shù)常數(shù)的任何地方,的任何地方,selectselect,fetchfetch等語句的等語句的intointo子句中子句中示例:示例:EXEC SQL select PNAME , SALEXEC SQL select PNAME , SAL into :prof_name , :salary into :prof_name , :salary from PROF from PROF where PNO =

5、:prof_no ; where PNO = :prof_no ; 需要解決的幾個問題需要解決的幾個問題lSQL與主語言之間操作方式的協(xié)調(diào) 執(zhí)行方式的差別lSQL:一次一集合lC語言:一次一記錄 游標(biāo)l在查詢結(jié)果的記錄集合中移動的指針l若一個SQL語句返回單個元組,則不用游標(biāo)l若一個SQL語句返回多個元組,則使用游標(biāo)需要解決的幾個問題需要解決的幾個問題不需要游標(biāo)的數(shù)據(jù)操作l結(jié)果是一個元組的select語句EXEC SQLEXEC SQL selectselect PNAME , SALintointo : :prof_name, : :salary fromfrom PROFwherewher

6、e PNO = :prof_no ; ;需要解決的幾個問題需要解決的幾個問題linsert語句 EXEC SQLEXEC SQL insert intoinsert into PROF valuesvalues (: :prof_no, : :prof_name , : :salary , : :dept_no , : : salary) ; ;ldelete語句 EXEC SQL delete from EXEC SQL delete from PROF where where PNO :prof_no ; ;lupdate語句 EXEC SQL update PROF set EXEC S

7、QL update PROF set SAL = :salary where where PNO = : prof_no ; ;需要解決的幾個問題需要解決的幾個問題 需要游標(biāo)的數(shù)據(jù)操作當(dāng)select語句的結(jié)果中包含多個元組時,使用游標(biāo)可以逐個存取這些元組活動集:活動集:select語句返回的元組的集合當(dāng)前行:當(dāng)前行:活動集中當(dāng)前處理的那一行。游標(biāo)即是指向當(dāng)前行的指針需要解決的幾個問題需要解決的幾個問題 定義與使用游標(biāo)的語句ldeclaredeclare定義一個游標(biāo),使之對應(yīng)一個select語句 declaredeclare 游標(biāo)名 cursor forcursor forselect語句for

8、 updatefor update ofof列表名for update:該游標(biāo)可用于對當(dāng)前行的修改刪除lopenopen打開游標(biāo),執(zhí)行對應(yīng)的查詢,結(jié)果集為該游標(biāo)的活動集open 游標(biāo)名需要解決的幾個問題需要解決的幾個問題lfetchfetch在活動集中將游標(biāo)移到特定的行,并取出該行數(shù)據(jù)放到相應(yīng)的宿主變量中fetch fetch 游標(biāo)名 into into 宿主變量表lcloseclose關(guān)閉游標(biāo),釋放活動集及其所占資源。需要再使用該游標(biāo)時,執(zhí)行open語句closeclose 游標(biāo)名需要解決的幾個問題需要解決的幾個問題 推進游標(biāo)指針 EXEC SQL FETCH INTO ,. FETCH語句

9、通常用在一個循環(huán)結(jié)構(gòu)中,逐條取出結(jié)果集中的記錄進行處理。許多關(guān)系數(shù)據(jù)庫管理系統(tǒng)對FETCH語句做了擴充,允許向任意方向以任意步長移動游標(biāo)指針。 關(guān)閉游標(biāo) EXEC SQL CLOSE 釋放緩沖區(qū)及其他資源。需要解決的幾個問題需要解決的幾個問題說明游標(biāo)說明游標(biāo)EXEC SQL DECLARE CURSOR FOR 其中其中SELECT語句可以是簡單查詢,也可以是語句可以是簡單查詢,也可以是復(fù)雜的連接查詢和嵌套查詢。復(fù)雜的連接查詢和嵌套查詢。打開游標(biāo)EXEC SQL OPEN執(zhí)行相應(yīng)的SELECT語句,把查詢記錄取到緩沖區(qū)中。這時游標(biāo)處于活動狀態(tài),指針指向查詢結(jié)果集中第一條記錄。 需要解決的幾個問

10、題需要解決的幾個問題lSQL語句執(zhí)行信息反饋 良好的應(yīng)用程序必須提供對錯誤的處理,應(yīng)用程序需要知道SQL語句是否正確執(zhí)行了,發(fā)生錯誤時的錯誤代碼,執(zhí)行時遇到特殊情況時的警告信息 SQL通訊域SQLCASQLCA是一結(jié)構(gòu),每一嵌入SQL語句的執(zhí)行情況在其執(zhí)行完成后寫入SQLCA結(jié)構(gòu)中的各變量中, 根據(jù)SQLCA中的內(nèi)容可以獲得每一嵌入SQL語句執(zhí)行后的信息,應(yīng)用程序就可以做相應(yīng)的處理 在PB中,一個SQL語句執(zhí)行結(jié)束后,SQLCA.SQLCODE=0,100,-1分別表示執(zhí)行成功,未查找到符合條件的元組,執(zhí)行出錯PB中的游標(biāo)中的游標(biāo)Declare cur_a cursor for Select

11、a,b,c from;Open cur_a;If sqlca.sqlcode0 then returnDo while true Fetch cur_a into :va,:vb,:vc; If sqlca.sqlcode=100 then exit If sqlca.sqlcode=-1 then return LoopClose cur_a;If sqlca.sqlcode0 then return嵌入式嵌入式 SQL 編程編程l嵌入式嵌入式SQL語句與主語言之間的通信過語句與主語言之間的通信過程程l1數(shù)據(jù)庫工作單元與源程序工作單元之間通信主要包括:l 向主語言傳遞SQL語句的執(zhí)行狀態(tài)信息

12、,使主語言能夠據(jù)此控制程序流程。l 主語言向SQL語句提供參數(shù)。l 將SQL語句查詢數(shù)據(jù)庫的結(jié)果交主語言進一步處理。嵌入式嵌入式 SQL 編程編程l2嵌入式SQL與主語言之間通信的實現(xiàn)lSQL語句通過SQL通信區(qū)SQLCA(SQL communiction area)向主語言傳遞SQL執(zhí)行狀態(tài)信息。l主語言通過自己的主變量(host vaiable)向SQL語句輸入數(shù)據(jù)參數(shù)。l 兩者數(shù)據(jù)傳送通過主變量和游標(biāo)(crusor)實現(xiàn)。嵌入式嵌入式 SQL 編程編程l3SQL通信區(qū)lSQL語句執(zhí)行后,系統(tǒng)將當(dāng)前工作狀態(tài)送到SQL通信區(qū)SQLCA中。應(yīng)用程序從SQLCA中取出這些狀態(tài)信息,據(jù)此決定接下來

13、執(zhí)行的語句。l主語言程序中用EXEC SQL INCLUDE SQLCA定義通信區(qū)。lSQLCA中有一個返回代碼的變量SQLCODE。 執(zhí)行完一條SQL語句后可以測試一下SQLCODE的值,如果是SUCCESS,則表示SQL語句成功,否則表示錯誤。嵌入式嵌入式 SQL 編程編程l4主變量l在SQL語句中使用的主語言程序的變量稱為主變量。l輸入主變量由主語言程序?qū)ζ滟x值,SQL語句引用。l輸出主變量由SQL語句對其賦值,返回給主語言程序。l一個主變量附帶一個任選的指示變量, 整型變量,指示主變量的值或條件。輸入主變量可以利用指示變量賦空值,輸出主變量可以利用指示變量檢測出是否空值,值是否被截斷。

14、嵌入式嵌入式 SQL 編程舉例編程舉例l 例 查詢某個系全體學(xué)生的信息。系名在主程序中指定。EXEC SQL INCLUDE SQLCA EXEC SQL BEGIN DECLARE SECTION CHAR deptname (20) CHAR HSno (6) CHAR HSnmae (8) CHAR HSsex (2)嵌入式嵌入式 SQL 編程舉例編程舉例CHAR HSdept (20)INT HSageEXEC SQL END DECLARE SECTION;main() WHILE (gets(deptname != NULL) 嵌入式嵌入式 SQL 編程舉例編程舉例EXEC SQL

15、 DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Sdept=:deptname EXEC SQL OPEN SX WHILE(1) EXEC SQL FETCH SX INTO 嵌入式嵌入式 SQL 編程舉例編程舉例:HSno,:HSname,:HSsex,:Hsage,:HSdept if (sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno,HSname, HSsex,Hsage,HSdept); ;嵌入式嵌入式 SQL 編

16、程舉例編程舉例 EXEC SQL CLOSE SX ; End;l例 修改學(xué)生的年齡。 . main() Char yn (1); Int Newage;嵌入式嵌入式 SQL 編程舉例編程舉例 gets(deptname ); EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student WHERE Sdept=:deptname FOR UPDATE OF Sage ; EXEC SQL OPEN SX; WHILE(1) 嵌入式嵌入式 SQL 編程舉例編程舉例 EXEC SQL FETCH SX I

17、NTO :HSno,:HSname,:HSsex,:Hsage,:HSdept if (sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno, HSname,HSsex,Hsage,HSdept); printf(“修改該學(xué)生的年齡?”); 嵌入式嵌入式 SQL 編程舉例編程舉例 scanf(“%c”,&yn); if(yn=y or yn=Y) printf(輸入新的年齡:) scanf(%d,&Newage); EXEC SQL UPDATE Student SET Sage=:NEWAge WHERE CUR

18、RENT OF SX; 嵌入式嵌入式 SQL 編程舉例編程舉例 ; ; EXEC SQL CLOSE SX; End ;lUPDATE語句分為CURRENT形式和非CURRENT形式,非CURRENT形式是集合操作,一次修改所有滿足條件的記錄。CURRENT形式只修改其中某個記錄。 嵌入式嵌入式 SQL 編程舉例編程舉例l例 刪除某些學(xué)生的記錄。 . EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage FROM Student WHERE SDept=:deptname; EXEC SQL OPEN SX WHILE(1) 嵌入式

19、嵌入式 SQL 編程舉例編程舉例 EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage, :HSdept; if(sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno, HSname,HSsex,Hsage,HSdept) printf(刪除該記錄?); 嵌入式嵌入式 SQL 編程舉例編程舉例 scanf(%c,&yn); if(yn=y or yn=Y) EXEC SQL DELETE FROM Student WHERE CURRENT OF Sx; ; EXEC

20、SQL CLOSE SX; .5.3 觸發(fā)器觸發(fā)器l觸發(fā)器:觸發(fā)器是一條語句,當(dāng)對數(shù)據(jù)庫做修觸發(fā)器:觸發(fā)器是一條語句,當(dāng)對數(shù)據(jù)庫做修改時,它自動被系統(tǒng)執(zhí)行改時,它自動被系統(tǒng)執(zhí)行 觸發(fā)器的定義觸發(fā)器的定義l指明什么條件下觸發(fā)器被執(zhí)行指明什么條件下觸發(fā)器被執(zhí)行l(wèi)指明觸發(fā)器執(zhí)行的動作是什么指明觸發(fā)器執(zhí)行的動作是什么 觸發(fā)器的作用觸發(fā)器的作用l示警示警l滿足特定條件時自動執(zhí)行某項任務(wù)滿足特定條件時自動執(zhí)行某項任務(wù) 觸發(fā)器事件觸發(fā)器事件lInsertInsert、 deletedelete、updateupdate觸發(fā)器定義觸發(fā)器定義create trigger trigger-namebeginaft

21、erinsertdeleteupdateon table-nameof column-namereferencingold row as identifiernew row as identifiertriggered-SQL-statementfor each rowwhen(search-condition)begin atomicend觸發(fā)器舉例觸發(fā)器舉例EMP(ENO, ENAME, SAL, JOB) EMP(ENO, ENAME, SAL, JOB) 職工工資增幅不得超過職工工資增幅不得超過10%10%create trigger create trigger RAISE_LIMI

22、T RAISE_LIMIT after update of SAL on after update of SAL on EMPEMPreferencing new row as referencing new row as nrow nrow old row as old row as oroworowfor each rowfor each rowwhen when (nrow.SAL 1.1 (nrow.SAL 1.1 * * orow.SAL) orow.SAL)begin atomicbegin atomicsignal SQLSTATE( 7500 ,Salary increase

23、signal SQLSTATE( 7500 ,Salary increase 10%)10%)endend觸發(fā)器舉例觸發(fā)器舉例當(dāng)帳戶透支時,將帳戶余額設(shè)為0,并建一筆貸款,其金額為透支額create triggercreate trigger overdraft-trigger after update onafter update on accountreferencing new row asreferencing new row as nrow for each rowfor each rowwhenwhen nrow.balance 0begin atomicbegin atomic

24、insert intoinsert into borrower( (selectselect customer-name, account-number fromfrom depositor wherewhere nrow.account-number = depositor.account-number); insert intoinsert into loan valuesvalues(nrow.account-number, nrow.branch-name, nrow.balance); updateupdate account set set balance = 0where whe

25、re account.account-number = nrow.account-numberendend 5.6 OLAPl數(shù)據(jù)倉庫的主要任務(wù)是數(shù)據(jù)倉庫的主要任務(wù)是OLAPOLAP(聯(lián)機分(聯(lián)機分析處理)析處理) lOLTPOLTP面向客戶、辦事員、操作員的事面向客戶、辦事員、操作員的事務(wù)和查詢處理務(wù)和查詢處理lOLAPOLAP面向經(jīng)理、主管、分析人員的數(shù)面向經(jīng)理、主管、分析人員的數(shù)據(jù)分析據(jù)分析lOLTPOLTP處理的數(shù)據(jù)是基本表中的元組數(shù)處理的數(shù)據(jù)是基本表中的元組數(shù)據(jù)據(jù)lOLAPOLAP處理的數(shù)據(jù)是不同粒度的匯總數(shù)處理的數(shù)據(jù)是不同粒度的匯總數(shù)據(jù)據(jù) OLAP綜述綜述lOLTPOLTP采用采用

26、E-RE-R模型和面向應(yīng)用的數(shù)據(jù)模型和面向應(yīng)用的數(shù)據(jù)庫設(shè)計庫設(shè)計 lOLAPOLAP采用星型或雪花模型和面向主題采用星型或雪花模型和面向主題的多維數(shù)據(jù)立方體設(shè)計的多維數(shù)據(jù)立方體設(shè)計 lOLTPOLTP主要功能是主要功能是DBMSDBMSlOLAPOLAP主要功能是檢索查詢工具,多維主要功能是檢索查詢工具,多維數(shù)據(jù)分析工具、統(tǒng)計分析及數(shù)據(jù)挖掘數(shù)據(jù)分析工具、統(tǒng)計分析及數(shù)據(jù)挖掘工具工具 多維數(shù)據(jù)模型多維數(shù)據(jù)模型lOLAPOLAP基于多維數(shù)據(jù)模型基于多維數(shù)據(jù)模型-數(shù)據(jù)立方體數(shù)據(jù)立方體 三季度一季度二季度寧波四季度杭州濟南萊蕪計算機電話電視 音響605825872970 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l數(shù)據(jù)立

27、方體允許以多維對數(shù)據(jù)建模和數(shù)據(jù)立方體允許以多維對數(shù)據(jù)建模和觀察,由維表和事實表組成觀察,由維表和事實表組成l例:商品銷售立方體例:商品銷售立方體l維表:時間維表、商品維表、商店維維表:時間維表、商品維表、商店維表、表、 地區(qū)維表地區(qū)維表l事實表:各維表的碼和度量(銷售金事實表:各維表的碼和度量(銷售金額、銷售量)額、銷售量) 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l多維數(shù)據(jù)模型分為星型模型和雪花模型多維數(shù)據(jù)模型分為星型模型和雪花模型 時間鍵時間鍵天天星期幾星期幾月月季季年年時間鍵時間鍵商品鍵商品鍵商店鍵商店鍵地區(qū)鍵地區(qū)鍵銷售金額銷售金額銷售量銷售量商店鍵商店鍵商店名商店名商 店 類商 店 類型型地區(qū)鍵地區(qū)鍵

28、街道街道城市城市省省國家國家商品鍵商品鍵商品名商品名商標(biāo)商標(biāo)類別類別供 應(yīng) 商供 應(yīng) 商類型類型商店維商店維時間維時間維銷售事實表銷售事實表地區(qū)維地區(qū)維商品維商品維 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l 時間鍵時間鍵天天星期幾星期幾月月季季年年時間鍵時間鍵商品鍵商品鍵商店鍵商店鍵地區(qū)鍵地區(qū)鍵銷售金額銷售金額銷售量銷售量商店鍵商店鍵商店名商店名商 店 類商 店 類型型地區(qū)鍵地區(qū)鍵街道街道城市鍵城市鍵商品鍵商品鍵商品名商品名商標(biāo)商標(biāo)類別類別供應(yīng)鍵供應(yīng)鍵商店維商店維時間維時間維銷售銷售事實表事實表地區(qū)維地區(qū)維商品維商品維城市鍵城市鍵城市城市省省國家國家供應(yīng)鍵供應(yīng)鍵供 應(yīng) 商供 應(yīng) 商類型類型 多維數(shù)據(jù)模型多維

29、數(shù)據(jù)模型l常用的多維數(shù)據(jù)模型,見曹譯本常用的多維數(shù)據(jù)模型,見曹譯本l產(chǎn)品缺陷與質(zhì)量分析產(chǎn)品缺陷與質(zhì)量分析l商標(biāo)管理商標(biāo)管理-促銷分析促銷分析l咨詢服務(wù)咨詢服務(wù)-費用分析費用分析l咨詢服務(wù)咨詢服務(wù)-使用分析使用分析l金融金融-帳目分析帳目分析l金融金融-信貸分析信貸分析 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l保健保健服務(wù)使用服務(wù)使用l人力資源人力資源雇員停工期和調(diào)動雇員停工期和調(diào)動l人力資源人力資源-工資津貼分析工資津貼分析l生產(chǎn)生產(chǎn)-循環(huán)時間循環(huán)時間l生產(chǎn)生產(chǎn)-庫存事務(wù)處理分析庫存事務(wù)處理分析l生產(chǎn)生產(chǎn)-勞動時間分析勞動時間分析l生產(chǎn)生產(chǎn)-定期發(fā)貨分析定期發(fā)貨分析 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l生產(chǎn)生產(chǎn)-產(chǎn)品

30、成本分析產(chǎn)品成本分析l生產(chǎn)生產(chǎn)-供應(yīng)能力分析供應(yīng)能力分析l產(chǎn)品管理產(chǎn)品管理-市場分析市場分析l銷售銷售-顧客人口統(tǒng)計分析顧客人口統(tǒng)計分析l銷售銷售-商品供應(yīng)線管理分析商品供應(yīng)線管理分析l銷售銷售-銷售分析銷售分析l銷售銷售-軟件產(chǎn)品銷售分析軟件產(chǎn)品銷售分析 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l銷售銷售-電信產(chǎn)品銷售分析電信產(chǎn)品銷售分析l服務(wù)中心服務(wù)中心-尋呼分析尋呼分析 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l數(shù)據(jù)挖掘查詢語言數(shù)據(jù)挖掘查詢語言DWQLDWQL定義定義l define cube define cube 銷售事實表銷售事實表 時間鍵,商品鍵,時間鍵,商品鍵,商店鍵,地區(qū)鍵商店鍵,地區(qū)鍵 : : 銷售金額銷

31、售金額, , 銷售量銷售量 ldefine dimension define dimension 時間時間 as (as (時間鍵時間鍵, ,天天, ,星期,星期,, ,月月, ,季季, ,年年) )ldefine dimension define dimension 商店商店 as (as (商店鍵,商店名,商店鍵,商店名,商店類別商店類別) ) 多維數(shù)據(jù)模型多維數(shù)據(jù)模型ldefine dimension define dimension 地區(qū)地區(qū) as (as (地區(qū)鍵地區(qū)鍵, ,街道街道, ,城市城市, ,省省, ,國家國家) )ldefine dimension define dime

32、nsion 商品商品 as (as (商品鍵,商品名,商品鍵,商品名,商品類別,商品大類別,供應(yīng)商類型商品類別,商品大類別,供應(yīng)商類型) )l維表、事實表三種存放形式維表、事實表三種存放形式l1 1)關(guān)系)關(guān)系OLAPOLAP(ROLAPROLAP)服務(wù)器)服務(wù)器l 使用關(guān)系表存放使用關(guān)系表存放l2 2)多維)多維OLAPOLAP(MOLAPMOLAP)服務(wù)器)服務(wù)器 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l基于數(shù)組的多維存儲引擎基于數(shù)組的多維存儲引擎l3)混合混合OLAPOLAP(HOLAPHOLAP)服務(wù)器)服務(wù)器l詳細數(shù)據(jù)保存在詳細數(shù)據(jù)保存在ROLAPROLAP,聚集數(shù)據(jù)保,聚集數(shù)據(jù)保存在存在MOLA

33、PMOLAPl產(chǎn)生事實表中的數(shù)據(jù)產(chǎn)生事實表中的數(shù)據(jù)l按關(guān)系按關(guān)系OLAPOLAP(ROLAPROLAP)服務(wù)器的關(guān))服務(wù)器的關(guān)系表存放維表、事實表的關(guān)系模式如系表存放維表、事實表的關(guān)系模式如下:下: 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l日常銷售日常銷售= =(時間鍵,商品鍵,商店鍵,(時間鍵,商品鍵,商店鍵,地區(qū)鍵,地區(qū)鍵, 銷售量,價格)銷售量,價格)l時間時間= (= (時間鍵時間鍵, ,天天, ,星期星期, ,月月, ,季季, ,年年) )l商店商店= (= (商店鍵,商店名,商店類別商店鍵,商店名,商店類別) )l地區(qū)地區(qū)= (= (地區(qū)鍵地區(qū)鍵, ,街道街道, ,城市城市, ,省省, ,國家國

34、家) )l商品商品= (= (商品鍵,商品名,商品類別,商品鍵,商品名,商品類別,商品大類別,供應(yīng)商類型商品大類別,供應(yīng)商類型) ) 多維數(shù)據(jù)模型多維數(shù)據(jù)模型l銷售事實表銷售事實表 = =(時間鍵,商品鍵,商(時間鍵,商品鍵,商店鍵,地區(qū)鍵,銷售金額,店鍵,地區(qū)鍵,銷售金額, 銷售量)銷售量)l形成銷售事實表的數(shù)據(jù)形成銷售事實表的數(shù)據(jù) lInsert into Insert into 銷售事實表銷售事實表 as aslselect s.select s.時間鍵,時間鍵,s. s.商品鍵,商品鍵,s. s.商店鍵,商店鍵,s. s.地區(qū)鍵地區(qū)鍵, sum(s., sum(s.銷售量銷售量* *s

35、. s.價格價格,) , sum(s.,) , sum(s.銷售量銷售量) ) 多維數(shù)據(jù)模型多維數(shù)據(jù)模型lFrom From 時間時間 as tas t,商品,商品 as ias i,商店,商店 as bas b,地區(qū)地區(qū)as l, as l, 日常銷售日常銷售 as sas slWhere Where s. s.時間鍵時間鍵=t=t. .時間鍵時間鍵 and s.and s.商品鍵商品鍵=i.=i.商店鍵商店鍵 and s.and s.地區(qū)鍵地區(qū)鍵=b.=b.商品鍵商品鍵 and and s. s.商店鍵商店鍵=l.=l.地區(qū)鍵地區(qū)鍵lGroup by Group by s. s.時間鍵,時

36、間鍵,s. s.商品鍵,商品鍵,s. s.商店商店鍵,鍵,s. s.地區(qū)鍵地區(qū)鍵l 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l以此立方體為例以此立方體為例 三季度一季度二季度寧波四季度 杭州濟南萊蕪計算機電話電視 音響605825872970672634619623812845867 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l維表的概念分層維表的概念分層l例如:例如:allall、國家、省、城市、街道國家、省、城市、街道 l分層的目的是為形成不同粒度的立方分層的目的是為形成不同粒度的立方體體l事實表中保存的數(shù)據(jù)是最基本的方格事實表中保存的數(shù)據(jù)是最基本的方格(日,(日, 商品名,街道),其中的數(shù)

37、據(jù)商品名,街道),其中的數(shù)據(jù)是最小粒度的數(shù)據(jù)是最小粒度的數(shù)據(jù)l取維表不同層的值形成不同立方體的取維表不同層的值形成不同立方體的和值,代表著和值,代表著OLAPOLAP的典型操作。的典型操作。 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l上卷(上卷(roll up)roll up)操作操作l沿維的概念分層向上攀升,然后在數(shù)據(jù)立方沿維的概念分層向上攀升,然后在數(shù)據(jù)立方體上進行的聚集。體上進行的聚集。l 例如:如上圖,例如:如上圖, 對于時間維:對于時間維:allall、國家、國家、省、城市、街道省、城市、街道 ,l維層次為城市時,(維層次為城市時,(一季度,濟南,音響)一季度,濟南,音響)=605,

38、(一季度,萊蕪,音響),(一季度,萊蕪,音響)=672,l維層次為省時,(維層次為省時,(一季度,山東,音響)一季度,山東,音響)=1544 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l下鉆(下鉆(drill down)drill down)操作操作l沿維的概念分層向下延伸,然后在大的數(shù)據(jù)沿維的概念分層向下延伸,然后在大的數(shù)據(jù)立方體上進行小立方體上值的細化。立方體上進行小立方體上值的細化。l例如:如上圖,對于時間維:例如:如上圖,對于時間維:allall、年、年, ,季季, ,月,月,星期星期, ,天天 l維層次為季度時,(維層次為季度時,(一季度,寧波,計算機)一季度,寧波,計算機)=605l

39、維層次為月時,(維層次為月時,(一月,寧波,計算機)一月,寧波,計算機)=200, ,(,(二月,寧波,計算機)二月,寧波,計算機)=203, ,(,(三月,寧波,計算機)三月,寧波,計算機)=202 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l切片(切片(slice)slice)操作操作l在數(shù)據(jù)立方體的一個維上選擇。在數(shù)據(jù)立方體的一個維上選擇。l例如:如上圖,對于商品維上確定為計算機,例如:如上圖,對于商品維上確定為計算機,可以切出一個片的立方體數(shù)據(jù)(可以切出一個片的立方體數(shù)據(jù)(16個格)個格)l切塊(切塊(dice)操作操作l在數(shù)據(jù)立方體的兩個或多個維上選擇。在數(shù)據(jù)立方體的兩個或多個維上選擇

40、。l例如:如上圖,對于商品維上確定為計算機,例如:如上圖,對于商品維上確定為計算機,電話。時間維上確定為一季度、二季度,電話。時間維上確定為一季度、二季度,可可以切出一個小立方體數(shù)據(jù)(以切出一個小立方體數(shù)據(jù)(16格)。若再格)。若再選地區(qū)維的寧波、杭州,切出立方體(選地區(qū)維的寧波、杭州,切出立方體(8個個格)格) 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l轉(zhuǎn)軸(轉(zhuǎn)軸(pivot)pivot)操作操作 l轉(zhuǎn)動數(shù)據(jù)的視角,一種目視操作轉(zhuǎn)動數(shù)據(jù)的視角,一種目視操作l例如:如上圖,對于商品維上確定為計算機,例如:如上圖,對于商品維上確定為計算機,可以切出一個片的立方體數(shù)據(jù),可以切出一個片的立方體數(shù)據(jù),

41、l視角是縱軸是時間,橫軸是城市,視角是縱軸是時間,橫軸是城市,l轉(zhuǎn)軸操作后,轉(zhuǎn)軸操作后,縱軸是城市,橫軸是時間縱軸是城市,橫軸是時間l轉(zhuǎn)軸操作也可以在三維上進行轉(zhuǎn)軸操作也可以在三維上進行 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l數(shù)據(jù)立方體的預(yù)計算數(shù)據(jù)立方體的預(yù)計算物化物化l以此立方體為例以此立方體為例 三季度一季度二季度寧波四季度 杭州濟南萊蕪計算機電話電視 音響605825872970672634619623812845867 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l三維:是格,(商品,季度,城市),三維:是格,(商品,季度,城市),保存最基本的數(shù)據(jù)保存最基本的數(shù)據(jù) (6464個格)個格

42、)l 二維:是條求和,二維:是條求和,(商品,季度)有(商品,季度)有1616個條,(商品,城市)有個條,(商品,城市)有1616個條,個條, (季度,城市)有(季度,城市)有1616個條個條,(,(6464條)條)l一維:是面求和,(商品)有一維:是面求和,(商品)有4 4個面,個面,(季度)有(季度)有4 4個面,(城市)有個面,(城市)有4 4個面,個面,l零維:記為零維:記為 all, all, 是整個立方體,是整個立方體,1 1個個 多維數(shù)據(jù)模型多維數(shù)據(jù)模型OLAP操作操作l查詢查詢 l例:找出例:找出20002000年各月的銷售總額和銷售總量年各月的銷售總額和銷售總量lSelect

43、 Select 月,商品名月,商品名 ,商店名,城市,商店名,城市,SUM(RSUM(R:銷售金額銷售金額) ), SUM(R:SUM(R:銷售量銷售量) )lfrom from 銷售事實表,時間銷售事實表,時間 ,商品,地區(qū),商,商品,地區(qū),商店店lwhere where 年年=“2000”=“2000”lCube by Cube by (月,商品名(月,商品名 ,商店名,城市,商店名,城市:R:R) 多維數(shù)據(jù)模型的多維數(shù)據(jù)模型的OLAP操作操作l說明:說明: Cube byCube by子句對后面的屬性月,商品子句對后面的屬性月,商品名名 ,商店名,城市,所有可能的集合計算,商店名,城市,

44、所有可能的集合計算聚集聚集l例:找出各季度的銷售總額和銷售總量例:找出各季度的銷售總額和銷售總量lSelect Select 商品鍵,商店鍵,季度,商品鍵,商店鍵,季度,SUM(SUM(銷售金銷售金額額) ), SUM(SUM(銷售量銷售量) )lfrom from 銷售事實表銷售事實表 as Aas A,時間,時間 as Bas BlWhere A.Where A.時間鍵時間鍵=B.=B.時間鍵時間鍵lCube by Cube by (商品鍵,商店鍵,季度)(商品鍵,商店鍵,季度) 多維數(shù)據(jù)模型的多維數(shù)據(jù)模型的OLAP操作操作l同樣,聚集的方式有:同樣,聚集的方式有:lCube by Cub

45、e by (“電視電視”,“濟南濟南”,“銀銀座座”,“,“一季度一季度”)l Cube by Cube by (all, “all, “濟南濟南”,“銀座銀座”, “, “一季一季度度”)lCube byCube by( all, all, “all, all, “銀座銀座”,“一季度一季度”)lCube by Cube by (all, all, allall, all, all, allall) 多維數(shù)據(jù)模型的多維數(shù)據(jù)模型的OLAP操作操作l同樣,聚集的方式有:同樣,聚集的方式有:lCube by Cube by (“電視電視”,“濟南濟南”,“銀銀座座”,“,“一季度一季度”)+ Cube by+ Cube by(“音音響響”,“,“濟南濟南”,“銀座銀座”,“,“一季度一季度”)lCube by Cube by (all, all, “all, all, “銀座銀座”,“一季一季度度”)/ Cube by/ Cube by( all, all, allall, all, all, allall)* *100%100% 多維數(shù)據(jù)模型的多維數(shù)據(jù)模型的OLAP操作操作l上卷:上卷:lSelect Select 商品鍵,商店鍵,日期鍵,商品鍵,商店鍵,日期鍵,SUM(SUM(銷售金額銷售金額) ),

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論