考研復(fù)試數(shù)據(jù)庫課件_第1頁
考研復(fù)試數(shù)據(jù)庫課件_第2頁
考研復(fù)試數(shù)據(jù)庫課件_第3頁
考研復(fù)試數(shù)據(jù)庫課件_第4頁
考研復(fù)試數(shù)據(jù)庫課件_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、12.1 關(guān)系模型簡(jiǎn)述 關(guān)系模型與關(guān)系運(yùn)算概覽(續(xù))關(guān)系運(yùn)算有關(guān)系代數(shù)和關(guān)系演算兩種形式,關(guān)系演算又進(jìn)一步區(qū)分:元組演算和域演算關(guān)系代數(shù)示例:基于集合的運(yùn)算基于關(guān)系代數(shù)設(shè)計(jì)的數(shù)據(jù)庫語言(ISBL) 用計(jì)算機(jī)可識(shí)別的符號(hào)表征關(guān)系代數(shù)的運(yùn)算符號(hào)(R*S):課程號(hào)=c2)%,課程名R:F表示選擇運(yùn)算, R%表示投影運(yùn)算2.1 關(guān)系模型簡(jiǎn)述 關(guān)系模型與關(guān)系運(yùn)算概覽形象地說,一個(gè)關(guān)系(relation)就是一個(gè)Table關(guān)系模型就是處理Table的,它由三個(gè)部分組成:(詳細(xì)內(nèi)容在后面講述)描述DB各種數(shù)據(jù)的基本結(jié)構(gòu)形式(采用Table描述)描述Table與Table之間所可能發(fā)生的(采用關(guān)系運(yùn)算等描述)

2、描述這些操作所應(yīng)遵循的約束條件(被稱為完整性條件)將要學(xué)習(xí) Table如何描述,有哪些操作、 結(jié)果是什么、 有哪些約束等?操作結(jié)果有哪些?是什么?2.1 關(guān)系模型簡(jiǎn)述 關(guān)系模型的提出與作用關(guān)系模型最早由E.F.Codd在1970年提出是從表(Table)及表的處理方式抽象出來的, 是在對(duì)傳統(tǒng)表及其操作嚴(yán)格定義基礎(chǔ)上,引入集合理論與邏輯學(xué)理論是數(shù)據(jù)庫的三大經(jīng)典數(shù)據(jù)模型之一, 也是現(xiàn)在大多數(shù)商品化數(shù)據(jù)庫系統(tǒng)所仍然使用的數(shù)據(jù)模型標(biāo)準(zhǔn)的數(shù)據(jù)庫語言(SQL語言)是建立在關(guān)系模型基礎(chǔ)之上的, 數(shù)據(jù)庫領(lǐng)域的眾多理論也都是建立在關(guān)系模型基礎(chǔ)之上的第2章 關(guān)系模型與關(guān)系運(yùn)算關(guān)系模型與關(guān)系運(yùn)算簡(jiǎn)述 關(guān)系模型的提出

3、與作用 關(guān)系模型與關(guān)系運(yùn)算概覽 本章的目標(biāo)關(guān)系與關(guān)系模型關(guān)系代數(shù)運(yùn)算關(guān)系元組演算關(guān)系域演算語言及QBE小結(jié)第2章 關(guān)系模型與關(guān)系運(yùn)算數(shù)據(jù)庫系統(tǒng)基礎(chǔ)22.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義如何嚴(yán)格地定義Table呢?列/字段/屬性/數(shù)據(jù)項(xiàng)列名表/關(guān)系標(biāo)題/模式行/元組/列值第2章 關(guān)系模型與關(guān)系運(yùn)算關(guān)系模型與關(guān)系運(yùn)算簡(jiǎn)述關(guān)系與關(guān)系模型 關(guān)系 關(guān)系模型關(guān)系代數(shù)運(yùn)算關(guān)系元組演算關(guān)系域演算語言及QBE小結(jié)2.1 關(guān)系模型簡(jiǎn)述 本章目標(biāo)理解關(guān)系(relation),理解如何用Relation對(duì)Table進(jìn)行抽象或說嚴(yán)格定義理解關(guān)系/表(relation/table)所具有的各種特性,理解關(guān)

4、系模型熟練掌握關(guān)系代數(shù)、元組演算和域演算(域演算以QBE為例來學(xué)習(xí)),用這些關(guān)系運(yùn)算來表達(dá)各種復(fù)雜的檢索需求,以便于后續(xù)SQL語言的學(xué)習(xí)2.1 關(guān)系模型簡(jiǎn)述 關(guān)系模型與關(guān)系運(yùn)算概覽(續(xù))關(guān)系代數(shù)與元組演算是標(biāo)準(zhǔn)數(shù)據(jù)庫語言SQL語言的基礎(chǔ)QBE語言由于其可視化效果較好,也很受使用者的歡迎SQL語言將在下一章學(xué)習(xí)本章將要學(xué)習(xí):關(guān)系代數(shù)和元組演算本章還將學(xué)習(xí)QBE語言2.1 關(guān)系模型簡(jiǎn)述 關(guān)系模型與關(guān)系運(yùn)算概覽(續(xù))域演算示例:基于示例的運(yùn)算基于域演算設(shè)計(jì)的數(shù)據(jù)庫語言示例:(QBE Query By Exle)2.1 關(guān)系模型簡(jiǎn)述 關(guān)系模型與關(guān)系運(yùn)算概覽(續(xù))元組演算示例:基于邏輯的運(yùn)算基于元組演算

5、設(shè)計(jì)的數(shù)據(jù)庫語言(Ingres系統(tǒng)的QUEL) 用計(jì)算機(jī)可識(shí)別的符號(hào)表征元組演算的運(yùn)算符號(hào)range of t is R range of u is W retrieve twhere t.sage u.sage32.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù)) 關(guān)系(Relation)關(guān)系模式R(A1 D1 , A2 D2 , , An Dn ) 中屬性向域的映象在很多DBMS中一般直接說明為屬性的類型、長(zhǎng)度等例如:Student( S# char(8), Sname char(10), Ssex char(2), Sageeger, D# char(2), Sclass char

6、(6) )再如:Course ( C# char(3), Cname char(12), Chours eger, Credit float(1), T# char(3) )SC( S# char(8), C# char(3), Score float(1) )2.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù)) 關(guān)系(Relation)關(guān)系可用R(A1 D1 , A2 D2 , , An Dn )表示,可簡(jiǎn)記為R(A1 , A2 , , An ),這種描述又被稱為關(guān)系模式(Schema)或表標(biāo)題(head)R是關(guān)系的名字, Ai 是屬性, Di 是屬性所對(duì)應(yīng)的域, n是關(guān)系的度或目 (

7、degree), 關(guān)系中元組的數(shù)目稱為關(guān)系的基數(shù)(Cardinality)關(guān)系模式中Ai (i = 1, ,n)必須是不同的, 而Di(i = 1, ,n)是可以相同的例如下圖的關(guān)系為一3目關(guān)系,描述為家庭(丈夫,妻人,兒童)或家庭(丈夫,妻子,)2.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù))由于積中的所有元組并不都是有意義的,因此關(guān)系(Relation)一組域D1 , D2 , , Dn的積的子集積中具有某一方面意義的那些元組被稱作一個(gè)關(guān)系(Relation)由于關(guān)系的不同列可能來自同一個(gè)域,為區(qū)分,需要為每一列起一個(gè)名字,該名字即為屬性名。不同列名的列值可以來自相同域。列名(屬

8、性名)列值:來自域2.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù))元組(d1 , d2 , , dn)的每一個(gè)值di叫做一個(gè)分量(component)元組(d1 , d2 , , dn)是從每一個(gè)域任取一個(gè)值所形成的一種組合,笛積是所有這種可能組合的集合, 即:積是由n個(gè)域形成的所有可能的n-元組的集合若Di的基數(shù)為mi,則積的基數(shù),即元組個(gè)數(shù)為 m1m2 mn域值/分量2.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù))再定義“元組”及所有可能組的元組:積積(Cartesian Product)一組域D1 , D2 , , Dn的積為D1D2Dn = (d1 , d2 , ,

9、 dn) | diDi , i=1,n 積的每個(gè)元素(d1 , d2 , , dn)稱作一個(gè)n-元組(n-tuple),D1,D2女人,D3兒童2.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù))首先定義“列”的取值范圍“域()”域()一組值的集合,這組值具有相同的數(shù)據(jù)類型如整數(shù)的集合、字符串的集合、全體學(xué)生的集合再如, 由8位數(shù)字組成的數(shù)字串的集合,由0到100組成的整數(shù)集合集合中元素的個(gè)數(shù)稱為域的基數(shù)(Cardinality)D3兒童集合(CHILD), D2女人集合(WOMAN),D1集合(MAN),42.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)的特性(續(xù))屬性不可

10、再分特性:又被稱為關(guān)系第一范式符合第一范式(Table)不符合第一范式(Not Table)2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)的特性(續(xù))任意兩個(gè)元組不能完全相同。(集合的要求:集合內(nèi)不能有相同的兩個(gè)元素)元組相同是指兩個(gè)元組的每個(gè)分量都相同在同一個(gè)關(guān)系(表)中存在相同的元組,去掉其中的重復(fù)元組2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)的特性(續(xù))列位置互換性:區(qū)分哪一列是靠列名行位置互換性:區(qū)分哪一行是靠某一或某幾列的值(關(guān)鍵字/鍵字/碼字)關(guān)系是以內(nèi)容(名字或值)來區(qū)分的,而不是屬性或元組在關(guān)系的位置來區(qū)分如下面兩個(gè)關(guān)系是完全相同的關(guān)系2.2 關(guān)

11、系與關(guān)系模型 關(guān)系(relation/table)的特性不同的列可來自同一個(gè)域,稱其中的每一列為一個(gè)屬性,不同的屬性要給予不同的屬性名。例,假如:定義一個(gè)域?yàn)? 所有、女人和兒童的集合 =,則下述“家庭”關(guān)系的三個(gè)列將來自同一個(gè)域, 因此需要不同的屬性名“丈夫”“妻子”“”以示區(qū)分。2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)的特性列是同質(zhì):即每一列中的分量來自同一域,是同一類型的數(shù)據(jù)是否出現(xiàn)列不同質(zhì)的現(xiàn)象?2.2 關(guān)系與關(guān)系模型 關(guān)系: Table的嚴(yán)格定義(續(xù))關(guān)系模式與關(guān)系同一關(guān)系模式下,可有很多的關(guān)系關(guān)系模式是關(guān)系的結(jié)構(gòu), 關(guān)系是關(guān)系模式在某一時(shí)刻的數(shù)據(jù)關(guān)系模式是穩(wěn)定的

12、;而關(guān)系是某一時(shí)刻的值,是隨時(shí)間可能變化的Student(S# char(8), Sname char(10), Ssex char(2), Sage eger, D# char(2), Sclass char(6)52.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)上的一些重要概念外碼(Foreign Key)/外鍵關(guān)系R中的一個(gè)屬性組,它不是R的候選碼,但它與另一個(gè)關(guān)系S的候選碼相對(duì)應(yīng),則稱這個(gè)屬性組為R的外碼或外鍵。例如“合同”關(guān)系中的客戶號(hào)不是候選碼,但卻是外碼。因它與“客戶”關(guān)系中的候選碼“客戶號(hào)” 相對(duì)應(yīng)。主碼外碼主碼2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/tab

13、le)上的一些重要概念主屬性與非主屬性包含在任何一個(gè)候選碼中的屬性被稱作主屬性,如 “選課”中的S# , C#。而其他屬性被稱作非主屬性,如“選課”中的Sname, Cname, Grade在最簡(jiǎn)單的情況下,候選碼只包含一個(gè)屬性在最的情況下,關(guān)系的所有屬性組是這個(gè)關(guān)系的候選碼,稱為全碼(All- Key)。比如關(guān)系“教師授課”(T#,C#)中的候選碼(T#,C#)就是全碼。2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)上的一些重要概念主碼( Primary Key)/主鍵當(dāng)有多個(gè)候選碼時(shí),可以選定一個(gè)作為主碼。DBMS以主碼為主要線索管理關(guān)系中的各個(gè)元組。例如可選定屬性S#作為“

14、學(xué)生”表的主碼,也可以選定屬性組(Sname, Saddress)作為“學(xué)生”表的主碼。選定Em 為Employee的主碼。2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)上的一些重要概念有時(shí),關(guān)系中有很多組候選碼,例如:學(xué)生(S#, Sname, Sage, Sclass, Saddress)其中屬性S#是候選碼,屬性組(Sname, Saddress)也是候選碼(同名同地址的兩個(gè)同學(xué)是不存在的)再如Employee(Em , EmpName, Mobile)每一雇員有唯一的Em , 沒有兩個(gè)雇員有相同機(jī)號(hào)Mobile, 則Em是候選碼,Mobile也是候選碼2.2 關(guān)系與關(guān)系模

15、型 關(guān)系(relation/table)上的一些重要概念候選碼(Candidate Key)/候選鍵關(guān)系中的一個(gè)屬性組,其值能唯一標(biāo)識(shí)一個(gè)元組,若從該屬性組中去掉任何一個(gè)屬性,它就不具有這一性質(zhì)了,這樣的屬性組稱作候選碼。例如關(guān)系“學(xué)生(S#, Sname, Sage, Sclass)”中S#就是一個(gè)候選碼,在學(xué)生關(guān)系中,任何兩個(gè)元組的S#是一定不同的,而這兩個(gè)元組的 Sname,Sage,Sclass都可能相同(同名、同齡、同班),所以S#是候選碼。再如關(guān)系“選課(S#, C#, Sname, Cname, Grade)”中(S#,C#)是一個(gè)候選碼2.2 關(guān)系與關(guān)系模型 關(guān)系(relati

16、on/table)的特性(續(xù))屬性不可再分特性(續(xù))符合第一范式(Table)不符合第一范式(Not Table)62.2 關(guān)系與關(guān)系模型 關(guān)系的實(shí)體完整性空值的含義空值:不知道、不存在或無意義的值;在進(jìn)行關(guān)系操作時(shí),有時(shí)關(guān)系中的某屬性值在當(dāng)前是填不上的,比如 中有“生日不詳”、“下落不明”、“日程尚待 ”等,這時(shí)就需要空值來代表這種情況。關(guān)系模型中用?表征2.2 關(guān)系與關(guān)系模型 關(guān)系的實(shí)體完整性實(shí)體完整性關(guān)系的主碼中的屬性值不能為空值;空值:不知道或無意義的值;意義:關(guān)系中的元組對(duì)應(yīng)到現(xiàn)實(shí)世界相互之間可區(qū)分的一個(gè)個(gè)個(gè)體,這些 是通過主碼來唯一標(biāo)識(shí)的;若主碼為空,則出現(xiàn)不可標(biāo)識(shí)的 ,這是不容許

17、的。主碼2.2 關(guān)系與關(guān)系模型 關(guān)系模型中的完整性Relation/Table已面介紹過DB數(shù)據(jù)的基本操作對(duì)象是Relation/Table ,操作的結(jié)果仍然是Relation/Table;關(guān)系操作是集合操作,操作的對(duì)象及結(jié)果都是集合,是一次一集合(Set- aime)的方式。而非關(guān)系型的數(shù)據(jù)操作方式是一次一(Record-at-a- time),具體操作將在關(guān)系代數(shù)中介紹下面將介紹:關(guān)系的完整性關(guān)系與關(guān)系模型 關(guān)系模型關(guān)系模型DB數(shù)據(jù)的基本結(jié)構(gòu):Relation/TableDB數(shù)據(jù)的基本操作有:(并, UNION)、 (差, DIFFERENCE) 、(廣義積, PRODUCT)、 (選擇,

18、 SELECTION)、 (投影, PROJECTION)、 (交,ERSECTION) 、Join(連接, JOIN)、 (除,DIVI運(yùn)算DB數(shù)據(jù)的結(jié)構(gòu)與操作受三個(gè)完整性的約束:實(shí)體完整性、參照完整性和用戶自定義的完整性2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table) 的概念小結(jié)域 ()元組 (Tuple)積關(guān)系 (Relation)關(guān)系模式(Relational Schema)屬性 (Attribute)關(guān)系的度 (Degree)與關(guān)系的基數(shù) (Cardinality)候選碼、主碼、主屬性與非主屬性、外碼2.2 關(guān)系與關(guān)系模型 關(guān)系(relation/table)上的一些重要

19、概念外碼(Foreign Key)/外鍵 (續(xù))外碼主碼主碼72.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)概述基于集合,提供了一系列的關(guān)系代數(shù)操作:并、差、積(廣義積)、交、選擇、投影、連接和關(guān)系除,是一種集合化的操作語言關(guān)系代數(shù)操作以一個(gè)或多個(gè)關(guān)系為輸入,結(jié)果是一個(gè)新的關(guān)系用對(duì)關(guān)系的運(yùn)算來表達(dá)查詢,需要指明所用的操作, 因此具有一定的過程性是一種抽象的語言,是學(xué)習(xí)其他數(shù)據(jù)庫語言,如SQL等的基礎(chǔ)第2章 關(guān)系模型與關(guān)系運(yùn)算關(guān)系模型與關(guān)系運(yùn)算簡(jiǎn)述關(guān)系與關(guān)系模型關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)概述 關(guān)系代數(shù)的基本操作 用關(guān)系代數(shù)表達(dá)檢索請(qǐng)求的示例關(guān)系元組演算關(guān)系域演算語言QBE小結(jié)2.2 關(guān)系與關(guān)系模型 DBMS對(duì)關(guān)系完

20、整性的支持實(shí)體完整性和參照完整性由DBMS系統(tǒng)自動(dòng)支持DBMS系統(tǒng)通常提供了如下機(jī)制:它使用戶可以自行定義有關(guān)的完整性約束條件,并能依據(jù)此,當(dāng)有更新操作時(shí),自動(dòng)檢驗(yàn)更新操作的正確性,即是否符合用戶自定義的完整性2.2 關(guān)系與關(guān)系模型 關(guān)系的用戶自定義完整性用戶自定義完整性用戶針對(duì)具體的應(yīng)用環(huán)境定義的完整性約束條件如S#要求是10位整數(shù),其中前四位為年度,當(dāng)前年度與他們的差必須在4以內(nèi)再如:在12, 35之間要求名字在5個(gè)漢字字符之內(nèi)只能是“男”或“女”完整性 的示例2.2 關(guān)系與關(guān)系模型 關(guān)系的參照完整性R1Student參照完整性外碼Fk D#如果關(guān)系R1的外碼Fk與關(guān)系R2的主碼Pk相對(duì)應(yīng)

21、,則R1中的每一個(gè)元組的 Fk值或者等于R2 中某個(gè)元組的Pk 值,或者為空值意義:如果關(guān)系R1的某個(gè)元組t1參照了關(guān)系R2的某個(gè)元組t2,則t2必須存在例如關(guān)系Student在D#上的取值有兩種可能R2Dept空值,表示該學(xué)生尚未分到任何系中主碼PkD#若非空值,則必須是Dept關(guān)系中某個(gè)元組的D#值,表示該學(xué)生不可能分到一個(gè)不存在的系中2.2 關(guān)系與關(guān)系模型 關(guān)系的實(shí)體完整性空值的含義數(shù)據(jù)庫中有了空值,會(huì)影響許多方面,如影響 函數(shù)運(yùn)算的正確性,不能參與算術(shù)、比較或邏輯運(yùn)算等例如:“3 + ?”結(jié)果是多少呢? “3 * ?”結(jié)果是多少呢? “? and (A=A)”結(jié)果又是多少呢?再例如,一

22、個(gè)班有30名同學(xué),如所有同學(xué)都有成績(jī),則可求出平均成績(jī);如果有一個(gè)同學(xué)沒有成績(jī),怎樣參與平均成績(jī)的計(jì)算呢,是當(dāng)作 0,還是當(dāng)作100呢?還是不考慮它呢?有空值的時(shí)候是需要特殊處理的,要特別注意。82.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:并(Union)并操作的示例二(語義的)查詢或者參加體育隊(duì)或參加文藝隊(duì)所有學(xué)生的信息R(參加體育隊(duì)的學(xué)生)RS(或者參加體育隊(duì)或者文藝隊(duì)的學(xué)生)S(參加文藝隊(duì)的學(xué)生)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:并(Union)并操作的示例一(抽象的)假設(shè)R與S是并相容的兩個(gè)關(guān)系2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:并(Union)定義:假設(shè)關(guān)系R和關(guān)系S是并

23、相容的,則關(guān)系R與關(guān)系S的并運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:R S, 它由或者出現(xiàn)在關(guān)系R中,或者出現(xiàn)在S中的元組 。數(shù)學(xué)描述: RS = t | tR tS ,其中t是元組并運(yùn)算是將兩個(gè)關(guān)系的元組合并成一個(gè)關(guān)系,在合并時(shí)去掉重復(fù)的元組。R S 與 S R 運(yùn)算的結(jié)果是同一個(gè)關(guān)系RRSS2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)基本操作概覽(續(xù))并相容性的示例STUDENT(SID char(10), Sname char(8), Sage char(3) PROFESSOR(char(10), Pname char(8), Page char(3)關(guān)系RSTUDENT與關(guān)系SPROFESSOR是相容的,因?yàn)?/p>

24、:關(guān)系R和關(guān)系S的屬性數(shù)目都是3關(guān)系R的屬性SID與關(guān)系S的屬性 的域都是char(10)關(guān)系R的屬性Sname與關(guān)系S的屬性Pname的域都是char(8)關(guān)系R的屬性Sage與關(guān)系S的屬性Page的域都是char(3)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)基本操作概覽(續(xù))某些關(guān)系代數(shù)操作,如并、差、交等,需滿足“并相容性”并相容性參與運(yùn)算的兩個(gè)關(guān)系及其相關(guān)屬性之間有一定的對(duì)應(yīng)性、可比性或意義關(guān)聯(lián)性定義:關(guān)系R與關(guān)系S存在并相容性,當(dāng)且僅當(dāng): (1) 關(guān)系R和關(guān)系S的屬性數(shù)目必須相同;(2) 對(duì)于任意i,關(guān)系R的第i個(gè)屬性的域必須和關(guān)系S的第i個(gè)屬性的域相同假設(shè):R(A1, A2, , An) ,

25、 S(B1, B2, ,Bm)R和S滿足并相容性:n = m 并且(Ai) =(Bi)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)基本操作概覽(續(xù))關(guān)系代數(shù)基本操作分為:集合操作和純關(guān)系操作集合操作傳統(tǒng)的關(guān)系運(yùn)算、僅涉及關(guān)系的行純關(guān)系操作專門的關(guān)系運(yùn)算、涉及關(guān)系的行和列92.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:交( ersection)定義:假設(shè)關(guān)系R和關(guān)系S是并相容的,則關(guān)系R與關(guān)系S的交運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:R S, 它由同時(shí)出現(xiàn)在關(guān)系R和關(guān)系S中的元組。數(shù)學(xué)描述: RS = t | tR tS ,其中t是元組RS 和 SR 運(yùn)算的結(jié)果是同一個(gè)關(guān)系交運(yùn)算可以通過差運(yùn)算來實(shí)現(xiàn):R S = R (R

26、 S) = S (S R)RRSS2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:差(Difference)差操作的示例之三(語義的)若R為計(jì)算機(jī)學(xué)院的學(xué)生,S為四年級(jí)的學(xué)生, 則R S為是計(jì)算機(jī)學(xué)院但不是四年級(jí)的所有學(xué)生(計(jì)算機(jī)學(xué)院非四年級(jí)的學(xué)生), S R為是四年級(jí)但不是計(jì)算機(jī)學(xué)院的所有學(xué)生(四年級(jí)非計(jì)算機(jī)學(xué)院的學(xué)生)。若R為學(xué)過數(shù)據(jù)庫課程的學(xué)生,S為學(xué)過自控理論課程的學(xué)生, 則R S為學(xué)過數(shù)據(jù)庫課程但沒學(xué)過自控理論課程的所有學(xué)生漢語中的“是 但不含 ”通常意義是差運(yùn)算的要求。首先要準(zhǔn)確理解漢語 的查詢要求,然后再找到正確的操作同學(xué)可舉出的示例2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:差(Dif

27、ference)差操作的示例之二(語義的)查詢只參加體育隊(duì)而未參加文藝隊(duì)的學(xué)生信息查詢只參加文藝隊(duì)而未參加體育隊(duì)的學(xué)生信息R(參加體育隊(duì)的學(xué)生)RS(參加體育隊(duì)而未參加文藝隊(duì)的學(xué)生)S(參加文藝隊(duì)的學(xué)生)SR(參加文藝隊(duì)而未參加體育隊(duì)的學(xué)生)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:差(Difference)差操作的示例一(抽象的)假設(shè)R與S是并相容的兩個(gè)關(guān)系2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:差(Difference)定義:假設(shè)關(guān)系R 和關(guān)系S是并相容的,則關(guān)系R 與關(guān)系S 的差運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:R S, 它由出現(xiàn)在關(guān)系R中但不出現(xiàn)在關(guān)系S中的元組 。數(shù)學(xué)描述: R S =

28、t | tR t S ,其中t是元組R S 與 S R 是不同的RRR SS RSS2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:并(Union)并操作的示例之三(語義的)若R為計(jì)算機(jī)學(xué)院的學(xué)生,S為材料學(xué)院的學(xué)生, 則R S為兩院所有的學(xué)生若R為學(xué)過數(shù)據(jù)庫課程的學(xué)生,S為學(xué)過自控理論課程的學(xué)生, 則RS為學(xué)過兩門課之一的所有學(xué)生漢語中的“或者 或者 ”通常意義是并運(yùn)算的要求。首先要準(zhǔn)確理解漢語 的查詢要求,然后再找到正確的操作同學(xué)可舉出的示例102.3 關(guān)系代數(shù)運(yùn)算積 (Cartesian Product) 關(guān)系代數(shù)之集合操作:廣義廣義積操作的示例一(抽象的)關(guān)系R的元組度數(shù)是3,數(shù)目是3; 關(guān)

29、系S的元組度數(shù)是3, 數(shù)目是4; 則R x S的元組度數(shù)是6, 數(shù)目是122.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:廣義積 (Cartesian Product)R x S = S x R : R x S為R中的每一個(gè)元組都和S中的所有元組進(jìn)行串接。 S x R為S中的每一個(gè)元組都和R中的所有元組進(jìn)行串接。結(jié)果是相同的。兩個(gè)關(guān)系R和S,它們的屬性個(gè)數(shù)分別為n和m(R是n度關(guān)系,S是m度關(guān) 系), 則積 R x S的屬性個(gè)數(shù)為n + m, 即元組的前n個(gè)分量是R中元組的分量,后m個(gè)分量是S中元組的分量(R x S是n+m度關(guān)系).兩個(gè)關(guān)系R和S,它們的元組個(gè)數(shù)分別為x和y(關(guān)系R的基數(shù)x, S的

30、基數(shù)y),則積R x S的元組個(gè)數(shù)為x y (R x S的基數(shù)是x y).2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:廣義積 (Cartesian Product)定義:關(guān)系R () 與關(guān)系S() 的廣義積 (簡(jiǎn)稱廣義積) 運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作: R x S, 它由關(guān)系R中的元組與關(guān)系S的元組進(jìn)行所有可能的拼接(或串接)所形成的新的元組數(shù)學(xué)描述: R x S = | R S 2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:交( ersection)交操作的示例之三(語義的)若R為小于20歲的學(xué)生,S為計(jì)算機(jī)學(xué)院的學(xué)生, 則R S為計(jì)算機(jī)學(xué)院并且 小于20歲的所有學(xué)生若R為學(xué)過數(shù)據(jù)庫課程的學(xué)生,S

31、為學(xué)過自控理論課程的學(xué)生, 則R S為既學(xué)過數(shù)據(jù)庫課程又學(xué)過自控理論課程的所有學(xué)生漢語中的“既 又 ”,“ , 并且 ”通常意義是交運(yùn)算的要求, 首先要準(zhǔn)確 理解漢語的查詢要求,然后再找到正確的操作同學(xué)可舉出的示例2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:交( ersection)交操作的示例之二(語義的)查詢既參加體育隊(duì)又參加文藝隊(duì)的學(xué)生信息R(參加體育隊(duì)的學(xué)生)RS(既參加體育隊(duì)又參加文藝隊(duì)的學(xué)生)S(參加文藝隊(duì)的學(xué)生)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:交( ersection)交操作的示例一(抽象的)假設(shè)R與S是并相容的兩個(gè)關(guān)系112.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:選擇

32、(Select)選擇操作的示例之三(語義的)查詢所有大于20的3系同學(xué)的信息 Sage20 D# “03” (R)R(學(xué)生表)查詢不在(大于20的3系同學(xué))要求之內(nèi)的所有其它同學(xué)的信息 (Sage20 D# “03” ) (R)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:選擇(Select)選擇操作的示例之二(語義的)查詢所有男同學(xué)的信息R(學(xué)生表)(R)Ssex “男”查詢所有小于20同學(xué)的信息查詢所有3系或5系的同學(xué)信息 Sage20 (R) D# “03” D# “05” (R)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:選擇(Select)選擇操作的示例一(抽象的)2.3 關(guān)系代數(shù)運(yùn)算

33、 關(guān)系代數(shù)之純關(guān)系操作:選擇(Select)定義:給定一個(gè)關(guān)系R, 同時(shí)給定一個(gè)選擇的條件condition(簡(jiǎn)記con), 選擇運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作con(R) , 它從關(guān)系R中選擇出滿足給定條件 condition的元組 。數(shù)學(xué)描述: con(R)=t | t R con(t) = 真 ,設(shè)R(A1 ,A2 , ,An), t是R的元組, t 的分量記為tAi, 或簡(jiǎn)寫為Ai ,屬性名也可以用它的序號(hào)來代替條件con由邏輯運(yùn)算符連接算術(shù)表達(dá)式組成邏輯運(yùn)算符:, 或?qū)憺?and , or, not算術(shù)表達(dá)式:X Y, 其中X, Y 是t的分量、常量或簡(jiǎn)單函數(shù), 是比較運(yùn)算符, , ,

34、, , , 2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之集合操作:廣義積 (Cartesian Product)廣義積操作的示例之二(語義的)當(dāng)一個(gè)檢索涉及到多個(gè)表時(shí)(如學(xué)生表和課程表),便需要將這些表串接或拼接起來,然后才能檢索,這時(shí),就要使用廣義積運(yùn)算是后面學(xué)習(xí)各種連接運(yùn)算的基礎(chǔ)2.3 關(guān)系代數(shù)運(yùn)算積 (Cartesian Product) 關(guān)系代數(shù)之集合操作:廣義再看一個(gè)示例 (抽象的)122.3 關(guān)系代數(shù)運(yùn)算查詢所有在3系就讀的且大于19的學(xué)生的學(xué)號(hào)和 S#, Sname( D# “03”Sage19 (R)查詢所有在4系就讀的男同學(xué)的學(xué)號(hào)和 S#, Sname( D# “04”Ssex 男 (R

35、) 關(guān)系代數(shù)之純關(guān)系操作投影與選擇操作一起使用的示例(語義的)R(學(xué)生表)用戶可以根據(jù)需要通過投影、選擇操作查詢他所關(guān)心的數(shù)據(jù)信息。2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:投影(Project)投影操作的示例之二(語義的)查詢所有學(xué)生的和Sname, Sage (R)R(學(xué)生表)查詢所有學(xué)生的及其所在的系 Sname, D (R)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:投影(Project)如果投影后有重復(fù)元組,則應(yīng)去掉2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:投影(Project)投影操作的示例一(抽象的)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:投影(Project)定義:給定

36、一個(gè)關(guān)系R, 投影運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作 A(R) , 它從關(guān)系R中選出屬性包含在A中的那些列。數(shù)學(xué)描述: Ai1, Ai2, ,Aik(R) = tR 設(shè)R(A1 ,A2 , ,An) Ai1, Ai2, ,Aik A1 ,A2 , ,An tAi表示元組t中相應(yīng)于屬性Ai的分量投影運(yùn)算可以對(duì)原關(guān)系的列在投影后重新排列投影操作從給定關(guān)系中選出某些列組成新的關(guān)系, 而選擇操作是從給定關(guān)系中選出某些行組成新的關(guān)系2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:選擇(Select)選擇操作的示例之四(語義的)選擇操作從給定的關(guān)系中選出滿足條件的行條件的書寫很重要,尤其是當(dāng)不同運(yùn)算符在一起時(shí),要注意

37、運(yùn)算符的優(yōu)先次序,優(yōu)先次序自高至低為 括?。?; ; ; 例如Sage20 D# = “03”與(Sage20) D# = “03”132.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:-連接(-Join)-連接操作的示例之二(續(xù))第二步:從廣義積中選取出符合(degree = limited degree)條件的元組哈爾濱工業(yè)大學(xué)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:-連接(-Join)-連接操作的示例之二(續(xù))競(jìng)聘的崗位必須由不低于其最低學(xué)歷要求的擔(dān)任,找出所有員工的及其可能競(jìng)聘職位的名稱Wname ype(workosition)degree = l mited_degree第一步:對(duì)兩

38、個(gè)表進(jìn)行廣義積2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:-連接(-Join)-連接操作的示例之二(語義的)員工表Worker(W#, Wname, Wsex, Wage, Degree) ,職位限定表ition(Type, Limited Degree)1 本科23 博士2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:-連接(-Join)-連接(-Join)操作的示例一(抽象的)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作: -連接(-Join)定義:給定關(guān)系R和關(guān)系S, R與S的連接運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作,它從關(guān)系R和關(guān)系S的積中, 選取R中屬性A與S中屬性 B之間滿足 條件的元組 。數(shù)學(xué)描

39、述:設(shè)R(A1 ,A2 , ,An), A A1 ,A2 , ,An S(B1 ,B2 , ,Bm), B B1 ,B2 , ,Bm t是關(guān)系R中的元組,s是關(guān)系S中的元組屬性A和屬性B具有可比性 是比較運(yùn)算符, , , , , , 在實(shí)際應(yīng)用中,-連接操作經(jīng)常與投影、選擇操作一起使用2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作: -連接(-Join)投影與選擇操作只是對(duì)單個(gè)關(guān)系(表 進(jìn)行操作, 而實(shí)際應(yīng)用中往往涉及多個(gè)表之間的操作比如:查詢數(shù)據(jù)結(jié)績(jī)?cè)?0分以上的學(xué)生(涉及Student, Course, SC)這就需要-連接操作142.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:等值連接(Equi

40、-Join)等值連接(Equi-Join)操作的示例一(抽象的)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作: 等值連接(Equi-Join)定義:給定關(guān)系R和關(guān)系S, R與S的等值連接運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作,它由關(guān)系R和關(guān)系S的積中選取R中屬性A與S中屬性 B上值相等的元組所 。數(shù)學(xué)描述:當(dāng)-連接中運(yùn)算符為“”時(shí),就是等值連接,等值連接是-連接的一個(gè)特例;廣義積的元組組合并不是都有意義的,另外廣義積的元組組合數(shù)目也非常龐大,因此采用-連接/等值連接運(yùn)算可大幅度降低中間結(jié)果的保存量,提高速度。2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:-連接(-Join)雖然 在講解-連接操作時(shí),使用積然后

41、再進(jìn)行選擇來得到-連接結(jié)果。這主要是方便大家理解。但當(dāng)引入連接操作后,DBMS可直接進(jìn)行連接操作,而不必先形成積算機(jī)科學(xué)與技術(shù)學(xué)院哈爾濱工業(yè)大學(xué)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:-連接(-Join)-連接操作的示例之三(續(xù))關(guān)系與自身的-連接查詢至少98030101號(hào)同學(xué)和98040202號(hào)同學(xué)都學(xué)過的所有課程號(hào)SC C# (SC S#=“98030101” SC1 S#=“98040202”(SC SC1 (SC)SC C# = SC1 C#注:上式 SC1 (SC)表更名操作,即將表SC更名為SC1,當(dāng)一個(gè)表需要和其自身進(jìn)行連接運(yùn)算時(shí),通常要使用更名操作2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系

42、代數(shù)之純關(guān)系操作:-連接(-Join)-連接操作的示例之二(續(xù))競(jìng)聘的崗位必須由不低于其最低學(xué)歷要求的擔(dān)任,找出所有員工的及其可能競(jìng)聘職位的名稱Wname ype(workosition)degree = limited_degree第三步:在(Wname, Type)上進(jìn)行投影操作,得到最終的結(jié)果152.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:自然連接(Natural-Join)自然連接(Natural-Join)操作的示例一(抽象的)2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作: 自然連接(Natural-Join)定義:給定關(guān)系R和關(guān)系S, R與S的自然連接運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作,它由

43、關(guān)系R和關(guān)系S的積中選取相同屬性組B上值相等的元組所 。數(shù)學(xué)描述:自然連接是一種特殊的等值連接要求關(guān)系R和關(guān)系S必須有相同的屬性組(名稱)B要在結(jié)果中去掉重復(fù)的屬性列一般的連接操作是從行的角度進(jìn)行計(jì)算,而自然連接是同時(shí)從行與列的角度進(jìn)行計(jì)算2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:等值連接(Equi-Join)等值連接(Equi-Join)操作的示例二(語義的)找出所有獲獎(jiǎng)員工、及其獲獎(jiǎng)的名稱Wname Wage itle(workerHonor)Honor_type= ype第三步:在(Wname, Wage, Title)上進(jìn)行投影運(yùn)算,得到最終結(jié)果2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系

44、操作:等值連接(Equi-Join)等值連接(Equi-Join)操作的示例二(語義的)第二步:從廣義積中選取出符合(Honor type=Type)條件 的元組2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:等值連接(Equi-Join)等值連接(Equi-Join)操作的示例二(語義的)找出所有獲獎(jiǎng)員工、及其獲獎(jiǎng)的名稱Wname Wage itle(workerHonor)Honor_type= ype第一步:對(duì)兩個(gè)表進(jìn)行廣義積2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:等值連接(Equi-Join)等值連接(Equi-Join)操作的示例二(語義的)員工表Worker(W#, Wname,

45、Wsex, Wage, Honor type) ,獲獎(jiǎng)?lì)悇e表Honor(Type, Title)162.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:自然連接(Natural-Join)自然連接(Natural-Join)操作的示例三(語義的)學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#),學(xué)生選課表SC(S#, C#, Score)查詢所有學(xué)生選課的信息(包括學(xué)生,課程名稱,成績(jī))Sname Cname Score(SCCourseStudent )2.3 關(guān)系代數(shù)運(yùn)算

46、關(guān)系代數(shù)之純關(guān)系操作:自然連接(Natural-Join)自然連接(Natural-Join)操作的示例二(語義的)查詢所有學(xué)生選課的信息(包括學(xué)號(hào),課程名稱,成績(jī))S# Cname Score(SCCourse)第四步:在(S#, Cname, Score)上進(jìn)行投影操作,得到最終結(jié)果2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:自然連接(Natural-Join)自然連接(Natural-Join)操作的示例二(語義的)查詢所有學(xué)生選課的信息(包括學(xué)號(hào),課程名稱,成績(jī))S# Cname Score(SCCourse)第三步:去掉重復(fù)的列2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:自然連接(N

47、atural-Join)自然連接(Natural-Join)操作的示例二(語義的)第二步:從廣義積中選取在相同列(C#)上值相同的元組2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:自然連接(Natural-Join)自然連接(Natural-Join 操作的示例二(語義的)查詢所有學(xué)生選課的信息(包括學(xué)號(hào),課程名稱,成績(jī))S# Cname Score(SCCourse)第一步:對(duì)兩個(gè)表進(jìn)行廣義積2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:自然連接(Natural-Join)自然連接(Natural-Join)操作的示例二(語義的)學(xué)生選課表SC(S#, C#, Score) ,課程表Course

48、 (C#, Cname, Chours, Credit, T#)172.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass), 組合操作示例(續(xù))課程表Course (C#, Cname, Chours, Credit, T#),學(xué)生選課表SC(S#, C#, Score)多種操作結(jié)合的示例 (語義的)查詢至少選修了001號(hào)老師所授課程中一門課的女學(xué)生Sname(Ssex=“女” #=“001”(StudentSCCourse)查詢001號(hào)老師所教過的學(xué)生中成績(jī)?yōu)?0分以上(包括90分)的學(xué)生Sname(Student( #=“001” S

49、core=90(SCCourse)查詢同學(xué)沒有學(xué)過的課程的課程號(hào)C#(Course) C#(Sname=“ ”(StudentSC)查詢至少學(xué)過兩門課程的學(xué)生的學(xué)號(hào)S#(SC S#=SC1 S# SC C#SC1 C#(SC x SC1 (SC)2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass), 組合操作示例(續(xù))課程表Course (C#, Cname, Chours, Credit, T#),學(xué)生選課表SC(S#, C#, Score)多種操作結(jié)合的示例 (語義的)(6) 查詢沒有學(xué)習(xí)過課程號(hào)為002的學(xué)生和Sname Sage

50、 (C# “002” (StudentSC)?Sname Sage ( (C#=“002”) (StudentSC)Sname Sage (Student (C#=“002” (StudentSC) ?Sname Sage (Student) - Sname Sage (C#=“002” (StudentSC)2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass), 組合操作示例(續(xù))課程表Course (C#, Cname, Chours, Credit, T#),學(xué)生選課表SC(S#, C#, Score)查詢至少學(xué)習(xí)過課程號(hào)為001

51、和002的學(xué)生的學(xué)號(hào)SC S# (SC C#=“001” SC1 C#=“002”(SC SC1 (SC)SC S# = SC1 S#請(qǐng)問:上式使用的是等值連接,換成自然連接,寫成如下形式是否正確?SC S# ( SC S# = SC1 S# SC C#=“001” SC1 C#=“002”(SC SC1 (SC)前例也可以采用交運(yùn)算來實(shí)現(xiàn)S#(C#=“001” (SC) S#(C#=“002” (SC)2.3 關(guān)系代數(shù)運(yùn)算 組合操作示例(續(xù))學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours,

52、Credit, T#),學(xué)生選課表SC(S#, C#, Score)查詢至少學(xué)習(xí)過課程號(hào)為001和002的學(xué)生的學(xué)號(hào)SC S# (SC C#=“001” SC1 C#=“002”(SC SC1 (SC)SC S# = SC1 S#哈爾濱工業(yè)大學(xué)2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#), 組合操作示例(續(xù))學(xué)生選課表SC(S#, C#, Score)多種操作結(jié)合的示例 (語義的)查詢學(xué)習(xí)過“數(shù)據(jù)結(jié)構(gòu)”這門課的學(xué)生學(xué)號(hào)、和這門課程的成績(jī)S# Sn

53、ame Score(Cname=“數(shù)據(jù)結(jié)構(gòu)”(StudentSCCourse)查詢至少學(xué)習(xí)過課程號(hào)為001和002的學(xué)生的學(xué)號(hào)S#(C#=“001” C#=“002”(SC)?2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#), 組合操作示例學(xué)生選課表SC(S#, C#, Score)多種操作結(jié)合的示例 (語義的)查詢學(xué)習(xí)過課程號(hào)為001的學(xué)生學(xué)號(hào)和成績(jī)S# Score(C# = “001”(SC)查詢學(xué)習(xí)過課程號(hào)為001或002的學(xué)生的學(xué)號(hào)和成績(jī)S#

54、 Score(C# = “001” C# = “002”(SC)查詢學(xué)習(xí)過課程號(hào)為001的學(xué)生學(xué)號(hào)、以及這門課的成績(jī)S# Sname Score(C# = “001”(SduentSC)S# Sname Score (Sduent(C# = “001”(SC)182.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作: 除(Divi )再設(shè)關(guān)系R ()和關(guān)系S (), 那么RS結(jié)果關(guān)系為元組 的集合,元組 滿足下述條件:它與S中每一個(gè)元組組合形成的一個(gè)新元組都是R中的某一個(gè)元組(其中,a1, , an ,b1, , bm, c1, , ck分別是屬性A1 , ,An,B1 , ,Bm C1 , ,Ck 的

55、值)數(shù)學(xué)描述: R S = t | t R-S(R) u S ( tu R ) 2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作: 除(Divi)下面介紹關(guān)系的除法,除法運(yùn)算經(jīng)常用于求解“查詢 全部的 ”問題前提條件:給定關(guān)系R(A1 ,A2 , ,An)為n度關(guān)系和關(guān)系S(B1 ,B2 , ,Bm)為m度關(guān)系 ,如果可以進(jìn)行關(guān)系R與關(guān)系S的除運(yùn)算,當(dāng)且僅當(dāng):屬性集 B1 ,B2 , ,Bm 是屬性集 A1 ,A2 , ,An 的真子集,即mS Sage(Student x S (Student)查詢最小的同學(xué)的Student Sname(Student SageS Sage(Student x S

56、 (Student)2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#), 組合操作示例(續(xù))學(xué)生選課表SC(S#, C#, Score)多種操作結(jié)合的示例 (語義的)查詢比小的所有同學(xué)的Student Sname( ame=“ ” Student Sage=S Sage (Student x S (Student) ?Student Sname( ame=“ ” Student Sage=S Sage Student Sname“ ”(Student

57、x S (Student)2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#), 組合操作示例(續(xù))學(xué)生選課表SC(S#, C#, Score)多種操作結(jié)合的示例 (語義的)(*) 下列的關(guān)系代數(shù)運(yùn)算結(jié)果是什么?SC1 S# SC1 Score SC2 Score(SC1 S#= SC2 S# SC1 C#=001 SC2 C#=002 SC1 ScoreSC2 Score( SC1 (SC) x SC2 (SC)查詢001號(hào)課程成績(jī)比002號(hào)課程成績(jī)高

58、的學(xué)生的學(xué)號(hào)以及他/她001號(hào)課002號(hào)課程的成績(jī)。192.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:外連接(Outer-Join)下面介紹關(guān)系的外連接操作外連接問題的提出:先看例子Teacher(T#, Tname, Salary), Course(C#, Cname), Teach(T#, C#)請(qǐng)列出所有老師的有關(guān)信息,包括,工資,所教課程等。 # name Salary C# CName (Teacher Teach Course)按上式連接的結(jié)果,003號(hào)教師的 和工資信息丟失了,因?yàn)樵赥each表中沒有和003號(hào)教師相匹配的元組,元組003號(hào)教師(又稱為失配元組)不能和其他表的元組形

59、成連接元組,信息因而丟失?怎樣保證使003號(hào)教師信息仍舊出現(xiàn)在結(jié)果關(guān)系中呢?這就需要外連接2.3 關(guān)系代數(shù)運(yùn)算Sname( Student(SC C# (S#=“98030201”(SC)SC(學(xué)生選課表) RCourse (課程表)R S(R)C# (S#=“98030201”(SC) S2.3 關(guān)系代數(shù)運(yùn)算 關(guān)系代數(shù)之純關(guān)系操作:除(Divi)除(Divi)操作的示例四(語義的)學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#),學(xué)生選課表SC(S#, C#, Sco

60、re)查詢選修了學(xué)號(hào)98030201學(xué)生所學(xué)全部課程的同學(xué)的Sname( Student(S# C#(SC) C# (S#=“98030201”(SC)請(qǐng)問下述寫法與上有何不同? 結(jié)果是否一樣Sname( Student(SC C# (S#=“98030201”(SC)2.3 關(guān)系代數(shù)運(yùn)算學(xué)生表Student(S#, Sname, Ssex, Sage, D#, Sclass),課程表Course (C#, Cname, Chours, Credit, T#),學(xué)生選課表SC(S#, C#, Score) 關(guān)系代數(shù)之純關(guān)系操作:除(Divi)除(Divi)操作的示例三(語義的)查詢選修了全部課

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論