




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、DATABASE SYSTEM CONCEPTS第5SQL14.4 嵌入式SQL為什么使用嵌入式SQL?嵌入式SQL執(zhí)行過(guò)程需要解決的幾個(gè)問(wèn)題2為什么使用嵌入式SQL?有些操作對(duì)于交互式SQL是不可能的任務(wù)SQL的表達(dá)能力相比高級(jí)語(yǔ)言有一定的限制,有些數(shù)據(jù)訪問(wèn)要求單純使用SQL無(wú)法完成。一方面,SQL在逐漸增強(qiáng)自己的表達(dá)能力(參見(jiàn)習(xí)題4.10),另一方面,太多的擴(kuò)展會(huì)導(dǎo)致優(yōu)化能力及執(zhí)行效率的降低非聲明性動(dòng)作實(shí)際的應(yīng)用系統(tǒng)是非常復(fù)雜的,數(shù)據(jù)庫(kù)訪問(wèn)只是其中一個(gè)部件。有些動(dòng)作如與用戶(hù)交互、圖形化顯示數(shù)據(jù)等只能用高級(jí)語(yǔ)言實(shí)現(xiàn)3嵌入式SQL執(zhí)行過(guò)程主語(yǔ)言 + 嵌入SQL 預(yù)處理 主語(yǔ)言 + 函數(shù)調(diào)用 主
2、語(yǔ)言編譯器 主語(yǔ)言執(zhí)行程序 4需要解決的幾個(gè)問(wèn)題區(qū)分SQL語(yǔ)句與C語(yǔ)言語(yǔ)句嵌入的SQL語(yǔ)句以EXEC SQL開(kāi)始,以分號(hào)(;) 或END_EXEC結(jié)束EXEC SQL delete from PROF where DNO = 10;5需要解決的幾個(gè)問(wèn)題嵌入SQL語(yǔ)句與C語(yǔ)言之間的數(shù)據(jù)傳遞宿主變量C變量,既可以用在C語(yǔ)句中,也可用在SQL語(yǔ)句中,用來(lái)在兩者之間傳遞數(shù)據(jù)宿主變量的聲明聲明為通常的C變量,并將其放在下列標(biāo)識(shí)語(yǔ)句之間EXEC SQL BEGIN DECLARE SECTIONEXEC SQL END DECLARE SECTION6需要解決的幾個(gè)問(wèn)題EXEC SQL BEGIN DEC
3、LARE SECTIONint prof_no;char prof_name30;int salary;EXEC SQL END DECLARE SECTION7需要解決的幾個(gè)問(wèn)題注:宿主變量出現(xiàn)于SQL語(yǔ)句中時(shí),前面加(:)以區(qū)別列名 宿主變量可出現(xiàn)的地方:SQL的數(shù)據(jù)操縱語(yǔ)句中可出現(xiàn)常數(shù)的任何地方,select,fetch等語(yǔ)句的into子句中示例:EXEC SQL select PNAME , SAL into :prof_name , :salary from PROF where PNO = :prof_no ; 8需要解決的幾個(gè)問(wèn)題SQL與主語(yǔ)言之間操作方式的協(xié)調(diào)執(zhí)行方式的差別SQ
4、L:一次一集合C語(yǔ)言:一次一記錄游標(biāo)在查詢(xún)結(jié)果的記錄集合中移動(dòng)的指針若一個(gè)SQL語(yǔ)句返回單個(gè)元組,則不用游標(biāo)若一個(gè)SQL語(yǔ)句返回多個(gè)元組,則使用游標(biāo)9需要解決的幾個(gè)問(wèn)題不需要游標(biāo)的數(shù)據(jù)操作結(jié)果是一個(gè)元組的select語(yǔ)句EXEC SQL select PNAME , SALinto :prof_name, :salary from PROFwhere PNO = :prof_no ;10需要解決的幾個(gè)問(wèn)題insert語(yǔ)句 EXEC SQL insert into PROF values (:prof_no, :prof_name , :salary , :dept_no , : salary)
5、 ;delete語(yǔ)句 EXEC SQL delete from PROF where PNO :prof_no ;update語(yǔ)句 EXEC SQL update PROF set SAL = :salary where PNO = : prof_no ;11需要解決的幾個(gè)問(wèn)題需要游標(biāo)的數(shù)據(jù)操作當(dāng)select語(yǔ)句的結(jié)果中包含多個(gè)元組時(shí),使用游標(biāo)可以逐個(gè)存取這些元組活動(dòng)集:select語(yǔ)句返回的元組的集合當(dāng)前行:活動(dòng)集中當(dāng)前處理的那一行。游標(biāo)即是指向當(dāng)前行的指針12需要解決的幾個(gè)問(wèn)題定義與使用游標(biāo)的語(yǔ)句declare定義一個(gè)游標(biāo),使之對(duì)應(yīng)一個(gè)select語(yǔ)句 declare 游標(biāo)名 cursor
6、 forselect語(yǔ)句for update of列表名for update:該游標(biāo)可用于對(duì)當(dāng)前行的修改刪除open打開(kāi)游標(biāo),執(zhí)行對(duì)應(yīng)的查詢(xún),結(jié)果集為該游標(biāo)的活動(dòng)集open 游標(biāo)名13需要解決的幾個(gè)問(wèn)題fetch在活動(dòng)集中將游標(biāo)移到特定的行,并取出該行數(shù)據(jù)放到相應(yīng)的宿主變量中fetch 游標(biāo)名 into 宿主變量表close關(guān)閉游標(biāo),釋放活動(dòng)集及其所占資源。需要再使用該游標(biāo)時(shí),執(zhí)行open語(yǔ)句close 游標(biāo)名14需要解決的幾個(gè)問(wèn)題推進(jìn)游標(biāo)指針EXEC SQL FETCH INTO ,.FETCH語(yǔ)句通常用在一個(gè)循環(huán)結(jié)構(gòu)中,逐條取出結(jié)果集中的記錄進(jìn)行處理。許多關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)對(duì)FETCH語(yǔ)句
7、做了擴(kuò)充,允許向任意方向以任意步長(zhǎng)移動(dòng)游標(biāo)指針。關(guān)閉游標(biāo)EXEC SQL CLOSE釋放緩沖區(qū)及其他資源。15需要解決的幾個(gè)問(wèn)題說(shuō)明游標(biāo)EXEC SQL DECLARE CURSOR FOR 其中SELECT語(yǔ)句可以是簡(jiǎn)單查詢(xún),也可以是復(fù)雜的連接查詢(xún)和嵌套查詢(xún)。打開(kāi)游標(biāo)EXEC SQL OPEN執(zhí)行相應(yīng)的SELECT語(yǔ)句,把查詢(xún)記錄取到緩沖區(qū)中。這時(shí)游標(biāo)處于活動(dòng)狀態(tài),指針指向查詢(xún)結(jié)果集中第一條記錄。 16需要解決的幾個(gè)問(wèn)題SQL語(yǔ)句執(zhí)行信息反饋良好的應(yīng)用程序必須提供對(duì)錯(cuò)誤的處理,應(yīng)用程序需要知道SQL語(yǔ)句是否正確執(zhí)行了,發(fā)生錯(cuò)誤時(shí)的錯(cuò)誤代碼,執(zhí)行時(shí)遇到特殊情況時(shí)的警告信息SQL通訊域SQLCA
8、是一結(jié)構(gòu),每一嵌入SQL語(yǔ)句的執(zhí)行情況在其執(zhí)行完成后寫(xiě)入SQLCA結(jié)構(gòu)中的各變量中, 根據(jù)SQLCA中的內(nèi)容可以獲得每一嵌入SQL語(yǔ)句執(zhí)行后的信息,應(yīng)用程序就可以做相應(yīng)的處理在PB中,一個(gè)SQL語(yǔ)句執(zhí)行結(jié)束后,SQLCA.SQLCODE=0,100,-1分別表示執(zhí)行成功,未查找到符合條件的元組,執(zhí)行出錯(cuò)17PB中的游標(biāo)Declare cur_a cursor for Select a,b,c from;Open cur_a;If sqlca.sqlcode0 then returnDo while true Fetch cur_a into :va,:vb,:vc; If sqlca.sqlc
9、ode=100 then exit If sqlca.sqlcode=-1 then return LoopClose cur_a;If sqlca.sqlcode0 then return18嵌入式 SQL 編程嵌入式SQL語(yǔ)句與主語(yǔ)言之間的通信過(guò)程1數(shù)據(jù)庫(kù)工作單元與源程序工作單元之間通信主要包括: 向主語(yǔ)言傳遞SQL語(yǔ)句的執(zhí)行狀態(tài)信息,使主語(yǔ)言能夠據(jù)此控制程序流程。 主語(yǔ)言向SQL語(yǔ)句提供參數(shù)。 將SQL語(yǔ)句查詢(xún)數(shù)據(jù)庫(kù)的結(jié)果交主語(yǔ)言進(jìn)一步處理。19嵌入式 SQL 編程2嵌入式SQL與主語(yǔ)言之間通信的實(shí)現(xiàn)SQL語(yǔ)句通過(guò)SQL通信區(qū)SQLCA(SQL communiction area)向主語(yǔ)
10、言傳遞SQL執(zhí)行狀態(tài)信息。主語(yǔ)言通過(guò)自己的主變量(host vaiable)向SQL語(yǔ)句輸入數(shù)據(jù)參數(shù)。 兩者數(shù)據(jù)傳送通過(guò)主變量和游標(biāo)(crusor)實(shí)現(xiàn)。20嵌入式 SQL 編程3SQL通信區(qū)SQL語(yǔ)句執(zhí)行后,系統(tǒng)將當(dāng)前工作狀態(tài)送到SQL通信區(qū)SQLCA中。應(yīng)用程序從SQLCA中取出這些狀態(tài)信息,據(jù)此決定接下來(lái)執(zhí)行的語(yǔ)句。主語(yǔ)言程序中用EXEC SQL INCLUDE SQLCA定義通信區(qū)。SQLCA中有一個(gè)返回代碼的變量SQLCODE。 執(zhí)行完一條SQL語(yǔ)句后可以測(cè)試一下SQLCODE的值,如果是SUCCESS,則表示SQL語(yǔ)句成功,否則表示錯(cuò)誤。21嵌入式 SQL 編程4主變量在SQL語(yǔ)句
11、中使用的主語(yǔ)言程序的變量稱(chēng)為主變量。輸入主變量由主語(yǔ)言程序?qū)ζ滟x值,SQL語(yǔ)句引用。輸出主變量由SQL語(yǔ)句對(duì)其賦值,返回給主語(yǔ)言程序。一個(gè)主變量附帶一個(gè)任選的指示變量, 整型變量,指示主變量的值或條件。輸入主變量可以利用指示變量賦空值,輸出主變量可以利用指示變量檢測(cè)出是否空值,值是否被截?cái)唷?2嵌入式 SQL 編程舉例 例 查詢(xún)某個(gè)系全體學(xué)生的信息。系名在主程序中指定。EXEC SQL INCLUDE SQLCA EXEC SQL BEGIN DECLARE SECTION CHAR deptname (20) CHAR HSno (6) CHAR HSnmae (8) CHAR HSsex
12、(2)23嵌入式 SQL 編程舉例CHAR HSdept (20)INT HSageEXEC SQL END DECLARE SECTION;main() WHILE (gets(deptname != NULL) 24嵌入式 SQL 編程舉例EXEC SQL 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 25嵌入式 SQL 編程舉例:HSno,:HSname,:H
13、Ssex,:Hsage,:HSdept if (sqlca.sqlcodeSUCCESS) break; printf(%s, %s, %s,%d,%s, HSno,HSname, HSsex,Hsage,HSdept); ;26嵌入式 SQL 編程舉例 EXEC SQL CLOSE SX ; End;例 修改學(xué)生的年齡。 . main() Char yn (1); Int Newage;27嵌入式 SQL 編程舉例 gets(deptname ); EXEC SQL DECLARE SX CURSOR FOR SELECT Sno,Sname,Ssex,Sage,Sdept FROM Stu
14、dent WHERE Sdept=:deptname FOR UPDATE OF Sage ; EXEC SQL OPEN SX; WHILE(1) 28嵌入式 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(“修改該學(xué)生的年齡?”); 29嵌入式 SQL 編程舉例 scanf(“%c”,&yn); if(yn=
15、y or yn=Y) printf(輸入新的年齡:) scanf(%d,&Newage); EXEC SQL UPDATE Student SET Sage=:NEWAge WHERE CURRENT OF SX; 30嵌入式 SQL 編程舉例 ; ; EXEC SQL CLOSE SX; End ;UPDATE語(yǔ)句分為CURRENT形式和非CURRENT形式,非CURRENT形式是集合操作,一次修改所有滿(mǎn)足條件的記錄。CURRENT形式只修改其中某個(gè)記錄。 31嵌入式 SQL 編程舉例例 刪除某些學(xué)生的記錄。 . EXEC SQL DECLARE SX CURSOR FOR SELECT S
16、no,Sname,Ssex,Sage FROM Student WHERE SDept=:deptname; EXEC SQL OPEN SX WHILE(1) 32嵌入式 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(刪除該記錄?); 33嵌入式 SQL 編程舉例 scanf(%c,&yn); if(y
17、n=y or yn=Y) EXEC SQL DELETE FROM Student WHERE CURRENT OF Sx; ; EXEC SQL CLOSE SX; .345.3 觸發(fā)器觸發(fā)器:觸發(fā)器是一條語(yǔ)句,當(dāng)對(duì)數(shù)據(jù)庫(kù)做修改時(shí),它自動(dòng)被系統(tǒng)執(zhí)行觸發(fā)器的定義指明什么條件下觸發(fā)器被執(zhí)行指明觸發(fā)器執(zhí)行的動(dòng)作是什么觸發(fā)器的作用示警滿(mǎn)足特定條件時(shí)自動(dòng)執(zhí)行某項(xiàng)任務(wù)觸發(fā)器事件Insert、 delete、update35觸發(fā)器定義create trigger trigger-namebeginafterinsertdeleteupdateon table-nameof column-namerefer
18、encingold row as identifiernew row as identifiertriggered-SQL-statementfor each rowwhen(search-condition)begin atomicend36觸發(fā)器舉例EMP(ENO, ENAME, SAL, JOB) 職工工資增幅不得超過(guò)10%create trigger RAISE_LIMIT after update of SAL on EMPreferencing new row as nrow old row as orowfor each rowwhen (nrow.SAL 1.1 * orow.
19、SAL)begin atomicsignal SQLSTATE( 7500 ,Salary increase 10%)end37觸發(fā)器舉例當(dāng)帳戶(hù)透支時(shí),將帳戶(hù)余額設(shè)為0,并建一筆貸款,其金額為透支額create trigger overdraft-trigger after update on accountreferencing new row as nrow for each rowwhen nrow.balance 0begin atomic insert into borrower(select customer-name, account-number from depositor
20、where nrow.account-number = depositor.account-number); insert into loan values(nrow.account-number, nrow.branch-name, nrow.balance); update account set balance = 0where account.account-number = nrow.account-numberend38 5.6 OLAP數(shù)據(jù)倉(cāng)庫(kù)的主要任務(wù)是OLAP(聯(lián)機(jī)分析處理) OLTP面向客戶(hù)、辦事員、操作員的事務(wù)和查詢(xún)處理OLAP面向經(jīng)理、主管、分析人員的數(shù)據(jù)分析OLTP處
21、理的數(shù)據(jù)是基本表中的元組數(shù)據(jù)OLAP處理的數(shù)據(jù)是不同粒度的匯總數(shù)據(jù)39 OLAP綜述OLTP采用E-R模型和面向應(yīng)用的數(shù)據(jù)庫(kù)設(shè)計(jì) OLAP采用星型或雪花模型和面向主題的多維數(shù)據(jù)立方體設(shè)計(jì) OLTP主要功能是DBMSOLAP主要功能是檢索查詢(xún)工具,多維數(shù)據(jù)分析工具、統(tǒng)計(jì)分析及數(shù)據(jù)挖掘工具 40 多維數(shù)據(jù)模型OLAP基于多維數(shù)據(jù)模型-數(shù)據(jù)立方體 三季度一季度二季度寧波四季度杭州濟(jì)南萊蕪計(jì)算機(jī)電話(huà)電視音響60582587297041 多維數(shù)據(jù)模型數(shù)據(jù)立方體允許以多維對(duì)數(shù)據(jù)建模和觀察,由維表和事實(shí)表組成例:商品銷(xiāo)售立方體維表:時(shí)間維表、商品維表、商店維表、 地區(qū)維表事實(shí)表:各維表的碼和度量(銷(xiāo)售金額、
22、銷(xiāo)售量)42 多維數(shù)據(jù)模型多維數(shù)據(jù)模型分為星型模型和雪花模型 時(shí)間鍵天星期幾月季年時(shí)間鍵商品鍵商店鍵地區(qū)鍵銷(xiāo)售金額銷(xiāo)售量商店鍵商店名商店類(lèi)型地區(qū)鍵街道城市省國(guó)家商品鍵商品名商標(biāo)類(lèi)別供應(yīng)商類(lèi)型商店維時(shí)間維銷(xiāo)售事實(shí)表地區(qū)維商品維43 多維數(shù)據(jù)模型時(shí)間鍵天星期幾月季年時(shí)間鍵商品鍵商店鍵地區(qū)鍵銷(xiāo)售金額銷(xiāo)售量商店鍵商店名商店類(lèi)型地區(qū)鍵街道城市鍵商品鍵商品名商標(biāo)類(lèi)別供應(yīng)鍵商店維時(shí)間維銷(xiāo)售事實(shí)表地區(qū)維商品維城市鍵城市省國(guó)家供應(yīng)鍵供應(yīng)商類(lèi)型44 多維數(shù)據(jù)模型常用的多維數(shù)據(jù)模型,見(jiàn)曹譯本產(chǎn)品缺陷與質(zhì)量分析商標(biāo)管理-促銷(xiāo)分析咨詢(xún)服務(wù)-費(fèi)用分析咨詢(xún)服務(wù)-使用分析金融-帳目分析金融-信貸分析45 多維數(shù)據(jù)模型保健服務(wù)
23、使用人力資源雇員停工期和調(diào)動(dòng)人力資源-工資津貼分析生產(chǎn)-循環(huán)時(shí)間生產(chǎn)-庫(kù)存事務(wù)處理分析生產(chǎn)-勞動(dòng)時(shí)間分析生產(chǎn)-定期發(fā)貨分析46 多維數(shù)據(jù)模型生產(chǎn)-產(chǎn)品成本分析生產(chǎn)-供應(yīng)能力分析產(chǎn)品管理-市場(chǎng)分析銷(xiāo)售-顧客人口統(tǒng)計(jì)分析銷(xiāo)售-商品供應(yīng)線(xiàn)管理分析銷(xiāo)售-銷(xiāo)售分析銷(xiāo)售-軟件產(chǎn)品銷(xiāo)售分析47 多維數(shù)據(jù)模型銷(xiāo)售-電信產(chǎn)品銷(xiāo)售分析服務(wù)中心-尋呼分析48 多維數(shù)據(jù)模型數(shù)據(jù)挖掘查詢(xún)語(yǔ)言DWQL定義 define cube 銷(xiāo)售事實(shí)表 時(shí)間鍵,商品鍵,商店鍵,地區(qū)鍵 : 銷(xiāo)售金額, 銷(xiāo)售量 define dimension 時(shí)間 as (時(shí)間鍵,天,星期,,月,季,年)define dimension 商店 as
24、(商店鍵,商店名,商店類(lèi)別)49 多維數(shù)據(jù)模型define dimension 地區(qū) as (地區(qū)鍵,街道,城市,省,國(guó)家)define dimension 商品 as (商品鍵,商品名,商品類(lèi)別,商品大類(lèi)別,供應(yīng)商類(lèi)型)維表、事實(shí)表三種存放形式1)關(guān)系OLAP(ROLAP)服務(wù)器 使用關(guān)系表存放2)多維OLAP(MOLAP)服務(wù)器50 多維數(shù)據(jù)模型基于數(shù)組的多維存儲(chǔ)引擎3)混合OLAP(HOLAP)服務(wù)器詳細(xì)數(shù)據(jù)保存在ROLAP,聚集數(shù)據(jù)保存在MOLAP產(chǎn)生事實(shí)表中的數(shù)據(jù)按關(guān)系OLAP(ROLAP)服務(wù)器的關(guān)系表存放維表、事實(shí)表的關(guān)系模式如下: 51 多維數(shù)據(jù)模型日常銷(xiāo)售=(時(shí)間鍵,商品鍵,
25、商店鍵,地區(qū)鍵, 銷(xiāo)售量,價(jià)格)時(shí)間= (時(shí)間鍵,天,星期,月,季,年)商店= (商店鍵,商店名,商店類(lèi)別)地區(qū)= (地區(qū)鍵,街道,城市,省,國(guó)家)商品= (商品鍵,商品名,商品類(lèi)別,商品大類(lèi)別,供應(yīng)商類(lèi)型)52 多維數(shù)據(jù)模型銷(xiāo)售事實(shí)表 =(時(shí)間鍵,商品鍵,商店鍵,地區(qū)鍵,銷(xiāo)售金額, 銷(xiāo)售量)形成銷(xiāo)售事實(shí)表的數(shù)據(jù) Insert into 銷(xiāo)售事實(shí)表 asselect s.時(shí)間鍵,s.商品鍵,s.商店鍵,s.地區(qū)鍵, sum(s.銷(xiāo)售量*s.價(jià)格,) , sum(s.銷(xiāo)售量)53 多維數(shù)據(jù)模型From 時(shí)間 as t,商品 as i,商店 as b,地區(qū)as l, 日常銷(xiāo)售 as sWhere
26、s.時(shí)間鍵=t.時(shí)間鍵 and s.商品鍵=i.商店鍵 and s.地區(qū)鍵=b.商品鍵 and s.商店鍵=l.地區(qū)鍵Group by s.時(shí)間鍵,s.商品鍵,s.商店鍵,s.地區(qū)鍵 54 多維數(shù)據(jù)模型OLAP操作以此立方體為例 三季度一季度二季度寧波四季度 杭州濟(jì)南萊蕪計(jì)算機(jī)電話(huà)電視音響60582587297067263461962381284586755 多維數(shù)據(jù)模型OLAP操作維表的概念分層例如:all、國(guó)家、省、城市、街道 分層的目的是為形成不同粒度的立方體事實(shí)表中保存的數(shù)據(jù)是最基本的方格(日, 商品名,街道),其中的數(shù)據(jù)是最小粒度的數(shù)據(jù)取維表不同層的值形成不同立方體的和值,代表著OL
27、AP的典型操作。56 多維數(shù)據(jù)模型OLAP操作上卷(roll up)操作沿維的概念分層向上攀升,然后在數(shù)據(jù)立方體上進(jìn)行的聚集。 例如:如上圖, 對(duì)于時(shí)間維:all、國(guó)家、省、城市、街道 ,維層次為城市時(shí),(一季度,濟(jì)南,音響)=605,(一季度,萊蕪,音響)=672,維層次為省時(shí),(一季度,山東,音響)=154457 多維數(shù)據(jù)模型OLAP操作下鉆(drill down)操作沿維的概念分層向下延伸,然后在大的數(shù)據(jù)立方體上進(jìn)行小立方體上值的細(xì)化。例如:如上圖,對(duì)于時(shí)間維:all、年,季,月,星期,天 維層次為季度時(shí),(一季度,寧波,計(jì)算機(jī))=605維層次為月時(shí),(一月,寧波,計(jì)算機(jī))=200, ,
28、(二月,寧波,計(jì)算機(jī))=203, ,(三月,寧波,計(jì)算機(jī))=20258 多維數(shù)據(jù)模型OLAP操作切片(slice)操作在數(shù)據(jù)立方體的一個(gè)維上選擇。例如:如上圖,對(duì)于商品維上確定為計(jì)算機(jī),可以切出一個(gè)片的立方體數(shù)據(jù)(16個(gè)格)切塊(dice)操作在數(shù)據(jù)立方體的兩個(gè)或多個(gè)維上選擇。例如:如上圖,對(duì)于商品維上確定為計(jì)算機(jī),電話(huà)。時(shí)間維上確定為一季度、二季度,可以切出一個(gè)小立方體數(shù)據(jù)(16格)。若再選地區(qū)維的寧波、杭州,切出立方體(8個(gè)格)59 多維數(shù)據(jù)模型OLAP操作轉(zhuǎn)軸(pivot)操作 轉(zhuǎn)動(dòng)數(shù)據(jù)的視角,一種目視操作例如:如上圖,對(duì)于商品維上確定為計(jì)算機(jī),可以切出一個(gè)片的立方體數(shù)據(jù),視角是縱軸是時(shí)
29、間,橫軸是城市,轉(zhuǎn)軸操作后,縱軸是城市,橫軸是時(shí)間轉(zhuǎn)軸操作也可以在三維上進(jìn)行60 多維數(shù)據(jù)模型OLAP操作數(shù)據(jù)立方體的預(yù)計(jì)算物化以此立方體為例 三季度一季度二季度寧波四季度 杭州濟(jì)南萊蕪計(jì)算機(jī)電話(huà)電視音響60582587297067263461962381284586761 多維數(shù)據(jù)模型OLAP操作三維:是格,(商品,季度,城市),保存最基本的數(shù)據(jù) (64個(gè)格) 二維:是條求和,(商品,季度)有16個(gè)條,(商品,城市)有16個(gè)條, (季度,城市)有16個(gè)條,(64條)一維:是面求和,(商品)有4個(gè)面,(季度)有4個(gè)面,(城市)有4個(gè)面,零維:記為 all, 是整個(gè)立方體,1個(gè)62 多維數(shù)據(jù)模型
30、OLAP操作查詢(xún) 例:找出2000年各月的銷(xiāo)售總額和銷(xiāo)售總量Select 月,商品名 ,商店名,城市,SUM(R:銷(xiāo)售金額), SUM(R:銷(xiāo)售量)from 銷(xiāo)售事實(shí)表,時(shí)間 ,商品,地區(qū),商店where 年=“2000”Cube by (月,商品名 ,商店名,城市:R)63 多維數(shù)據(jù)模型的OLAP操作說(shuō)明: Cube by子句對(duì)后面的屬性月,商品名 ,商店名,城市,所有可能的集合計(jì)算聚集例:找出各季度的銷(xiāo)售總額和銷(xiāo)售總量Select 商品鍵,商店鍵,季度,SUM(銷(xiāo)售金額), SUM(銷(xiāo)售量)from 銷(xiāo)售事實(shí)表 as A,時(shí)間 as BWhere A.時(shí)間鍵=B.時(shí)間鍵Cube by (商品鍵,商店鍵,季度)64 多維數(shù)據(jù)模型的OLAP操作同樣,聚集的方式有:Cube by (“電視”,“濟(jì)南”,“銀座”,“一季度”) Cube by (all, “濟(jì)南”,“銀座”, “一季度”)Cube by( all, all, “銀座”,“一季度”)Cube by (all,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人定制刀具合同范本
- 買(mǎi)賣(mài)礦粉合同范本
- 解除飯店合伙合同范本
- it外包開(kāi)發(fā)合同范本
- 養(yǎng)殖小鳥(niǎo)出售合同范本
- 制造商供貨合同范本
- 協(xié)議股東合同范本
- 合伙生意分工合同范本
- 占他人土地建房合同范本
- 公租房 租房合同范本
- 經(jīng)營(yíng)性公墓建設(shè)標(biāo)準(zhǔn)
- 10KV系統(tǒng)短路電流整定計(jì)算表格
- 初中英語(yǔ) 滬教牛津版 8B U1-4 More Practice Success for Spring Buds 課件
- 壓水堆核電廠在役檢查課件
- 前房角鏡檢查法及其在眼科的應(yīng)用教學(xué)課件
- 2017年度項(xiàng)目生產(chǎn)部工作計(jì)劃推進(jìn)表甘特圖
- 地下室車(chē)庫(kù)綜合管線(xiàn)施工布置
- 采購(gòu)訂單模板
- 巴馬格紡絲控制系統(tǒng)軟件說(shuō)明書(shū)(共46頁(yè))
- 完整解讀2021年《建設(shè)工程抗震管理?xiàng)l例》PPT教學(xué)講座課件
- 肺結(jié)核患者管理ppt課件
評(píng)論
0/150
提交評(píng)論