FULLOUTERJOIN运算子.ppt

上传人:ga****84 文档编号:321698 上传时间:2018-09-22 格式:PPT 页数:42 大小:2.59MB
下载 相关 举报
FULLOUTERJOIN运算子.ppt_第1页
第1页 / 共42页
FULLOUTERJOIN运算子.ppt_第2页
第2页 / 共42页
FULLOUTERJOIN运算子.ppt_第3页
第3页 / 共42页
FULLOUTERJOIN运算子.ppt_第4页
第4页 / 共42页
FULLOUTERJOIN运算子.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、黃三益2008 資料庫的核心理論與實務第四版,5-1,第五章關聯模式的運算,目的基本關聯代數運算子SELECTPROJECT集合運算子交集聯集和差集卡迪森乘積進階關聯代數運算子JOIN運算子除法運算子新的關聯代數運算子OUTERJOIN運算子關聯的分群和彙總函數範例關聯邏輯計算法,黃三益2008 資料庫的核心理論與實務第四版,5-2,目的,知名的運算方式包括關聯代數(Relational Algebra)和關聯邏輯計算法 (Relational Calculus)關聯代數裡定義了一些運算子,用來操作關聯 關聯代數運算子是作用在關聯上,而其運算的結果也是一個關聯就如同整數的加法(+)和減法()

2、關聯代數裡的運算子可分成兩類集合運算子關聯代數專屬運算子 關聯代數和關聯邏輯計算法是下一章要介紹的SQL之理論基礎,黃三益2008 資料庫的核心理論與實務第四版,5-3,基本關聯代數運算子 (SELECT運算子, ),從一個關聯的數個序列值中選出滿足某個條件的序列值 一般式:Result = (R) 關聯名稱為Result,屬性則同於R的屬性序列值滿足的R的序列值範例: Result = unitPrice 500 (Product)Result = unitPrice 500 AND category=Book (Product),黃三益2008 資料庫的核心理論與實務第四版,5-4,練習5

3、-1,參考圖4-4的資料庫,請列出以下運算式的執行結果:Result = category=CD (unitPrice 300 (Product),黃三益2008 資料庫的核心理論與實務第四版,5-5,基本關聯代數運算子 (PROJECT運算子, ),從一個關聯的屬性中選出某些屬性一般式:Result =(R) 關聯綱目:名稱為Result,屬性則是R中裡的屬性序列值:R的序列值中屬於裡的屬性值所組成的序列值,此外,重複的序列值只會保留一筆 範例 Result =category, unitPrice (Product),黃三益2008 資料庫的核心理論與實務第四版,5-6,基本關聯代數運算子

4、 (PROJECT運算子, )(Cont.),PROJECT運算子常與SELECT運算子搭配使用範例:列出所有單價超過500元的商品之商品名稱和定價 Result=name, unitPrice (unitPrice 500 (Product) 或ExpProd=unitPrice 500(Product)Result=name, unitPrice (ExpProd),黃三益2008 資料庫的核心理論與實務第四版,5-7,練習5-2,參考圖4-4的資料庫,請列出以下運算式的執行結果: Result =pName, unitPrice ( category=CD (unitPrice 300

5、(Product),Result,黃三益2008 資料庫的核心理論與實務第四版,5-8,集合運算子,常見的集合運算子包括交集(Intersection),以符號 表示聯集(Union),以符號 表示差集(Difference),以符號 表示但這些關聯的屬性個數和其型態必須相同,這種性質稱為聯集相容性聯集的結果裡,重複的序列值也只保留一筆範例如下頁圖,黃三益2008 資料庫的核心理論與實務第四版,5-9,(b)Result (sId, sName) =StudentAssistant(c)Result (sId, sName) =StudentAssistant(d)Result (sId, s

6、Name) =Student Assistant(e)Result (aId, aName) =Assistant Student,黃三益2008 資料庫的核心理論與實務第四版,5-10,集合運算子 (卡迪森乘積),兩個集合也可以做相乘(又稱為卡迪森乘積,Cartesian Product),此時其結果的元素就是兩個集合裡的元素兩兩匹配 兩個關聯R和S相乘,表示成Result = RS關聯綱目:名稱為Result,屬性為R的屬性和S的屬性合起來序列值:R的序列值和S的序列值兩兩結合起來關聯相乘後的序列值數目常常很龐大,假設R有p個屬性和n筆序列值,S有t個屬性和m筆序列值。則RS會有p+t個屬

7、性和mn筆序列值,黃三益2008 資料庫的核心理論與實務第四版,5-11,TransactionCart會有9+3個屬性和43筆序列值,考慮以下的Transaction和Cart資料表和其卡迪森乘積,黃三益2008 資料庫的核心理論與實務第四版,5-12,練習5-3,參考圖4-4的資料庫,請列出以下運算式的執行結果:Result = Product.pNo=Author.pNo (Product Author),黃三益2008 資料庫的核心理論與實務第四版,5-13,JOIN運算子( ),將兩個關聯JOIN的意義就如同將兩個關聯相乘後再用SELECT運算子找出所需的序列值一般式:Result

8、= R S 關聯綱目:名稱為Result,屬性為R的屬性和S的屬性合起來序列值:滿足的R序列值和S序列值兩兩結合起來範例:Result = Transaction Transaction.tNo=Cart.tNo Cart R Transaction.tNo=Cart.tNo S= Transaction.tNo=Cart.tNo (RS),黃三益2008 資料庫的核心理論與實務第四版,5-14,JOIN運算子( ) (Cont.),Result = Transaction Transaction.tNo=Cart.tNo Cart,黃三益2008 資料庫的核心理論與實務第四版,5-15,JO

9、IN運算子(Cont. ),範例:Result = Cart Cart.mId=Order.mId AND Cart.cartTime=Order.cartTimeOrder,黃三益2008 資料庫的核心理論與實務第四版,5-16,JOIN運算子(Cont. ),假設R有p個屬性和n筆序列值,S有t個屬性和m筆序列值。則RS會有p+t個屬性,至於其序列值的筆數最少有0筆,最多則有mn筆 JOIN運算子也可以串連起來形成較複雜的JOIN運算式:TransCart = Transaction Transaction.tNo=Cart.tNo CartResult1 = TransCart Tran

10、sCart.mId=Order.mId AND TransCart.cartTime=Order.cartTimeOrder其結果等同於CartOrder = Cart Cart.mId=Order.mId AND Cart.cartTime=Order.cartTimeOrderResult2 = Transaction Transaction.tNo=CartOrder.tNo CartOrder,黃三益2008 資料庫的核心理論與實務第四版,5-17,JOIN運算子(Cont. ),等同匹配運算式(EQUIJOIN) :配合條件用的比較運算子都是等號(=) 等同匹配運算式的結果會有屬性值

11、重複的現象 NATURAL JOIN(*) 去除重複屬性。一般式為Result = R*S 關聯綱目:名稱為Result,屬性為R的屬性和S的屬性裡的非重複屬性序列值:假設C為R和S的共同屬性(即C裡的每一個屬性名稱同時出現在R和S),則將C屬性值一樣的R序列值和S序列值兩兩結合起來,並去除重複屬性值,黃三益2008 資料庫的核心理論與實務第四版,5-18,JOIN運算子(Cont. ),範例:Result = Transaction * Cart(結果有幾個屬性?),黃三益2008 資料庫的核心理論與實務第四版,5-19,JOIN運算子(Cont. ),Result = Cart*Order

12、(結果有幾個屬性?),黃三益2008 資料庫的核心理論與實務第四版,5-20,除法運算子(),假設R的屬性集合為KR, S的屬性集合為KS,且KSKR,才可以將R除以S。一般式為 Result = R S 關聯綱目:名稱為Result,屬性為R的屬性去除S的屬性(也就是說KResult=KR-KS)序列值:將R按照KResult的屬性值分成數群,對於每一群(假設其屬性值為t),若其包括所有S的序列值,則t為Result裡的序列值 範例:有哪些會員曾經購買過任賢齊專輯三or蔡依林專輯二這兩張 CDR(mId, pNo) =transMid, pNo (Record*Transaction);S

13、=pNo (pName =任賢齊專輯三 OR pName = 蔡依林專輯二 (Product);Result = R S;,黃三益2008 資料庫的核心理論與實務第四版,5-21,除法運算子(Cont.),黃三益2008 資料庫的核心理論與實務第四版,5-22,完整的關聯代數運算子,任何DBMS只要能表達之前介紹的運算子所構成的所有運算式就稱為是具關聯完整性(Relational complete)的DBMS有些運算子可也用另一些運算子來取代交集()可以聯集()和差集()來表達:因為RS=(RS) (RS) (SR)JOIN可以用關聯乘法()和SELECT來表達:因為R S = (RS)除法(

14、)可以用關聯乘法()差集()和SELECT來表達。考慮 T(Y) = R(Z)S(X),其中 Y=ZX,XZ。 我們可用以下運算式得到同樣的T:T1Y(R)T2Y(ST1)R)T T1T2 因此,是一組完整的關聯代數運算子,黃三益2008 資料庫的核心理論與實務第四版,5-23,關聯代數運算式範例一,列出系統分析理論與實務的作者姓名Product (商品編號pNo, 商品名稱pName, 定價unitPrice, 種類category) Author (商品編號pNo, 創作者名稱name)Temp=pNo (pName=系統分析理論與實務 (Product)Result= name(Temp

15、 * Author),系統分析理論與實務,黃三益2008 資料庫的核心理論與實務第四版,5-24,關聯代數運算式範例一,列出所有購買過“系統分析理論與實務”的會員之會員編號和會員姓名 Product (商品編號pNo, 商品名稱pName, 定價unitPrice, 種類category)Record (交易編號tNo, 商品編號pNo, 交易數量amount, 售價salePrice ) Transaction (交易編號tNo , 會員編號transMId, 交易方式method, .)Member (會員編號mId, 姓名name, 會員ID pId, ) Temp_book= pNo

16、(pName=系統分析理論與實務 (Product)Temp_trans= transMid ( Temp_book * Record * Transaction) Result= mId, name(Temp_transtransMid=mId Member),系統分析理論與實務,黃三益2008 資料庫的核心理論與實務第四版,5-25,關聯代數運算式範例一,對於會員編號為b0905555的會員,列出其姓名以及所(直接)介紹的會員之會員編號姓名Member (會員編號mId, 會員姓名name, 會員ID pId, , 介紹人introducer)Member (會員編號mId, 會員姓名na

17、me, 會員ID pId, ,介紹人introducer)Mem5555= mId, name(mId=b0905555 (Member)Result=Mem5555.name,Member.mId,Member.name (Mem5555Mem5555.mId= introducer (Member),b0905555,黃三益2008 資料庫的核心理論與實務第四版,5-26,關聯代數運算式範例一,列出所有瀏覽過或購買過系統分析理論與實務 的會員之會員編號和會員姓名這些會員包括:瀏覽過系統分析理論與實務 的會員,以及購買過系統分析理論與實務 的會員 Product (商品編號pNo, 商品名稱

18、pName, 定價unitPrice, 種類category)Browse (會員編號mId, 瀏覽時間browseTime, 商品編號pNo )Record (交易編號tNo, 商品編號pNo, 交易數量amount, 售價salePrice ) Transaction (交易編號tNo , 會員編號transMid, 交易方式method, .)Member (會員編號mId, 姓名name, 會員ID pId, )Temp_book = pNo(pName=系統分析理論與實務 (Product)Browse_member = mId(Temp_book * Browse)Trans_me

19、mber(mId) = transMid(Temp_book * Record * Transaction) Result = mId, name(Browse_member Trans_member)*Member),系統分析理論與實務,黃三益2008 資料庫的核心理論與實務第四版,5-27,關聯代數運算式範例一,列出購買所有Jackey 所創作商品的會員之會員編號和會員姓名 先找出 Jackey 創作的所有商品,以及每一個會員所購買的所有商品,然後做關聯的除法() Jacky_product(pNo) = pNo(name=Jackey (Author)Member_product (mI

20、d, pNo)= transMid, pNo(Transaction * Record)Jacky_member = Member_productJacky_productResult = mId, name(Jacky_member * Member),黃三益2008 資料庫的核心理論與實務第四版,5-28,OUTER JOIN運算子,一般的JOIN(又稱為INNER JOIN)會去除兩個關聯裡沒有被匹配到的序列值考慮以下查詢:M = mId, name, birthday, introducer (Member)I(smId, sName) = mId, name(Member)Resul

21、t = mId, name, birthday, sName (M introducer=smId I)沒有介紹人的會員會在Result(mId)裡嗎? 沒有當介紹人的會員會在Result(sName)裡嗎?關聯代數裡定義了OUTER JOIN,包括三種運算子LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN,黃三益2008 資料庫的核心理論與實務第四版,5-29,LEFT OUTER JOIN運算子( ),保留左邊關聯,其一般式為Result = R S關聯綱目:同於R S序列值:R S的序列值再加上沒有與S配對的R的序列值加上空值(在S的屬性)

22、範例:Transaction Transaction.tNo=Cart.tNo Cart (Transaction和Cart的範例資料庫),黃三益2008 資料庫的核心理論與實務第四版,5-30,RIGHT OUTER JOIN運算子 (),保留右邊關聯,其一般式為Result = R S關聯綱目:同於R S序列值:RS的序列值再加上沒有與R配對的S的序列值加上空值(在R的屬性)範例:TransactionTransaction.tno=Cart.tnoCart Cart(Transaction和Cart的範例資料庫),黃三益2008 資料庫的核心理論與實務第四版,5-31,FULL OUTE

23、R JOIN運算子 (),保留左右兩邊關聯,其一般式為Result = R S關聯綱目:同於R S序列值:RS的序列值再加上沒有與S配對的R的序列值加上空值(在S的屬性)以及沒有與R配對的S的序列值加上空值(在R的屬性)範例:TransactionTransaction.tno=Cart.tno Cart(Transaction和Cart的範例資料庫),黃三益2008 資料庫的核心理論與實務第四版,5-32,關聯代數運算式範例二,列出會員之會員編號和姓名,以及其所瀏覽過的商品名稱 (如果有的話)表示一會員若沒有瀏覽過任何商品,她的會員編號和姓名也要列出。本題應該用LEFT OUTER JOIN

24、 BrowseProduct = Browse * ProductMemberBrowse = MemberMember.mId=BrowseProduct.mIdBrowseProduct)Result= Member_mId, name, pName MemberBrowse,黃三益2008 資料庫的核心理論與實務第四版,5-33,關聯的分群和彙總函數,為滿足統計報表的功能,關聯代數提供運算子來計算彙總,一般式如下:Result = (R)關聯綱目:名稱為Result,屬性為加上序列值:將R依的屬性值分群,每一群序列值再依裡的函數運算成一序列值,黃三益2008 資料庫的核心理論與實務第四版

25、,5-34,關聯的分群和彙總函數(Cont.),Result(transNo, totalAmount) = tNoSUM salePrice(Record),關聯的分群和彙總函數(Cont.),Result(totalProduct, averagePrice) = COUNT pNo, AVERAGE unitPrice(Product),黃三益2008 資料庫的核心理論與實務第四版,5-35,黃三益2008 資料庫的核心理論與實務第四版,5-36,關聯的分群和彙總函數,五個標準的彙總函數:SUM:加總。AVERAGE:取數個屬性值的平均值。比如categoryAVERAGE unitPr

26、ice(Product)COUNT: 取屬性值的總個數。比如categoryCOUNT pNo(Product)MAX:取數個屬性值的最大值。比如categoryMAX unitPrice(Product)MIN:取數個屬性值的最小值。比如categoryMIN unitPrice(Product),黃三益2008 資料庫的核心理論與實務第四版,5-37,關聯代數運算式範例二,列出所有包括兩項以上商品的交易之交易編號和會員姓名 T1(tNo, mId, pNo)= tNo, transMid, pNo(Transaction * Record)T2(tNo, mId, total) = tNo

27、, mId COUNT pNo (T1)T3= total2 (T2)Result= tNo, name(T3 * Member),黃三益2008 資料庫的核心理論與實務第四版,5-38,關聯代數運算式範例,列出每一位會員的會員編號、姓名,以及所瀏覽過的商品總數 MemberBrowse(mId, name, pNo)=Member_mId, name, pNo(Member Member.mId=Browse.mIdBrowse)Result= mId, name COUNT pNo(MemberBrowse),黃三益2008 資料庫的核心理論與實務第四版,5-39,關聯邏輯計算,關聯邏輯計算法(Relational calculus)是用邏輯計算方式來處理關聯兩種形式:序列值邏輯計算(tuple calculus)本章所採用定義域邏輯計算(domain calculus)邏輯計算方式與代數計算最大的不同點是邏輯計算式裡頭的子運算式是沒有次序性的。關聯代數是一種程序式的語言關聯邏輯計算法是一種宣告式的語言,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。