版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
授課順序:5授課學(xué)時:2學(xué)時教學(xué)方式:講授基本要求:掌握關(guān)系代數(shù)除法運(yùn)算和關(guān)系演算的概念、關(guān)系演算的使用及關(guān)系演算與關(guān)系代數(shù)之間的關(guān)系2/5/202314.除法(Division)除法運(yùn)算是二目運(yùn)算,設(shè)有關(guān)系R(X,Y)與關(guān)系S(Y,Z),其中X,Y,Z為屬性集合,R中的Y與S中的Y可以有不同的屬性名,但對應(yīng)屬性必須出自相同的域。關(guān)系R除以關(guān)系S所得的商是一個新關(guān)系P(X),P是R中滿足下列條件的元組在X上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:R÷S={tr[X]|tr∈R∧Πy(S)Yx}其中,結(jié)果只包含X屬性中的分量,Yx為x在R中的象集,x=tr[X]。除法運(yùn)算為非基本運(yùn)算,可以表示為:R÷S=Πx(R)-Πx(Πx(R)×S-R)2/5/20232例2.11已知關(guān)系R和S,如圖2.11(a),(b)所示,則R÷S如圖(c)所示。與除法的定義相對應(yīng),本題中X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D}={(c3,d5),(c4,d6)},Z={F}={f3,f4}。其中,元組在X上各個分量值的象集分別為:(a1,b2)的象集為{(c3,d5),(c4,d6)}(a2,b4)的象集為{(c1,d3)}(a3,b5)的象集為{(c2,d8)}S在Y上的投影為{(c3,d5),(c4,d6)}顯然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a1,b2)}2/5/20233
R
SR÷S
ABCD
CDF
ABa1b2c3d5
c3d5f3
a1b2a1b2c4d6
c4d6f4
a2b4c1d3
a3b5c2d8
(a)
(b)
(c)圖2.112/5/202341.先把關(guān)系R和S分成兩個屬性組R(X,Y),S(Y,Z)2.計算X中每一條記錄t所包含Y上的象集T3.判定T是否包含∏Y(S)4.若是,t就是我們所求的記錄5.循環(huán),直到把R中記錄求完。2/5/20235例:2.6.1
RABCa1b1c1a2b1c1a1b2c1a1b2c2a2b1c2a1b2c3a1b2c4a1b1c5Cc1ABa1b1a2b1a1b2Cc1c2ABa1b2a2b1Cc1c2c3c4ABa1b2SS2S3TT2T3T:=RST2:=RS2T3:=RS32/5/20236除法運(yùn)算同時從行和列的角度進(jìn)行運(yùn)算,適合于包含“全部”之類的短語的查詢。例2.12查詢選修了全部課程的學(xué)生學(xué)號和姓名。ΠSNO,CNO(SC)÷ΠCNO(C)ΠSNO,SN(S)∞2/5/20237關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,通過謂詞形式來表示查詢表達(dá)式。根據(jù)謂詞變元的不同,可將關(guān)系演算分為元組關(guān)系演算和域關(guān)系演算。2.6.1元組關(guān)系演算語言元組關(guān)系演算是以元組變量作為謂詞變元的基本對象。元組關(guān)系演算語言的典型代表是E.F.Codd提出的ALPHA語言,這種語言雖然沒有實(shí)際實(shí)現(xiàn),但較有名氣。這里主要介紹ALPHA語言2.6關(guān)系演算
2/5/2023ALPHA語言ALPHA語言是以謂詞公式來定義查詢要求的。在謂詞公式中存在客體變元,這里稱為元組變量。元組變量是一個變量,其變化范圍為某一個命名的關(guān)系。ALPHA語言的基本格式是:<操作符><工作空間名>(<表達(dá)式>)[:<操作條件>][DOWN(UP)屬性]操作符有GET(檢索),PUT(寫),HOLD(讀),UPDATE(修改),DELETE(刪除記錄),DROP(刪除表)等多種。工作空間是指內(nèi)存空間,可以用一個字母表示,通常用W表示,也可以用別的字母表示。工作空間是用戶與系統(tǒng)的通信區(qū)。表達(dá)式用于指定操作對象,它可以是關(guān)系名或?qū)傩悦粭l操作語句可以同時對多個關(guān)系或多個屬性進(jìn)行操作。2/5/20239操作條件是用謂詞公式表示的邏輯表達(dá)式,只有滿足此條件的元組才能進(jìn)行操作,這是一個可選項,缺省時表示無條件執(zhí)行操作符規(guī)定的操作。除此之外,還可以在基本格式上加上排序要求,定額要求等。下面以教學(xué)數(shù)據(jù)庫(圖1.12)為例,說明ALPHA語言的使用。
1.數(shù)據(jù)查詢(1)簡單查詢例查詢所有學(xué)生的數(shù)據(jù)。GETW(S)GET語句的作用是把數(shù)據(jù)庫中的學(xué)生關(guān)系S的數(shù)據(jù)讀入內(nèi)存空間W,。冒號后面的操作條件缺省,表示無條件查詢。2/5/202310例2.13查詢所有被選修的課程號碼。GETW(SC.CNO)(2)條件查詢由冒號后面的邏輯表達(dá)式給出查詢條件,在表達(dá)式中可以使用如下三類運(yùn)算符:①
比較運(yùn)算符:>,≥,<,≤,=等于,≠;②邏輯運(yùn)算符:∧(與),∨(或),┐(非)③表示執(zhí)行次序的括號:()其中,比較運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,可以使用()改變它們的優(yōu)先級。2/5/202311例2.14查詢計算機(jī)系工資高于1000元的教師的姓名和工資。GETW(T.TN,T.SAL):T.DEPT=’計算機(jī)’∧T.SAL>1000(3)排序查詢例2.15查詢S3同學(xué)所選課程號及成績,并按成績降序排列。GETW(SC.CNO,SC.SCORE):SC.SNO=’S3’DOWNSC.SCOREDOWN表示降序,后面緊跟排序的屬性名。升序排列時使用UP。2/5/202312(4)定額查詢例2.15查詢一名男教師的教師號和姓名。GETW(1)(T.TNO,T.TN):T.SEX=’男’所謂的定額查詢就是通過在W后面的括號中加上定額數(shù)量,限定查詢出元組的個數(shù)。這里(1)表示查詢結(jié)果中男教師的個數(shù),取出教師表中第一個男教師的教師號和姓名。排序和定額查詢可以一起使用。例2.16查詢一名男教師的教師號和姓名,并使他的年齡最小。GETW(1)(T.TNO,T.TN):T.SEX=’男’UPT.AGE此語句的執(zhí)行過程為:先查詢所有男教師的教師號和姓名,再按照年齡由小到大排序,然后找出第一位,也就是年齡最小的男教師。2/5/202313(5)帶元組變量的查詢所謂的元組關(guān)系演算就是以元組變量作為謂詞變元的基本對象,在關(guān)系演算的查詢操作時,可以在相應(yīng)的關(guān)系上定義元組變量。元組變量代表關(guān)系中的元組,其取值是在所定義的關(guān)系范圍內(nèi)變化,所以也稱作范圍變量RangeVariable,一個關(guān)系可以設(shè)多個元組變量。例2.17查詢S3同學(xué)所選課程號。RANGESCXGETW(X.CNO):X.SNO=’S3’使用RANGE來說明元組變量,X為關(guān)系SC上的元組變量。如果關(guān)系的名字很長,使用起來不方便,這時可以設(shè)一個名字較短的元組變量來代替關(guān)系名,簡化關(guān)系名,使操作更加方便。2/5/202314(6)帶存在量詞的查詢例2.18查詢S3同學(xué)所選課程名。RANGESCXGETW(C.CN):X(C.CNO=X.CNO∧X.SNO=’S3’)注意:操作條件中使用量詞時必須用元組變量。例2.19查詢至少選修一門其課時數(shù)為80的課程的學(xué)生的姓名。RANGECCXSCSCXGET W(S.SN):SCX(SCX.SNO=S.SNO∧CX(CX.CNO=SCX.CNO∧CX.CT=80))2/5/202315此查詢涉及三個關(guān)系,需要對兩個關(guān)系(C和SC)作用存在量詞,所以用了兩個元組變量。此語句的執(zhí)行過程為:先查詢課時數(shù)為80的課程號,再根據(jù)找到的課程號在關(guān)系SC中查詢其對應(yīng)的學(xué)號,然后根據(jù)為些學(xué)號在關(guān)系S中找到對應(yīng)的學(xué)生姓名。例2.20查詢選修全部課程的學(xué)生姓名。RANGECCXSCSCXGET W(S.SN):CXSCX(SCX.SNO=S.SNO∧CX.CNO=SCX.CNO)2/5/202316(7)庫函數(shù)查詢庫函數(shù)也稱集函數(shù)。用戶在使用查詢語言時,經(jīng)常要作一些簡單的運(yùn)算。例如要統(tǒng)計某個關(guān)系中符合某一條件的元組數(shù),或某些元組在某個屬性上分量的和、平均值等等。在關(guān)系數(shù)據(jù)庫語言中提供了有關(guān)這類運(yùn)算的標(biāo)準(zhǔn)函數(shù),增強(qiáng)了基本檢索能力。常用的庫函數(shù)下表所示函數(shù)名稱功能AVG按列計算平均值TOTAL按列計算值的總和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值計算元組個數(shù)2/5/202317例2.21求學(xué)號為S1學(xué)生的平均分。GETW(AVG(SC.SCORE):S.SNO=’S1’例2.22求學(xué)校共有多少個系GETW(COUNT(S.DEPT))COUNT函數(shù)自動消去重復(fù)行,可計算字段“DEPT“不同值的數(shù)目。2.數(shù)據(jù)更新更新操作包括修改、插入和刪除。(1)修改修改操作使用UPDATE語句實(shí)現(xiàn),具體操作分為以下三步:2/5/202318①讀數(shù)據(jù):使用HOLD語句將要修改的元組從數(shù)據(jù)庫中讀到工作空間中;②修改:利用宿主語言修改工作空間中元組的屬性;③送回:使用UPDATE語句將修改后的元組送回數(shù)據(jù)庫中。這里HOLD語句是帶上并發(fā)控制的GET語句。例2.23把劉偉教師轉(zhuǎn)到信息系。HOLDW(T.DEPT):T.TN=‘劉偉’MOVE’信息’TOW.DEPTUPDATEW在ALPHA語言中,不允許修改關(guān)系的主碼,例如不能使用UPDATE語句修改教師表T中的教師號。如果要修改主碼,應(yīng)該先使用刪除操作刪除該元組,再插入一條具有新主碼值的元組。2/5/202319(2)插入插入操作使用PUT語句實(shí)現(xiàn),具體操作分為以下兩步:①建立新元組:利用宿主語言在工作空間中建立新元組;②寫數(shù)據(jù):使用PUT語句將元組寫入到指定的關(guān)系中。例2.24在SC表中插入一條選課記錄(S6,C1,85)。MOVES6TOW.SNOMOVEC1TOW.CNOMOVE85TOW.SCOREPUTW(SC)2/5/202320PUT語句的作用是把工作空間W中的數(shù)據(jù)寫到數(shù)據(jù)庫中,此例即把已經(jīng)在工作空間建立的一條選課記錄寫入到選課關(guān)系SC中。注意:PUT語句只能對一個關(guān)系進(jìn)行操作,在插入操作時,拒絕接受主碼相同的元組。(3)刪除ALPHA語言中的刪除操作不但可以刪除關(guān)系中的一些元組,還可以刪除一個關(guān)系。刪除操作使用DELETE語句實(shí)現(xiàn),具體操作分為以下兩步:①讀數(shù)據(jù):使用HOLD語句將要刪除的元組從數(shù)據(jù)庫中讀到工作空間中;②刪除:使用DELETE語句刪除該元組。2/5/202321例2.25刪除學(xué)號為S6的學(xué)生的信息。HOLDW(S):S.SNO=‘S6’DELETEW例2.26刪除全部學(xué)生的信息。HOLDW(S)DELETEW2/5/2023222.5.2域關(guān)系演算語言QBE域關(guān)系演算是關(guān)系演算的另一種形式。域關(guān)系演算是以元組變量的分量即域變量作為謂詞變元的基本對象。域關(guān)系演算語言的典型代表是1975年由IBM公司約克城高級研究試驗(yàn)室的M.M.Zloof提出的QBE語言,該語言于1978年在IBM370上實(shí)現(xiàn)。2/5/202323QBE是QueryByExample的縮寫,也稱為示例查詢,它是一種很有特色的屏幕編輯語言,其特點(diǎn)如下:(1)以表格形式進(jìn)行操作每一個操作都由一個或幾個表格組成,每一個表格都顯示在終端的屏幕上,用戶通過終端屏幕編輯程序以填寫表格的方式構(gòu)造查詢要求,查詢結(jié)果也以表格的形式顯示出來,所以它具有直觀和可對話的特點(diǎn)。(2)通過例子進(jìn)行查詢通過使用一些實(shí)例,使該語言更易于為用戶接受和掌握。(3)查詢順序自由當(dāng)有多個查詢條件時,不要求使用者按照固定的思路和方式進(jìn)行查詢,使用更加方便。2/5/202324使用QBE語言的步驟:(1)用戶根據(jù)要求向系統(tǒng)申請一張或幾張表格,顯示在終端上;(2)用戶在空白表格的左上角的一欄內(nèi)輸入關(guān)系名;(3)系統(tǒng)根據(jù)用戶輸入的關(guān)系名,將在第一行從左至右自動填寫各個屬性名;(4)用戶在關(guān)系名或?qū)傩悦路降囊桓駜?nèi)填寫相應(yīng)的操作命令,操作命令包括:P.(打印或顯示)、U.(修改)、I.(插入)、D.(刪除)。如果要打印或顯示整個元組時,應(yīng)將“P”填在關(guān)系名的下方,如果只需打印或顯示某一屬性,應(yīng)將“P”填在相應(yīng)屬性名的下方。2/5/202325表格形式如表2.2所示表2.2QBE操作框架表關(guān)系名屬性1屬性2…屬性n操作命令屬性值或查詢條件屬性值或查詢條件…屬性值或查詢條件2/5/20232數(shù)據(jù)查詢1.簡單查詢例2.33顯示全部學(xué)生的信息。方法一:將P.填在關(guān)系名的下方方法二:將“P”填在各個屬性名的下方SSNOSNSEXAGEDEPTP.
SSNOSNSEXAGEDEPT
P.趙亦P.女P.17P.計算機(jī)P.950012/5/202327注意:只有目標(biāo)屬性包括所有的屬性時,將P.填在關(guān)系名的下方。這種語言之所以稱為示例查詢,就是在操作中采取“示例”的方法,凡用作示例的元素,其下方均加下劃線。如上例中的“趙亦”、“女”等均為示例元素,即域變量。示例元素是所給域中可能的一個值,而不必是查詢結(jié)果中的元素。比如用作示例的學(xué)生姓名,可以不是學(xué)生表中的學(xué)生,只要給出任意一個學(xué)生名即可。2/5/2023282.條件查詢例2.34查詢所有女學(xué)生的姓名。目標(biāo)屬性只有姓名,所以將P.填在關(guān)系名的下方。查詢條件中可以使用比較運(yùn)算符>,≥,<,≤,=和≠,其中=可以省略。本例的查詢條件是SEX=‘女’,“=”被省略。SSNOSNSEXAGEDEPT
P.趙亦女
2/5/202329例2.35查詢年齡大于18歲的女學(xué)生的姓名。本例的查詢條件是AGE>18和SEX=‘女’兩個條件的“與”。在QBE中,表示兩個條件的“與”有兩種方法:方法一:把兩個條件寫在同一行上:方法二:把兩個條件寫在不同行上,但必須使用相同的示例元素SSNOSNSEXAGEDEPT
P.趙亦女>18
SSNOSNSEXAGEDEPT
P.趙亦女
P.趙亦
>18
2/5/202330例2.36查詢既選修了C1號課程又選修了C2號課程的學(xué)生的學(xué)號。本例的查詢條件是CNO=‘C1’和CNO=‘C2’兩個條件的“與”,但兩個條件涉及同一屬性CNO,則必須把兩個條件寫在不同行上,且使用相同的示例元素。例2.37查詢年齡大于18歲或者女學(xué)生的姓名。本例的查詢條件是AGE>18和SEX=‘女’兩個條件的“或”。在QBE中,表示兩個條件的“或”,要把兩個條件寫在不同行上,且必須使用不同的示例元素。SSNOSNSEXAGEDEPT
P.趙亦女
P.錢爾
>18
2/5/202331例2.38查詢選修C1號課程學(xué)生的姓名。本查詢涉及兩個關(guān)系:S和SC,這兩個關(guān)系具有公共的屬性SNO,SNO作為連接屬性,把具有相同的SNO值的兩個關(guān)系連接起來,SNO在兩個表中的值要相同。SSNOSNSEXAGEDEPT
S1P.趙亦
SCSNOCNOSCORE
S1C1
2/5/202332例2.39查詢未選修C1號課程學(xué)生的姓名。查詢條件中的“未選修”需使用邏輯非來表示。QBE中的邏輯非運(yùn)算符為┐,填寫在關(guān)系名下方。如果S1同學(xué)選修C1號課程的情況為假,則符合查詢的條件,顯示S1同學(xué)的學(xué)號,然后再查詢其他同學(xué)。SSNOSNSEXAGEDEPT
S1P.趙亦
SCSNOCNOSCORE┐S1C1
2/5/2023334.庫函數(shù)查詢同ALPHA語言類似,QBE語言也提供了一些有關(guān)運(yùn)算的標(biāo)準(zhǔn)函數(shù),以方便用戶。QBE常用的庫函數(shù)如表2.2所示表2.2QBE常用的庫函數(shù)及其功能函數(shù)名稱功能AVG按列計算平均值SUM按列計算值的總和MAX求一列中的最大值MIN求一列中的最小值CNT按列值計算元組個數(shù)2/5/2023343.排序查詢例2.39查詢?nèi)w女教師的教師號和姓名,要求查詢結(jié)果按工資升序排列,工資相同者按年齡降序排列。對查詢結(jié)果按照某個屬性值升序排列時,則在相應(yīng)的屬性下方填入“AO”,降序排列時,填入“DO”。如果按照多個屬性值同時排序,則用“AO(i)”或“DO(i)”表示,其中I為排序的優(yōu)先級,I值越小,優(yōu)先級越高。TTNOTNSEXAGEDEPTPROFSALCOMMDEPT
p.S1P.趙亦女DO(2)
AO(1)
2/5/202335例2.40求學(xué)號為S1學(xué)生的平均分。SCSNOCNOSCORE
S1
P.AVG.ALL2/5/20233數(shù)據(jù)更新1.修改修改的命令為U.例2.41把劉偉教師轉(zhuǎn)到信息系。TTNOTNSEXAGEDEPTPROFSALCOMMDEPTU.
劉偉
信息2/5/2023372.插入插入的命令為I.例2.42在SC表中插入一條選課記錄(S6,C1)。注意:新插入的元組必須具有主碼值,其他屬性值可以為空,如本例中的SCORE為空。SCSNOCNOSCOREI.S6C1
2/5/2023383.刪除刪除的命令為D.例2.43刪除S1同學(xué)選修C1課程的信息。SCSNOCNOSCORED.S1C
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級英語教學(xué)計劃模板
- 體育教研工作計劃模板匯編
- 初一上學(xué)期班主任工作計劃024年
- 2025年社區(qū)關(guān)愛殘疾人工作計劃模板新編
- 學(xué)校檔案管理年度工作計劃范文
- 計劃標(biāo)段生產(chǎn)建議計劃
- 初一學(xué)期的班級工作計劃
- 《食品風(fēng)險分析框架》課件
- 《骨科常規(guī)護(hù)理技術(shù)》課件
- 土地承包合同中糧食補(bǔ)貼協(xié)議備注書面書寫
- 舞蹈演出編導(dǎo)排練合同模板
- 【MOOC】線性代數(shù)-同濟(jì)大學(xué) 中國大學(xué)慕課MOOC答案
- 大美勞動智慧樹知到期末考試答案章節(jié)答案2024年江西財經(jīng)大學(xué)
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
- 勞動教育智慧樹知到期末考試答案2024年
- 報價單(報價單模板)
- 刑事案件模擬法庭劇本完整版五篇
- GB 2707-2016食品安全國家標(biāo)準(zhǔn)鮮(凍)畜、禽產(chǎn)品
- 泵類及液體輸送系統(tǒng)節(jié)能監(jiān)測 泵類及液體輸送系統(tǒng)節(jié)能監(jiān)測計算表
- 五年級數(shù)學(xué)上冊《列方程解應(yīng)用題》(課堂PPT)
- 新視野大學(xué)英語第三版第一冊課文原文
評論
0/150
提交評論