《關(guān)系數(shù)據(jù)庫》PPT課件.ppt_第1頁
《關(guān)系數(shù)據(jù)庫》PPT課件.ppt_第2頁
《關(guān)系數(shù)據(jù)庫》PPT課件.ppt_第3頁
《關(guān)系數(shù)據(jù)庫》PPT課件.ppt_第4頁
《關(guān)系數(shù)據(jù)庫》PPT課件.ppt_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章 關(guān)系數(shù)據(jù)庫,關(guān)系模型概述 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義 關(guān)系的完整性 關(guān)系代數(shù),2006年4月12日,2,關(guān)系模型概述,關(guān)系模型的組成 關(guān)系數(shù)據(jù)結(jié)構(gòu) 關(guān)系操作集合 關(guān)系完整性約束 一、單一的數(shù)據(jù)結(jié)構(gòu)-關(guān)系 關(guān)系模型中實體及實體間的聯(lián)系都用關(guān)系表示 關(guān)系就是一張二維表。,2006年4月12日,3,關(guān)系操作,關(guān)系模型中常用的關(guān)系操作包括: 選擇、投影、連接、除、并、交、差等 增加、刪除、修改 關(guān)系操作的特點 集合操作方式 即操作的對象和結(jié)果都是集合。一次一集合方式。 非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式 為一次一記錄的方式。,2006年4月12日,4,關(guān)系數(shù)據(jù)語言分類,早期的關(guān)系操作能力 用代數(shù)方式表示,稱為關(guān)系代數(shù) 用邏輯方式表示,稱為關(guān)系演算 關(guān)系演算又可按謂詞變元的基本對象是元組變量還是域變量分為 元組關(guān)系演算 域關(guān)系演算。 這三種語言在表達能力上是完全等價的。 另外還有一種介于關(guān)系代數(shù)和關(guān)系演算之間的語言SQL(Structurel Query Language)。 SQL不僅具有豐富的查詢功能,而且具有數(shù)據(jù)定義和數(shù)據(jù)控制功能,是集查詢、DDL、DML和DCL于一體的關(guān)系數(shù)據(jù)語言。 它充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點,是關(guān)系數(shù)據(jù)庫的標準語言。,2006年4月12日,5,關(guān)系數(shù)據(jù)語言分類:,關(guān)系數(shù)據(jù)語言,關(guān)系代數(shù)語言,例如 ISBL,關(guān)系演算語言,元組關(guān)系演算語言 例如APLHA,QUEL,具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言例如 SQL,域關(guān)系演算語言 例如QBE,2006年4月12日,6,三、關(guān)系的三類完整性約束,關(guān)系模型允許定義三類完整性約束: 實體完整性 關(guān)系模型必須滿足的完整性約束條件,由關(guān)系系統(tǒng)自動支持 參照完整性 關(guān)系模型必須滿足的完整性約束條件,由關(guān)系系統(tǒng)自動支持 用戶定義的完整性。 應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。,2006年4月12日,7,關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,域: 定義2.1 域是一組具有相同數(shù)據(jù)類型的值的集合。 如整數(shù)的集合、字符串的集合、全體學(xué)生的集合。 笛卡兒積 定義2.2:給定一組域D1,D2,Dn,這些域中可以有相同的。D1,D2,Dn的笛卡兒積為D1D2Dn = (d1 , d2 , , dn) | diDi , i=1,n 其中每一個元素(d1,d2, ,dn)叫做一個n元組(n-tuple),或簡稱元組。 元組中的每一個值di叫做一個分量(component)。 若Di(i=1,2, ,n)為有限集,其基數(shù)為mi(i=1,2, ,n),則D1D2Dn的基數(shù)M為:mi的積,即,2006年4月12日,8,笛卡兒積的運算過程例子,笛卡爾積可表示為一個二維表。表中的每行對應(yīng)一個元組,表中的每列對應(yīng)一個域。例如給出三個域: D1一導(dǎo)師集合SUPERVISOR一張清玫,劉逸 D2一專業(yè)集合SPECIALITY一計算機專業(yè),信息專業(yè) D3一研究生集合POSTGRADUATE一李勇,劉晨,王敏,則D1D2D3的笛卡爾積為: D1D2D3 (張清政,計算機專業(yè),李勇), (張清政,計算機專業(yè),劉晨), (張清政,計算機專業(yè),王敏), (張清政,信息專業(yè),李勇), (張清政,信息專業(yè),劉晨), (張清政,信息專業(yè),王敏), ( 劉逸,計算機專業(yè),李勇), ( 劉逸,計算機專業(yè),劉晨), ( 劉逸,計算機專業(yè),王敏), ( 劉逸,信息專業(yè),李勇), ( 劉逸,信息專業(yè),劉晨), ( 劉逸,信息專業(yè),王敏),其中(張清玫,計算機專業(yè),李勇) 、(張清玫,計算機專業(yè),劉晨) 等都是元組。 張清玫、計算機專業(yè)、李勇、 劉晨等都是分量。 該笛卡爾積的基數(shù)為2X2X312, 也就是說, D1D2D3一共有 2X2X312個元組。這12個元 組可列成一張二維表(如表2.1)。,2006年4月12日,9,關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,關(guān)系 定義2. 3:D1D2Dn的子集叫做在域D1,D2,Dn上的關(guān)系,表示為:R(D1,D2,Dn) 說明: D1D2Dn表示的是域上所有可能的組合,在現(xiàn)實生活中很多元組是無意義的數(shù)據(jù),而一個關(guān)系肯定包含在D1D2Dn之中,因此在數(shù)學(xué)上把關(guān)系定義為D1D2Dn的子集。 這里R表示關(guān)系的名字,n是關(guān)系的目和度。 關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。 當n1時,稱該關(guān)系為單元關(guān)系。 當n2時,稱該關(guān)系為二元關(guān)系。 關(guān)系是笛卡兒積的有限子集, 關(guān)系 二維表、表的每行元組、表的每列域。 由于域可以相同,為了加以區(qū)分,必須對每列起一個名字,稱為屬性。N目關(guān)系必有n個屬性,2006年4月12日,10,關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,候選碼 若關(guān)系中的某一屬性組的值能唯一地標識一個元組,則稱該數(shù)據(jù)組為候選碼。 主碼 若一個關(guān)系有多個候選碼,則選定其中一個為主碼。 主屬性 主碼的諸屬性稱為主屬性。 非碼屬性 不包含在任何候選碼中的屬性稱為非碼屬性。 全碼 關(guān)系模式的所有數(shù)據(jù)組是這個關(guān)系模式的候選碼,稱為。,2006年4月12日,11,關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,關(guān)系可以有三種類型 基本關(guān)系 基本表是實際存在的表,它是實際存儲數(shù)據(jù)的邏輯表示。 查詢表 查詢表是查詢結(jié)果對應(yīng)的表。 視圖表。 視圖表是由基本表或其他視圖表導(dǎo)出的表,是虛表,不對應(yīng)實際存儲的數(shù)據(jù)。,2006年4月12日,12,關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,對關(guān)系數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)“關(guān)系”的限定和擴充: 無限關(guān)系在數(shù)據(jù)庫系統(tǒng)中時無意義的。因此,限定關(guān)系數(shù)據(jù)模型中的關(guān)系必須是有限集合。 通過為關(guān)系的每個列附加一個屬性名的方法取消關(guān)系元組的有序性。 例如,可以在表2l的笛卡爾積中取出一個子集來構(gòu)造一個關(guān)系。 由于研究生只師從于一個導(dǎo)師,學(xué)習某一個專業(yè),所以笛卡爾積中的許多元組是無實際意義的,從中取出有實際意義的元組來構(gòu)造關(guān)系。該關(guān)系的名字為SAP, 屬性名就取域名,即 SUPERVISOR,SPECIALITY和 POSTGRADUATE。,2006年4月12日,13,關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義,則這個關(guān)系可以表示為: SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) 假設(shè) 導(dǎo)師與專業(yè)是一對一的,即一個導(dǎo)師只有一個專業(yè); 導(dǎo)師與研究生是一對多的,即一個導(dǎo)師可以帶多名研究生, 而一名研究生只有一個導(dǎo)師。 這樣SAP關(guān)系可以包含三個元組, 參看PAGE49表2.2 SAP關(guān)系,2006年4月12日,14,基本關(guān)系具有以下六條性質(zhì):,1. 列是同質(zhì)的,即每一列中的分量是同一類型的數(shù)據(jù),來自同一個域。 2. 不同的列可以出自同一個域,稱其中的每一列為一個屬性,不同的屬性要給予不同的屬性名。 3. 列的順序無所謂,即列的次序可以任意交換。 4. 任意兩個元組不能完全相同。 5. 行的順序無所謂,即行的次序可以任意交換。 6. 分量必須取原子值,即每一個分量都必須是不可分的數(shù)據(jù)項。 注意: 在許多實際關(guān)系數(shù)據(jù)庫產(chǎn)品中,基本表并不完全具有這六條性質(zhì), 例如, 有的數(shù)據(jù)庫產(chǎn)品能(如FoxPro)仍然區(qū)分了屬性順序和元組的順序;許多關(guān)系數(shù)據(jù)庫產(chǎn)品中,例如Oracle,F(xiàn)oxPro等,它們都允許關(guān)系表中存在兩個完全相同的元組。,2006年4月12日,15,關(guān)系模式,定義2.4 關(guān)系的描述稱為關(guān)系模式。它可以形式化地表示為:R(U,D,dom,F),其中R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來自的域,dom為屬性向域的映象集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合。 關(guān)系模式通??梢院営洖椋?R(U)或R(A1,A2, ,An) 其中R為關(guān)系名,A1,A2, ,An為屬性名。而域名及屬性向域的映象常常直接說明為屬性的類型、長度。,2006年4月12日,16,關(guān)系數(shù)據(jù)庫中的型和值的概念,在關(guān)系模型中,實體以及實體間的聯(lián)系也是用關(guān)系來表示的。 例如導(dǎo)師實體、研究生實體、導(dǎo)師與研究生之間的一對多聯(lián)系都可以分別用一個關(guān)系來表示。 在一個給定的應(yīng)用領(lǐng)域中,所有實體及實體之間聯(lián)系的關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫。 型和值 關(guān)系數(shù)據(jù)庫也有型和值之分。 關(guān)系數(shù)據(jù)庫的型 也稱為關(guān)系數(shù)據(jù)庫模式,是對關(guān)系數(shù)據(jù)庫的描述,它包括若干域的定義以及在這些域上定義的若干關(guān)系模式。 關(guān)系數(shù)據(jù)庫的值 是這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫。,2006年4月12日,17,關(guān)系的完整性,關(guān)系模型的完整性規(guī)則 是對關(guān)系的某種約束條件。 關(guān)系模型中可以有三類完整性約束: 實體完整性、 參照完整性 用戶定義的完整性。 其中實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱為是關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持。,2006年4月12日,18,實體完整性,規(guī)則2.1 實體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。 實體完整性規(guī)則規(guī)定基本關(guān)系的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。 例如 學(xué)生選課關(guān)系 選修(學(xué)號,課程號,成績)中,“學(xué)號、課程號”為主碼,則“學(xué)號”和“課程號”都不能取空值,而不是整體不為空。,2006年4月12日,19,實體完整性規(guī)則說明如下:, 實體完整性規(guī)則是針對基本關(guān)系而言的。一個基本表通常對應(yīng)現(xiàn)實世界的一個實體集。 現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。 相應(yīng)地,關(guān)系模型中以主碼作為唯一標識。 主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“不確定”的值。 實體完整性的引申:主碼也不能取重復(fù)值。,2006年4月12日,20,參照完整性,為什么需要參照完整性? 現(xiàn)實世界中的實體之間往往存在某種聯(lián)系,在關(guān)系模型中實體及實體間的聯(lián)系都是用關(guān)系來描述的。這樣就自然存在著關(guān)系域關(guān)系之間的引用。引用的時候,必須取基本表中已經(jīng)存在的值。由此引出參照的引用規(guī)則。 參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。 實例: 學(xué)生實體和專業(yè)實體可以用下面的關(guān)系表示,其中主碼用下劃線標識: 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡) 專業(yè)(專業(yè)號,專業(yè)名) 說明:這兩個關(guān)系之間存在著屬性的引用,即學(xué)生關(guān)系引用了專業(yè)關(guān)系的主碼專業(yè)號。顯然,學(xué)生關(guān)系中的“專業(yè)號”值必須是確實存在的專業(yè)的專業(yè)號,即專業(yè)關(guān)系中有該專業(yè)的記錄。這也就是說,學(xué)生關(guān)系中的某個屬性的取值需要參照專業(yè)關(guān)系的屬性取值。,2006年4月12日,21,參照完整性例2,學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系可以如下三個關(guān)系表示: 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡) 課程(課程名,學(xué)分) 選修(學(xué)號,課程號,成績) 參照關(guān)系:選修 被參照關(guān)系:學(xué)生、課程,2006年4月12日,22,參照完整性例3 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長) 班長的學(xué)號引用了本關(guān)系的“學(xué)號” 定義2.5 設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼,如果F與基本關(guān)系S的主碼Ks相對應(yīng),則稱F是基本關(guān)系R的外碼(Foreign Key),并稱基本關(guān)系R為參照關(guān)系,基本關(guān)系S為被參照關(guān)系或目標關(guān)系。關(guān)系R和S不一定是不同的關(guān)系。 注意 F不能是關(guān)系R的主碼,Ks必須是關(guān)系S的主碼。 顯然,目標關(guān)系S的主碼Ks和參照關(guān)系的外碼F必須定義在同一個(或一組)域上。 需要指出 外碼并不一定要與相應(yīng)的主碼同名。 在實際應(yīng)用當中,為了便于識別,當外碼與相應(yīng)的主碼屬于不同的關(guān)系時,往往給它們?nèi)∠嗤拿帧?2006年4月12日,23,規(guī)則2.2 參照完整性規(guī)則 若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為: 或者取空值(F的每個屬性值均為空值); 或者等于S中某個元組的主碼值。,2006年4月12日,24,用戶定義的完整性,不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,用戶定義的完整性就是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件。 例如,成績的取值必須在0100之間。,2006年4月12日,25,關(guān)系代數(shù),關(guān)系代數(shù)是一種抽象的查詢語言,是關(guān)系數(shù)據(jù)操縱語言的一種傳統(tǒng)表達方式,它是用對關(guān)系的運算來表達查詢的。 熟悉表2.4的關(guān)系代數(shù)運算符。,2006年4月12日,26,傳統(tǒng)的集合運算,1. 并 2. 差 3. 交 4. 廣義笛卡兒積,2006年4月12日,27,專門的關(guān)系運算:選擇、投影、連接、除等。,為了敘述上的方便,先引入幾個記號。 設(shè)關(guān)系模式為R(A1,A2, ,AN)。 它的一個關(guān)系設(shè)為R。tR表示t是R的一個元組。tAi則表示元組t中相應(yīng)于屬性Ai上的一個分量。 若A=Ai1,Ai2, ,Aik,其中 Ai1,Ai2, ,Aik是A1,A2, ,AN中的一部分,則A稱為屬性列或域列。 tA=(tAi1,tAi2,tAik) 表示元組t在屬性列A上諸分量的集合。則表示(A1,A2, ,AN)中去掉Ai1,Ai2, ,Aik后剩余的屬性組。,2006年4月12日,28, R為n目關(guān)系,S為m目關(guān)系。trR,tsS,tr ts稱為元組的連接。它是一個nm列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。 給定一個關(guān)系R(X,Z),X和Z為屬性組。定義當tX=x時,x在R中的象集為: Zx=tZ | tR,tX=x 它表示R中屬性組X上值為x的諸元組在Z上分量的集合。,2006年4月12日,29,下面給出關(guān)系運算的定義:,1選擇 F(R) t | tRF(t)=真 F表示選擇條件,是一個邏輯表達式。 選擇運算實際上是從關(guān)系R中選取使邏輯表達式F為真的元組。 這是從行的角度進行的運算。 表達式不僅可以用列名構(gòu)造也可以用列序號構(gòu)造。,2006年4月12日,30,例子參看P59 圖2.3,“學(xué)生課程”數(shù)據(jù)庫中包括三個表: (1) “學(xué)生”表Student由學(xué)號(Sno)、姓名(Sname)、性別(Ssex)、年齡(Sage)、所在系(Sdept)五個屬性組成,可記為: Student(Sno,Sname,Ssex,Sage,Sdept) Sno (2) “課程”表Course由課程號(Cno)、課程名(Cname)、先修課號(Cpno)、學(xué)分(Ccredit)四個屬性組成,可記為: Course(Cno,Cname,Cpno,Ccredit) Cno (3) “學(xué)生選課”表SC由學(xué)號(Sno)、課程號(Cno)、成績(Grade)三個屬性組成,可記為: SC(Sno,Cno,Grade) (SNO, CNO),2006年4月12日,31,例1 查詢信息系(IS系)全體學(xué)生 Sdept=IS(Student) 或 5=IS(Student) 例2 查詢年齡小于20歲的元組 Sage20(Student) 或420(Student) 結(jié)果如圖p60圖2.4,2006年4月12日,32,2投影,A(R) tA | tR 關(guān)系R上的投影使從R中選擇出若干屬性列組成新的關(guān)系。 投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組,因為取消了某些屬性列后,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。 例3 :查詢學(xué)生關(guān)系Student在學(xué)生姓名和所在系兩個屬性上的投影 Sname,Sdept(Student) 或2,5(Student) 結(jié)果如p61圖2-5(a)。 例4 查詢學(xué)生關(guān)系Student中都有哪些系,即查詢學(xué)生關(guān)系Student在所在系屬性上的投影 Sdept(Student) 結(jié)果如p61圖2-5(b)。,2006年4月12日,33,3連接,連接也稱為 連接。它是從兩個關(guān)系的笛卡兒積中選取屬性間滿足一定條件的元組。記做: 其中A和B分別為R和S上度數(shù)相等且可比的屬性組。 是比較運算符。 連接運算從R和S的廣義笛卡兒積RS中選取在A屬性組上的值域在B屬性組上值滿足比較關(guān)系 的元組。,2006年4月12日,34,等值連接和自然連接,等值連接。 它是從關(guān)系R與S的廣義笛卡兒積中選取A,B屬性值相等的那些元組,等值連接為: 自然連接 自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。即若R和S具有相同的屬性組B,則自然連接可記做: p6162的例5,2006年4月12日,35,4除,給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影,元組在X上分量值x的象集Yx包含S在Y上投影的集合。RS=trX| tr Ry(S) YX 其中Yx為x在R中的象集,x= trX 除操作是同時從行和列的角度進行運算。,2006年4月12日,36,例子,例6 設(shè)關(guān)系R, S分別為圖2-9中的(a)和(b),RS的結(jié)果為圖2-9(c),2006年4月12日,37,在關(guān)系R中,A可以取四個值a1, a2, a3, a4。其中: a1的象集為(b1,c2), (b2,c3), (b2,c1) a2的象集為(b3,c7), (b2,c3) a3的象集為(b4,c6) a4的象集為(b6,c6) S在(B,C)上的投影為(b1,c2), (b2,c3), (b2,c1) 顯然只有a1的象集(B,C) 包含S在(B,C)屬性組上的投影,所以RS=a1,2006年4月12日,38,例7 查詢至少選修1號課程和3號課程的學(xué)生號碼 首先建立一個臨時關(guān)系K: Cno 1 3 然后求: 結(jié)果為95001,2006年4月12日,39,例8 查詢選修了2號課程的學(xué)生的學(xué)號 例9 查詢至少選修了一門其直接先行課為5號課程的學(xué)生姓名 例10查詢選修了全部課程的學(xué)生號碼和姓名,2006年4月12日,40,關(guān)系代數(shù)總結(jié)與補充,基本運算 一元運算 選擇、投影、更名。 多元運算 笛卡兒積、并、集合差。 其它運算 集合交、自然連接、除、賦值。 擴展運算 廣義投影、外連接、聚集。 修改操作 插入、刪除、更新。,2006年4月12日,41,一些記號,給定關(guān)系模式R(A1 , A2 , , An),設(shè)R是它的一個具體的關(guān)系,tR是關(guān)系的一個元組。 分量 設(shè)tR,則tAi表示元組t中相應(yīng)于屬性Ai的一個分量。 屬性列 A = Ai1 ,Ai2 , ,AikA1 ,A2 , ,An,稱A為屬性列。 A表示A1 ,A2 , ,An中去掉A后剩余的屬性組。 tAi = ( tAi1, tAi2, , tAik)。,2006年4月12日,42,選擇運算,基本定義 在關(guān)系R中選擇滿足給定條件的元組(從行的角度)。 F(R)=t | t R F(t) = 真 F是選擇的條件,t R, F(t)要么為真,要么為假。 F的形式:由邏輯運算符連接關(guān)系表達式而成。 邏輯表達式:, 關(guān)系表達式:X Y X,Y是屬性名、常量、或簡單函數(shù)。 是比較算符, , , , , , 示例 找年齡不小于20的男學(xué)生。 AGE20 SEX=男(S),2006年4月12日,43,投影,定義 從關(guān)系R中取若干列組成新的關(guān)系(從列的角度)。 A(R) = tA | tR , AR 投影的結(jié)果中要去掉相同的行。 示例:找001號學(xué)生所選修的課程號。 C#( S#=001 (SC),R,B , C(R),2006年4月12日,44,并運算,定義 所有至少出現(xiàn)在兩個關(guān)系中之一的元組集合。 RS = r | rR rS 兩個關(guān)系R和S若進行并運算,則它們必須是相容的: 關(guān)系R和S必須是同元的,即它們的屬性數(shù)目必須相同。 對i,R的第i個屬性的域必須和S的第i個屬性的域相同。 示例 求選修了001號或002號課程的學(xué)生號。 方案1:S#(C# = 001 C# = 002(SC) 方案2: S#(C# = 001 (SC)S#(C# = 002(SC),RS,2006年4月12日,45,差運算,定義 所有出現(xiàn)在一個關(guān)系而不在另一關(guān)系中的元組集合。 RS = r | rR rS R和S必須是相容的。 示例 求選修了001號而沒有選002號課程的學(xué)生號。 S#(C# = 001 (SC) S#(C# = 002(SC),RS,2006年4月12日,46,更名運算,定義 給一個關(guān)系表達式賦予名字 x(E) 返回表達式E的結(jié)果,并把名字x賦給E。 x(A1, A2 , , An )(E) 返回表達式E的結(jié)果,并把名字x賦給E,同時將各屬性更名為A1,A2, ,An 。 關(guān)系被看作一個最小的關(guān)系代數(shù)表達式,可以將更名運算施加到關(guān)系上,得到具有不同名字的同一關(guān)系。這在同一關(guān)系多次參與同一運算時很有幫助。,2006年4月12日,47,廣義笛卡爾積運算,元組的連串(Concatenation) 若r = (r1, ,rn),s = (s1 , ,sm),則定義r與s的連串為: rs = (r1, ,rn, s1 , ,sm) 定義 兩個關(guān)系R,S,其度分別為n,m,則它們的笛卡爾積是所有這樣的元組集合:元組的前n個分量是R中的一個元組,后m個分量是S中的一個元組。 RS= rs | rR sS RS的度為R與S的度之和, RS的元組個數(shù)為R和S的元組個數(shù)的乘積。 思考題: 求張三同學(xué)計算機成績,列出其學(xué)號、姓名、課程名、成績 求數(shù)學(xué)成績比王紅同學(xué)高的學(xué)生。,2006年4月12日,48,交運算,定義 所有同時出現(xiàn)在兩個關(guān)系中的元組集合。 RS = r | rR rS 交運算可以通過差運算來重寫: RS = R (R S) 示例 求選修了001號和002號課程的學(xué)生號。 S#(C# = 001 (SC)S#(C# = 002(SC),RS,2006年4月12日,49,連接(),定義 從兩個關(guān)系的廣義笛卡兒積中選取給定屬性間滿足一定條件的元組。 R S = rs | rR sS rASB A,B為R和S上度數(shù)相等且可比的屬性列。 為算術(shù)比較符,為等號時稱為等值連接。 R S = rA SB( RS),A B,A B,2006年4月12日,50,連接(),求數(shù)學(xué)成績比王紅同學(xué)高的學(xué)生 提示: 先形成王紅數(shù)學(xué)成績表,再形成所有同學(xué)的數(shù)學(xué)成績表,連接條件設(shè)為表1中的成績小于表2中的成績 想一想,還有沒有其它的查詢方法。,R S,B D,R,S,2006年4月12日,51,自然連接(),定義 從兩個關(guān)系的廣義笛卡兒積中選取在相同屬性列B上取值相等的元組,并去掉重復(fù)的行。 R S = rsB | rR sS rB=SB 自然連接與等值連接的不同 自然連接中相等的分量必須是相同的屬性組,并且要在結(jié)果中去掉重復(fù)的屬性,而等值連接則不必。 當R與S無相同屬性時,R S RS。,2006年4月12日,52,自然連接(),思考題: 列出學(xué)號為99001的學(xué)生成績表,要求列出 學(xué)號、姓名、課程名、成績,R,S,R S,2006年4月12日,53,除運算,象集(Image Set) 關(guān)系R(X , Z), X, Z是屬性組,x是X上的取值,定義x在R中的象集為 Zx = tZ | tR tX= x 從R中選出在X上取值為x的元組,去掉X上的分量,只留Z上的分量。 除定義 R(X , Y) S(Y , Z) = x | x=rx rR YxY(S) R(X , Y) S(Y) = x | x=rx rR YxS RS中的元組x滿足性質(zhì):對yY(S) ,都有xyR。 RS = X(R) X(X(R) Y(S) R) 思考題 求同時選修了001和002號課程的學(xué)生學(xué)號 求選修了張軍同學(xué)所選全部課程的學(xué)生學(xué)號 求選修了所有課程的同學(xué)的學(xué)號,2006年4月12日,54,*賦值運算,定義 為使查詢表達簡單、清晰,可以將一個復(fù)雜的關(guān)系代數(shù)表達式分成幾個部分,每一部分都賦予一個臨時關(guān)系變量,該變量可被看作關(guān)系而在后面的表達式中使用。 臨時關(guān)系變量關(guān)系代數(shù)表達式。 賦值給臨時關(guān)系變量只是一種結(jié)果的傳遞,而賦值給永久關(guān)系則意味著對數(shù)據(jù)庫的修改。 示例 RS = X(R) X(X(R) Y(S) R)用賦值重寫為: temp1 X(R) , temp2 X(temp1 Y(S) R) result temp1 temp2,2006年4月12日,55,關(guān)系代數(shù)查詢實例,求選修了其先行課為001號課程的學(xué)生名。 下面哪個方案更高效?想一想,還有沒有別的方案? 方案1:SName(cpno = 001 (SC C S) 方案2:SName(cpno = 001 (C) SC S) 求未選修001號課程的學(xué)生號。 下面哪個方案正確? 方案1:Sno (Cno 001 (SC) 方案2:Sno (S)Sno (Cno = 001 (SC) 求僅選修了001號課程的學(xué)生號。 選修001號課程的學(xué)生僅選001號課程之外的學(xué)生 S#(C# = 001 (SC)S#(SCC# = 001 (SC),2006年4月12日,56,*廣義投影,定義 在投影列表中使用算術(shù)表達式來對投影進行擴展。 F1 , F2 , , Fn (E) F1 , F2 , , Fn 是算術(shù)表達式。 示例 求教工應(yīng)繳納的所得稅。 P# , SAL*5/100 (PROF) p#, INCOME-TAX (P# , SAL*5/100 (PROF),2006年4月12日,57,外連接(),列出老師的有關(guān)信息,包括姓名、工資、所教授的課程。 P# ,PN , SAL , C# , CN(PROF) PC C) 問題: 假設(shè)在PROC表中有教師張三,可他沒有教課記錄,在表PC中沒有他的記錄,他的記錄會出現(xiàn)上述的查詢結(jié)果中嗎?,庫結(jié)構(gòu)如下: DEPT(D# , DNAME , DEAN) S(S# , SNAME , SEX , AGE , D#) COURSE(C# , CN , PC# , CREDIT) SC(S# , C# , SCORE) PROF(P# , PNAME, AGE, D# , SAL) PC(P# , C#),2006年4月12日,58,外連接(),外連接 為避免自然連接時因失配而發(fā)生的信息丟失,可以假定往參與連接的一方表中附加一個取值全為空值的行,它和參與連接的另一方表中的任何一個未匹配上的元組都能匹配,稱之為外連接。 外連接 = 自然連接 + 失配的元組。 外連接的形式 左外連接、右外連接、全外連接 左外連接 = 自然連接 + 左側(cè)表中失配的元組。 右外連接 = 自然連接 + 右側(cè)表中失配的元組。 全外連接 = 自然連接 + 兩側(cè)表中失配的元組。,2006年4月12日,59,外連接(),所有老師的信息,2006年4月12日,60,外連接(),所有課程的信息,2006年4月12日,61,外連接(),所有老師和課程的信息,2006年4月12日,62,聚集函數(shù)(),定義 求一組值的統(tǒng)計信息,返回單一值。 使用聚集的集合可以是多重集,即一個值可以重復(fù)出現(xiàn)多次。如果想去除重復(fù)值,可以用連接符-將distinct附加在聚集函數(shù)名后,如sum-distinct。 sum:求和。 求全體教工的總工資。 sumSAL(PROF) 求001號學(xué)生的總成績。 sumSCORE(S# = 001 (SC),2006年4月12日,63,聚集函數(shù)(),avg:求平均。 求001號同學(xué)選修課程的平均成績。 avgSCORE(S# = 001(SC) count:計數(shù)。 求001號同學(xué)選修的課程數(shù)。 countC#(S# = 001(SC) 求任課老師的總數(shù)。 count-distinctP#(PC),2006年4月12日,64,聚集函數(shù)(),max:求最大值。 min:求最小值。 求學(xué)生選修數(shù)學(xué)的最高成績。 maxSCORE(CN = 數(shù)學(xué)(C) SC) 分組 將一個元組集合分為若干個組,在每個分組上使用聚集函數(shù)。 屬性下標 G 聚集函數(shù)屬性下標(關(guān)系),對此屬性在每個分組上運用聚集函數(shù),按此屬性上的值對關(guān)系分組,2006年4月12日,65,聚集函數(shù)(),分組運算G 的一般形式 G1 , G2 , . , Gn G F1 , A1 , F2 , A2 , , Fm , Am(E) Gi是用于分組的屬性, Fi是聚

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論