第四章 關(guān)系數(shù)據(jù)庫.ppt_第1頁
第四章 關(guān)系數(shù)據(jù)庫.ppt_第2頁
第四章 關(guān)系數(shù)據(jù)庫.ppt_第3頁
第四章 關(guān)系數(shù)據(jù)庫.ppt_第4頁
第四章 關(guān)系數(shù)據(jù)庫.ppt_第5頁
已閱讀5頁,還剩140頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章 關(guān)系數(shù)據(jù)庫,4.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)及形式化定義 4.2 關(guān)系操作 4.3 關(guān)系的完整性 4.4 關(guān)系代數(shù) 4.5 關(guān)系演算,1,關(guān)系數(shù)據(jù)庫簡介,提出關(guān)系模型的是美國IBM公司的E.F.Codd 1970年提出關(guān)系數(shù)據(jù)模型 E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, Communication of the ACM,1970 之后,提出了關(guān)系代數(shù)和關(guān)系演算的概念 1972年提出了關(guān)系的第一、第二、第三范式 1974年提出了關(guān)系的BC范式,2,關(guān)系,單一的數(shù)據(jù)結(jié)構(gòu)-關(guān)系 現(xiàn)實世界的實體以及實體間的各種

2、聯(lián)系均用關(guān)系來表示 邏輯結(jié)構(gòu)-二維表 從用戶角度,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表 建立在集合代數(shù)的基礎(chǔ)上,3,關(guān)系, 域(Domain) 2. 笛卡爾積(Cartesian Product) 3. 關(guān)系(Relation),4, 域(Domain),域是一組具有相同數(shù)據(jù)類型的值的集合。例: 整數(shù) 實數(shù) 介于某個取值范圍的整數(shù) 長度指定長度的字符串集合 男,女 .,5,2. 笛卡爾積(Cartesian Product),笛卡爾積 給定一組域D1,D2,Dn,這些域中可以有相同的。 D1,D2,Dn的笛卡爾積為: D1D2Dn (d1,d2,dn)diDi,i1,2,n 所有域的所有取值的

3、一個組合 不能重復(fù),6,笛卡爾積,元組(Tuple) 笛卡爾積中每一個元素(d1,d2,dn)叫作一個n元組(n-tuple)或簡稱元組(Tuple) (張清玫,計算機專業(yè),李勇)、(張清玫,計算機專業(yè),劉晨)等都是元組 分量(Component) 笛卡爾積元素(d1,d2,dn)中的每一個值di叫作一個分量 張清玫、計算機專業(yè)、李勇、劉晨等都是分量,7,笛卡爾積,基數(shù)(Cardinal number) 若Di(i1,2,n)為有限集,其基數(shù)為mi(i1,2,n),則D1D2Dn的基數(shù)M為: 笛卡爾積的表示方法 笛卡爾積可表示為一個二維表 表中的每行對應(yīng)一個元組,表中的每列對應(yīng)一個域,8,9,

4、3. 關(guān)系(Relation),1) 關(guān)系 D1D2Dn的子集叫作在域D1,D2,Dn上的 關(guān)系,表示為 R(D1,D2,Dn) R:關(guān)系名 n:關(guān)系的目或度(Degree),10,關(guān)系,2) 元組 關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。 3) 單元關(guān)系與二元關(guān)系 當(dāng)n=1時,稱該關(guān)系為單元關(guān)系(Unary relation) 或一元關(guān)系 當(dāng)n=2時,稱該關(guān)系為二元關(guān)系(Binary relation),11,關(guān)系,4) 關(guān)系的表示 關(guān)系也是一個二維表,表的每行對應(yīng)一個元組,表的每列對應(yīng)一個域,12,關(guān)系,5)屬性 關(guān)系中不同列可以對應(yīng)相同的域 為了加以區(qū)分,必須對每列起一個名字,稱為

5、屬性(Attribute) n目關(guān)系必有n個屬性,13,關(guān)系,6) 碼 候選碼(Candidate key) 若關(guān)系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼 簡單的情況:候選碼只包含一個屬性 全碼(All-key) 最極端的情況:關(guān)系模式的所有屬性組是這個關(guān)系模式的候選碼,稱為全碼(All-key),14,關(guān)系,主碼 若一個關(guān)系有多個候選碼,則選定其中一個為主碼(Primary key) 主屬性 候選碼的諸屬性稱為主屬性(Prime attribute) 不包含在任何侯選碼中的屬性稱為非主屬性( Non-Prime attribute) 或非碼屬性(Non-key attr

6、ibute),15,關(guān)系,D1,D2,Dn的笛卡爾積的某個子集才有實際含義 例:表2.1 的笛卡爾積沒有實際意義 取出有實際意義的元組來構(gòu)造關(guān)系 關(guān)系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) 假設(shè):導(dǎo)師與專業(yè):1:1, 導(dǎo)師與研究生:1:n 主碼:POSTGRADUATE(假設(shè)研究生不會重名) SAP關(guān)系可以包含三個元組 (張清玫,計算機專業(yè),李勇), (張清玫,計算機專業(yè),劉晨), (劉逸,信息專業(yè),王敏) ,16,關(guān)系,7) 三類關(guān)系 基本關(guān)系(基本表或基表) 實際存在的表,是實際存儲數(shù)據(jù)的邏輯表示 查詢表 查詢結(jié)果對應(yīng)的表 視圖表 由基本表或其他視

7、圖表導(dǎo)出的表,是虛表,不對 應(yīng)實際存儲的數(shù)據(jù),17,關(guān)系,8)基本關(guān)系的性質(zhì) 列是同質(zhì)的(Homogeneous) 不同的列可出自同一個域 其中的每一列稱為一個屬性 不同的屬性要給予不同的屬性名 列的順序無所謂,,列的次序可以任意交換 任意兩個元組的候選碼不能相同 行的順序無所謂,行的次序可以任意交換,18,基本關(guān)系的性質(zhì), 分量必須取原子值 這是規(guī)范條件中最基本的一條 表4.3 非規(guī)范化關(guān)系,19,1什么是關(guān)系模式,關(guān)系模式(Relation Schema)是型 關(guān)系是值 關(guān)系模式是對關(guān)系的描述 元組集合的結(jié)構(gòu) 屬性構(gòu)成 屬性來自的域 屬性與域之間的映象關(guān)系 元組語義以及完整性約束條件 屬性

8、間的數(shù)據(jù)依賴關(guān)系集合,20,2定義關(guān)系模式,關(guān)系模式可以形式化地表示為: R(U,D,DOM,F(xiàn)) R 關(guān)系名 U 組成該關(guān)系的屬性名集合 D 屬性組U中屬性所來自的域 DOM 屬性向域的映象集合 F 屬性間的數(shù)據(jù)依賴關(guān)系集合,21,定義關(guān)系模式,例: 導(dǎo)師和研究生出自同一個域人, 取不同的屬性名,并在模式中定義屬性向域 的映象,即說明它們分別出自哪個域: DOM(SUPERVISOR-PERSON) = DOM(POSTGRADUATE-PERSON) =PERSON,22,定義關(guān)系模式,關(guān)系模式通??梢院営洖?R (U) 或 R (A1,A2,An) R: 關(guān)系名 A1,A2,An : 屬

9、性名 注:域名及屬性向域的映象常常直接說明為 屬性的類型、長度,23,3. 關(guān)系模式與關(guān)系,關(guān)系模式 對關(guān)系的描述 靜態(tài)的、穩(wěn)定的 關(guān)系 關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容 動態(tài)的、隨時間不斷變化的 關(guān)系模式和關(guān)系往往統(tǒng)稱為關(guān)系 通過上下文加以區(qū)別,24,關(guān)系數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫 在一個給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫 關(guān)系數(shù)據(jù)庫的型與值,25,2. 關(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ù)庫,26,基本關(guān)系操作,常

10、用的關(guān)系操作 查詢:選擇、投影、連接、除、并、交、差 數(shù)據(jù)更新:插入、刪除、修改 查詢的表達能力是其中最主要的部分 選擇、投影、并、差、笛卡爾基是5種基本操作 關(guān)系操作的特點 集合操作方式:操作的對象和結(jié)果都是集合,一次一集合的方式,27,關(guān)系數(shù)據(jù)庫語言的分類,關(guān)系代數(shù)語言 用對關(guān)系的運算來表達查詢要求 代表:ISBL 關(guān)系演算語言:用謂詞來表達查詢要求 元組關(guān)系演算語言 謂詞變元的基本對象是元組變量 代表:APLHA, QUEL 域關(guān)系演算語言 謂詞變元的基本對象是域變量 代表:QBE 具有關(guān)系代數(shù)和關(guān)系演算雙重特點的語言 代表:SQL(Structured Query Language),

11、28,關(guān)系的三類完整性約束,實體完整性和參照完整性: 關(guān)系模型必須滿足的完整性約束條件 稱為關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持 用戶定義的完整性: 應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束,29,實體完整性,規(guī)則4.1 實體完整性規(guī)則(Entity Integrity) 若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值 例: SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) POSTGRADUATE: 主碼(假設(shè)研究生不會重名) 不能取空值,30,實體完整性,實體完整性規(guī)則的說明 (1) 實體完整性規(guī)則是針對基本關(guān)系而言的。一個基本表通常對應(yīng)現(xiàn)

12、 實世界的一個實體集。 (2) 現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。 (3) 關(guān)系模型中以主碼作為唯一性標識。 (4) 主碼中的屬性即主屬性不能取空值。 主屬性取空值,就說明存在某個不可標識的實體,即存在不可區(qū)分的實體,這與第(2)點相矛盾,因此這個規(guī)則稱為實體完整性,31,參照完整性,1. 關(guān)系間的引用 2. 外碼 3. 參照完整性規(guī)則,32,1. 關(guān)系間的引用,在關(guān)系模型中實體及實體間的聯(lián)系都是用關(guān)系來描 述的,因此可能存在著關(guān)系與關(guān)系間的引用。 例1 學(xué)生實體、專業(yè)實體 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡) 專業(yè)(專業(yè)號,專業(yè)名),主碼,主碼,學(xué)生關(guān)系引用了專業(yè)關(guān)系的

13、主碼“專業(yè)號”。 學(xué)生關(guān)系中的“專業(yè)號”值必須是確實存在的專業(yè)的專業(yè)號 ,即專業(yè) 。關(guān)系中有該專業(yè)的記錄。,33,關(guān)系間的引用,例2 學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡) 課程(課程號,課程名,學(xué)分) 選修(學(xué)號,課程號,成績),34,關(guān)系間的引用,例3 學(xué)生實體及其內(nèi)部的一對多聯(lián)系 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長),“學(xué)號”是主碼,“班長”是外碼,它引用了本關(guān)系的“學(xué)號” “班長” 必須是確實存在的學(xué)生的學(xué)號,35,2外碼(Foreign Key),設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼。如果F與基本關(guān)系S的主碼Ks相對應(yīng),則

14、稱F是基本關(guān)系R的外碼 基本關(guān)系R稱為參照關(guān)系(Referencing Relation) 基本關(guān)系S稱為被參照關(guān)系(Referenced Relation)或目標關(guān)系(Target Relation),36,外碼,例1:學(xué)生關(guān)系的“專業(yè)號與專業(yè)關(guān)系的主碼“專業(yè)號”相對應(yīng) “專業(yè)號”屬性是學(xué)生關(guān)系的外碼 專業(yè)關(guān)系是被參照關(guān)系,學(xué)生關(guān)系為參照關(guān)系,37,外碼,例2: 選修關(guān)系的“學(xué)號” 與學(xué)生關(guān)系的主碼“學(xué)號”相對應(yīng) 選修關(guān)系的“課程號”與課程關(guān)系的主碼“課程號”相對應(yīng) “學(xué)號”和“課程號”是選修關(guān)系的外碼 學(xué)生關(guān)系和課程關(guān)系均為被參照關(guān)系 選修關(guān)系為參照關(guān)系,38,外碼,例3:“班長”與本身的

15、主碼“學(xué)號”相對應(yīng) “班長”是外碼 學(xué)生關(guān)系既是參照關(guān)系也是被參照關(guān)系,39,外碼,關(guān)系R和S不一定是不同的關(guān)系 目標關(guān)系S的主碼Ks 和參照關(guān)系的外碼F必須定義在同一個(或一組)域上 外碼并不一定要與相應(yīng)的主碼同名 當(dāng)外碼與相應(yīng)的主碼屬于不同關(guān)系時,往往取相同的名字,以便于識別,40,3. 參照完整性規(guī)則,規(guī)則4.2 參照完整性規(guī)則 若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為: 或者取空值(F的每個屬性值均為空值) 或者等于S中某個元組的主碼值,41,參照完整性規(guī)則,例1: 學(xué)生關(guān)系中每個元組的

16、“專業(yè)號”屬性只取兩類值: (1)空值,表示尚未給該學(xué)生分配專業(yè) (2)非空值,這時該值必須是專業(yè)關(guān)系中某個元組的“專業(yè)號”值,表示該學(xué)生不可能分配一個不存在的專業(yè),42,參照完整性規(guī)則,例2 : 選修(學(xué)號,課程號,成績) “學(xué)號”和“課程號”可能的取值 : (1)選修關(guān)系中的主屬性,不能取空值 (2)只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼值,43,參照完整性規(guī)則,例3: 學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長) “班長”屬性值可以取兩類值: (1)空值,表示該學(xué)生所在班級尚未選出班長 (2)非空值,該值必須是本關(guān)系中某個元組的學(xué)號值,44,用戶定義的完整性,針對某一具體關(guān)系數(shù)據(jù)庫的約束條

17、件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求 關(guān)系模型應(yīng)提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能,45,用戶定義的完整性,例: 課程(課程號,課程名,學(xué)分) “課程號”屬性必須取唯一值 非主屬性“課程名”也不能取空值 “學(xué)分”屬性只能取值1,2,3,4,46,關(guān)系代數(shù),概述 傳統(tǒng)的集合運算 專門的關(guān)系運算,47,表4.4 關(guān)系代數(shù)運算符,概 述,48,表4.4 關(guān)系代數(shù)運算符,概 述,49,并(Union),R和S 具有相同的目n(即兩個關(guān)系都有n個屬性) 相應(yīng)的屬性取自同一個域 RS 仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成 RS =

18、 t|t Rt S ,50,并,51,差(Difference),R和S 具有相同的目n 相應(yīng)的屬性取自同一個域 R - S 仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成 R -S = t|tRtS ,52,差,53,交(Intersection),R和S 具有相同的目n 相應(yīng)的屬性取自同一個域 RS 仍為n目關(guān)系,由既屬于R又屬于S的元組組成 RS = t|t Rt S RS = R (R-S),54,交,55,笛卡爾積,嚴格地講應(yīng)該是廣義的笛卡爾積(Extended Cartesian Product) R: n目關(guān)系,k1個元組 S: m目關(guān)系,k2個元組 RS 列:(n+m)列元組的

19、集合 元組的前n列是關(guān)系R的一個元組 后m列是關(guān)系S的一個元組 行:k1k2個元組 RS = tr ts |tr R tsS ,56,笛卡爾積,57,專門的關(guān)系運算,先引入幾個記號 (1) R,tR,tAi 設(shè)關(guān)系模式為R(A1,A2,An) 它的一個關(guān)系設(shè)為R tR表示t是R的一個元組 tAi則表示元組t中相應(yīng)于屬性Ai的一個分量,58,專門的關(guān)系運算,(2) A,tA, A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,則A稱為屬性列或?qū)傩越M。 tA=(tAi1,tAi2,tAik)表示元組t在屬性列A上諸分量的集合。 A則表示A1,A2,An中去掉

20、Ai1,Ai2,Aik后剩余的屬性組。,59,專門的關(guān)系運算,(3) tr ts R為n目關(guān)系,S為m目關(guān)系。 tr R,tsS, tr ts稱為元組的連接。 tr ts是一個n + m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。,60,專門的關(guān)系運算,(4)象集Zx 給定一個關(guān)系R(X,Z),X和Z為屬性組。 當(dāng)tX=x時,x在R中的象集(Images Set)為: Zx=tZ|t R,tX=x 它表示R中屬性組X上值為x的諸元組在Z上分量的集合,61,專門的關(guān)系運算,x1在R中的象集 Zx1 =Z1,Z2,Z3 x2在R中的象集 Zx2 =Z2,Z3, x3在R中

21、的象集 Zx3=Z1,Z3,象集舉例,62,專門的關(guān)系運算,選擇 投影 連接 除,63,專門的關(guān)系運算,4) 學(xué)生-課程數(shù)據(jù)庫: 學(xué)生關(guān)系Student、課程關(guān)系Course和選修關(guān)系SC,64,專門的關(guān)系運算,Course,65,專門的關(guān)系運算,SC,66,選擇(Selection),1) 選擇又稱為限制(Restriction) 2) 選擇運算符的含義 在關(guān)系R中選擇滿足給定條件的諸元組 F(R) = t|tRF(t)= 真 F:選擇條件,是一個邏輯表達式,基本形式為: X1Y1,67,選擇,3) 選擇運算是從關(guān)系R中選取使邏輯表達式F為真的元組,是從行的角度進行的運算,68,選擇,例1

22、查詢信息系(IS系)全體學(xué)生 Sdept = IS (Student) 或 5 =IS (Student) 結(jié)果:,69,選擇,例2 查詢年齡小于20歲的學(xué)生 Sage 20(Student) 或 4 20(Student) 結(jié)果:,70,投影(Projection),1)投影運算符的含義 從R中選擇出若干屬性列組成新的關(guān)系 A(R) = tA | t R A:R中的屬性列,71,投影(Projection),2)投影操作主要是從列的角度進行運算 但投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(避免重復(fù)行),72,投影,例3 查詢學(xué)生的姓名和所在系 即求Student關(guān)系上學(xué)生姓

23、名和所在系兩個屬性上的投影 Sname,Sdept(Student) 或 2,5(Student),73,投影,結(jié)果:,74,投影,例4 查詢學(xué)生關(guān)系Student中都有哪些系 Sdept(Student) 結(jié)果:,75,連接(Join),1)連接也稱為連接 2)連接運算的含義 從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組 R S = | tr Rts StrAtsB A和B:分別為R和S上度數(shù)相等且可比的屬性組 :比較運算符 連接運算從R和S的廣義笛卡爾積RS中選取(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系的元組,76,連接,3)兩類常用連接運算 等值連接(equ

24、ijoin) 什么是等值連接 為“”的連接運算稱為等值連接 等值連接的含義 從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為: R S = | tr Rts StrA = tsB ,A=B,77,連接,自然連接(Natural join) 自然連接是一種特殊的等值連接 兩個關(guān)系中進行比較的分量必須是相同的屬性組 在結(jié)果中把重復(fù)的屬性列去掉 自然連接的含義 R和S具有相同的屬性組B R S = | tr Rts StrB = tsB ,78,連接,4)一般的連接操作是從行的角度進行運算。 自然連接還需要取消重復(fù)列,所以是同時從行和列的角度進行運算。,79,連接,例5關(guān)系R

25、和關(guān)系S 如下所示:,R S,CE,R S,R S,結(jié)果,結(jié)果,結(jié)果,80,連接,外連接 如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(Null),這種連接就叫做外連接(OUTER JOIN)。,81,左外連接 如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接(LEFT OUTER JOIN或LEFT JOIN),連接,82,右外連接 如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接(RIGHT OUTER JOIN或RIGHT JOIN)。,連接,83,除(Division),給定關(guān)系R (X,Y) 和S (Y,Z),其中X,Y,Z為屬性組。 R中的Y與S中的Y可以有不同的屬

26、性名,但必須出自相同的域集。 R與S的除運算得到一個新的關(guān)系P(X), P是R中滿足下列條件的元組在 X 屬性列上的投影: 元組在X上分量值x的象集Yx包含S在Y上投影的集合,記作: RS = tr X | tr RY (S) Yx Yx:x在R中的象集,x = trX,84,除,2)除操作是同時從行和列角度進行運算,85,除,例6設(shè)關(guān)系R、S分別為下圖的(a)和(b),RS的結(jié)果為圖(c),86,分析,在關(guān)系R中,A可以取四個值a1,a2,a3,a4 a1的象集為 (b1,c2),(b2,c3),(b2,c1) a2的象集為 (b3,c7),(b2,c3) a3的象集為 (b4,c6) a4

27、的象集為 (b6,c6) S在(B,C)上的投影為 (b1,c2),(b2,c1),(b2,c3) 只有a1的象集包含了S在(B,C)屬性組上的投影 所以 RS =a1,87,綜合舉例,以學(xué)生-課程數(shù)據(jù)庫為例 (P56) 例7 查詢至少選修1號課程和3號課程的學(xué)生號碼 首先建立一個臨時關(guān)系K: 然后求:Sno,Cno(SC)K,88,綜合舉例,例 7續(xù) Sno,Cno(SC) 200215121象集1,2,3 200215122象集2,3 K=1,3 于是:Sno,Cno(SC)K=200215121,89,綜合舉例,例 8 查詢選修了2號課程的學(xué)生的學(xué)號。 Sno(Cno=2(SC) 200

28、215121,200215122,90,綜合舉例,例9 查詢至少選修了一門其直接先行課為5號課程的 的學(xué)生姓名 Sname(Cpno=5(Course SC Student) 或 Sname(Cpno=5(Course) SC Sno,Sname(Student) 或 Sname (Sno (Cpno=5 (Course) SC) Sno,Sname (Student),91,綜合舉例,例10 查詢選修了全部課程的學(xué)生號碼和姓名。 Sno,Cno(SC)Cno(Course) Sno,Sname(Student),92,關(guān)系演算,關(guān)系演算 以數(shù)理邏輯中的謂詞演算為基礎(chǔ) 按謂詞變元不同 進行分類

29、 1.元組關(guān)系演算: 以元組變量作為謂詞變元的基本對象 元組關(guān)系演算語言ALPHA 2.域關(guān)系演算: 以域變量作為謂詞變元的基本對象 域關(guān)系演算語言QBE,93,元組關(guān)系演算語言ALPHA,由E.F.Codd提出 INGRES所用的QUEL語言是參照ALPHA語言研制的 語句 檢索語句 GET 更新語句 PUT,HOLD,UPDATE,DELETE,DROP,94,一、檢索操作,語句格式: GET工作空間名 (定額)(表達式1) :操作條件 DOWN/UP 表達式2 定額:規(guī)定檢索的元組個數(shù) 格式: 數(shù)字 表達式1:指定語句的操作對象 格式: 關(guān)系名| 關(guān)系名. 屬性名| 元組變量. 屬性名|

30、 集函數(shù) , 操作條件:將操作結(jié)果限定在滿足條件的元組中 格式: 邏輯表達式 表達式2:指定排序方式 格式: 關(guān)系名. 屬性名| 元組變量. 屬性名, ,95,一、檢索操作,(1)簡單檢索 GET工作空間名 (表達式1) 例1 查詢所有被選修的課程號碼。 GET W (SC.Cno) 例2 查詢所有學(xué)生的數(shù)據(jù)。 GET W (Student),96,限定的檢索,格式 GET工作空間名(表達式1):操作條件 例3查詢信息系(IS)中年齡小于20歲的學(xué)生的學(xué)號和年齡 GET W (Student.Sno,Student.Sage): Student.Sdept=IS Student.Sage20,

31、97,帶排序的檢索,格式 GET工作空間名(表達式1):操作條件 DOWN/UP 表達式2 例4查詢計算機科學(xué)系(CS)學(xué)生的學(xué)號、年齡,結(jié)果按年齡降 序排序 GET W (Student.Sno,Student.Sage): Student.Sdept=CS DOWN Student.Sage,98,帶定額的檢索,格式 GET工作空間名(定額)(表達式1) :操作條件 DOWN/UP 表達式2 例5 取出一個信息系學(xué)生的學(xué)號。 GET W (1) (Student.Sno): Student.Sdept=IS 例6 查詢信息系年齡最大的三個學(xué)生的學(xué)號及其年齡,結(jié)果按年齡降序排序。 GET W

32、 (3) (Student.Sno,Student.Sage): Student.Sdept=IS DOWN Student.Sage,99,用元組變量的檢索,元組變量的含義 表示可以在某一關(guān)系范圍內(nèi)變化(也稱為范圍變量Range Variable) 元組變量的用途 簡化關(guān)系名:設(shè)一個較短名字的元組變量來代替較長的關(guān)系名。 操作條件中使用量詞時必須用元組變量。 定義元組變量 格式:RANGE 關(guān)系名 變量名 一個關(guān)系可以設(shè)多個元組變量,100,用存在量詞的檢索,操作條件中使用量詞時必須用元組變量 例8 查詢選修2號課程的學(xué)生名字。 RANGE SC XGET W (Student.Sname)

33、: X(X.Sno=Student.SnoX.Cno=2) 例9 查詢選修了這樣課程的學(xué)生學(xué)號,其直接先行課是6號課程。 RANGE Course CX GET W (SC.Sno): CX (CX.Cno=SC.CnoCX.Pcno=6),101,用存在量詞的檢索,例10查詢至少選修一門其先行課為6號課程的學(xué)生名字 RANGE Course CX SC SCX GET W (Student.Sname): SCX (SCX.Sno=Student.Sno CX (CX.Cno=SCX.CnoCX.Pcno=6) 前束范式形式: GET W (Student.Sname): SCXCX (SC

34、X.Sno=Student.Sno CX.Cno=SCX.CnoCX.Pcno=6),102,帶有多個關(guān)系的表達式的檢索,例11 查詢成績?yōu)?0分以上的學(xué)生名字與課程名字。 RANGE SC SCX GET W(Student.Sname,Course.Cname): SCX (SCX.Grade90 SCX.Sno=Student.Sno Course.Cno=SCX.Cno),103,用全稱量詞的檢索,例12 查詢不選1號課程的學(xué)生名字 RANGE SC SCX GET W (Student.Sname): SCX (SCX.SnoStudent.SnoSCX.Cno1) 用存在量詞表示:

35、 RANGE SC SCX GET W (Student.Sname): SCX (SCX.Sno=Student.SnoSCX.Cno=1),104,用兩種量詞的檢索,例13 查詢選修了全部課程的學(xué)生姓名。 RANGE Course CX SC SCX GET W (Student.Sname): CX SCX (SCX.Sno=Student.Sno SCX.Cno=CX.Cno),105,用蘊函(Implication)的檢索,例14 查詢最少選修了200215122學(xué)生所選課程的學(xué)生學(xué)號 RANGE Couse CX SC SCX SC SCY GET W (Student.Sno):

36、 CX(SCX (SCX.Sno=200215122SCX.Cno=CX.Cno) SCY(SCY.Sno=Student.Sno SCY.Cno= CX.Cno),106,聚集函數(shù),常用聚集函數(shù)(Aggregation function)或內(nèi)部函數(shù)(Build-in function),關(guān)系演算中的聚集函數(shù),107,聚集函數(shù),例15 查詢學(xué)生所在系的數(shù)目。 GET W ( COUNT(Student.Sdept) ) COUNT函數(shù)在計數(shù)時會自動排除重復(fù)值。 例16 查詢信息系學(xué)生的平均年齡 GET W (AVG(Student.Sage): Student.Sdept=IS ),108,二

37、、更新操作,(1) 修改操作 (2) 插入操作 (3) 刪除操作,109,修改操作步驟, 用HOLD語句將要修改的元組從數(shù)據(jù)庫中讀到工作空間中 HOLD 工作空間名(表達式1):操作條件 HOLD語句是帶上并發(fā)控制的GET語句 用宿主語言修改工作空間中元組的屬性 用UPDATE語句將修改后的元組送回數(shù)據(jù)庫中 UPDATE 工作空間名,110,修改操作,例17 把200215121學(xué)生從計算機科學(xué)系轉(zhuǎn)到信息系。 HOLD W (Student.Sno, Student.Sdetp): Student.Sno=200215121 (從Student關(guān)系中讀出95007學(xué)生的數(shù)據(jù)) MOVE IS

38、TO W.Sdept (用宿主語言進行修改) UPDATE W (把修改后的元組送回Student關(guān)系),111,插入操作,步驟 用宿主語言在工作空間中建立新元組 用PUT語句把該元組存入指定關(guān)系中 PUT 工作空間名 (關(guān)系名) PUT語句只對一個關(guān)系操作,關(guān)系演算中的聚集函數(shù),112,插入操作,例18 學(xué)校新開設(shè)了一門2學(xué)分的課程“計算機組織與結(jié)構(gòu)”,其課程號為8,直接先行課為6號課程。插入該課程元組 MOVE 8 TO W.Cno MOVE 計算機組織與結(jié)構(gòu) TO W.Cname MOVE 6 TO W.Cpno MOVE 2 TO W.Ccredit PUT W (Course),11

39、3,刪除操作,步驟 用HOLD語句把要刪除的元組從數(shù)據(jù)庫中讀到工作空間中 用DELETE語句刪除該元組 DELETE 工作空間名,114,刪除操作,例19 200215125學(xué)生因故退學(xué),刪除該學(xué)生元組 HOLD W (Student): Student.Sno=200215125 DELETE W,115,刪除操作,例20 將學(xué)號200215121改為200215126 HOLD W (Student): Student.Sno=200215121 DELETE W MOVE 200215126 TO W.Sno MOVE 李勇 TO W.Sname MOVE 男 TO W.Ssex MOV

40、E 20 TO W.Sage MOVE CS TO W.Sdept PUT W (Student),116,刪除操作,例21 刪除全部學(xué)生 HOLD W (Student) DELETE W 為保證參照完整性 ,刪除Student中元組時相應(yīng)地要刪除SC中的元組 HOLD W (SC) DELETE W,117,域關(guān)系演算語言QBE,一種典型的域關(guān)系演算語言 由M.M.Zloof提出 以元組變量的分量即域變量作為謂詞變元的基本對象 QBE:Query By Example 基于屏幕表格的查詢語言 查詢要求:以填寫表格的方式構(gòu)造查詢 用示例元素(域變量)來表示查詢結(jié)果可能的情況 查詢結(jié)果:以表格形式顯示,118,QBE操作框架,119,一、檢索操作,1.簡單查詢 例1求信息系全

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論