數(shù)據(jù)庫原理與應(yīng)用 課件 第2章 關(guān)系運算理論_第1頁
數(shù)據(jù)庫原理與應(yīng)用 課件 第2章 關(guān)系運算理論_第2頁
數(shù)據(jù)庫原理與應(yīng)用 課件 第2章 關(guān)系運算理論_第3頁
數(shù)據(jù)庫原理與應(yīng)用 課件 第2章 關(guān)系運算理論_第4頁
數(shù)據(jù)庫原理與應(yīng)用 課件 第2章 關(guān)系運算理論_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章關(guān)系運算理論主要內(nèi)容2.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.2關(guān)系數(shù)據(jù)操作2.3關(guān)系的完整性2.4傳統(tǒng)的集合運算2.5專門的關(guān)系運算2.6綜合實例2.7本章小結(jié)2.1關(guān)系數(shù)據(jù)結(jié)構(gòu)第2章關(guān)系運算理論2.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.1關(guān)系的定義1.域(Domain)域是一組具有相同數(shù)據(jù)類型的值的集合。例如:整數(shù)、實數(shù)、介于某個取值范圍的日期。2.笛卡兒積(CartesianProduct)給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡兒積為:D1×D2×…×Dn={(d1,d2,…,dn)|di

Di,i=1,2,…,n}42.1關(guān)系數(shù)據(jù)結(jié)構(gòu)(1)元組(Tuple)笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組。(2)分量(Component)笛卡爾積元素(d1,d2,…,dn)中的每一個值di叫作一個分量。(3)基數(shù)(CardinalNumber)若Di(i=1,2,…,n)為有限集,其基數(shù)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數(shù)M為:

(即為元組的個數(shù))。(4)笛卡爾積的表示方法笛卡爾積可表示為一個二維表。表中的每行對應(yīng)一個元組,表中的每列對應(yīng)一個域。5例如,給出3個域:D1:院系集合DEPARTMENT={計算機系,日語系}D2:班級集合CLASS={1班,2班}D3:學(xué)生集合STUDENT={張三,李四,王五}其中(計算機系,1班,張三)、(計算機系,2班,李四)等都是元組,計算機系、1班、2班、張三、李四等都是分量。該笛卡爾積的基數(shù)為2×2×3=12。即D1×D2×D3共有12個元組。這12個元組可列成一張二維表,如表2.1所示。62.1關(guān)系數(shù)據(jù)結(jié)構(gòu)73.關(guān)系(Relation)

D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的關(guān)系,

表示為:R(D1,D2,…,Dn);

R為關(guān)系名,n為關(guān)系的目或度(Degree)。(1)元組

關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。(2)單元關(guān)系與二元關(guān)系

當(dāng)n=1時,稱該關(guān)系為單元關(guān)系(Unaryrelation)。

當(dāng)n=2時,稱該關(guān)系為二元關(guān)系(Binaryrelation)。82.1關(guān)系數(shù)據(jù)結(jié)構(gòu)(3)關(guān)系的表示關(guān)系也是一個二維表,表的每行對應(yīng)一個元組,表的每列對應(yīng)一個域。如表2.2所示。其中表2.2是在表2.1的笛卡爾積中取出有意義的元組,形成的一個子集。(4)屬性關(guān)系中不同列可以對應(yīng)相同的域,為了加以區(qū)分,必須對每一個列起一個名字,稱為屬性(Attribute)。92.1關(guān)系數(shù)據(jù)結(jié)構(gòu)(5)碼①候選碼(Candidatekey)若關(guān)系中的某一屬性組的值能唯一地標(biāo)識一個元組,而其任何真子集都不能再標(biāo)識一個元組,則稱該屬性組為候選碼,在最簡單的情況下,候選碼只包含一個屬性。例如,存在一個學(xué)生關(guān)系,包括學(xué)號、姓名、年齡、身份證號四個屬性,其中學(xué)號可以唯一地標(biāo)識一個學(xué)生元組,身份證號也可以唯一地標(biāo)識一個學(xué)生元組,所以學(xué)號和身份證號可以作為學(xué)生關(guān)系的候選碼。102.1關(guān)系數(shù)據(jù)結(jié)構(gòu)②全碼(All-key)在最極端的情況下,關(guān)系的所有屬性組是這個關(guān)系的候選碼,稱為全碼(All-key)。例如,存在一個音樂會關(guān)系,包括演奏者、音樂作品、觀眾三個屬性,其中三個屬性組合在一起才可以唯一地標(biāo)識一個音樂會元組,所以關(guān)系的所有屬性組是這個關(guān)系的候選碼,即為全碼。112.1關(guān)系數(shù)據(jù)結(jié)構(gòu)③主碼(Primarykey)若一個關(guān)系有多個候選碼,則選定其中一個為主碼或主鍵(Primarykey)。例如,在學(xué)生關(guān)系中,根據(jù)具體情況,學(xué)號可以更好地標(biāo)識一個學(xué)生元組,所以學(xué)號作為學(xué)生關(guān)系的主碼。當(dāng)然身份證號也可以作為學(xué)生關(guān)系的主碼。122.1關(guān)系數(shù)據(jù)結(jié)構(gòu)④主屬性(Primeattribute)與非主屬性(Non-keyattribute)候選碼的諸屬性稱為主屬性(Primeattribute)。不包含在任何候選碼中的屬性稱為非主屬性(Non-keyattribute)。例如,在學(xué)生關(guān)系中,學(xué)號和身份證號為主屬性,姓名和年齡為

非主屬性。132.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.2關(guān)系的性質(zhì)(1)列是同質(zhì)的(Homogeneous),即每一列中的分量是同一類型的數(shù)據(jù),來自同一個域。(2)不同的列可出自同一個域,其中的每一列稱為一個屬性,不同的屬性要給予不同的屬性名。(3)列的順序無所謂,即列的次序可以任意交換。在許多實際關(guān)系數(shù)據(jù)庫產(chǎn)品中,增加新屬性時,永遠是插至最后一列。142.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.2關(guān)系的性質(zhì)(4)任意兩個元組的候選碼不能相同。(5)行的順序無所謂,行的次序可以任意交換。在許多實際關(guān)系數(shù)據(jù)庫產(chǎn)品中,插入一個元組時永遠插至最后一行。(6)分量必須取原子值,即每一個分量都必須是不可分的數(shù)據(jù)項。這是規(guī)范條件中最基本的一條。152.1關(guān)系數(shù)據(jù)結(jié)構(gòu)16關(guān)系性質(zhì)1——同質(zhì)的列學(xué)號姓名性別年齡曾用名10172001陳一男17陳小一10172002姚二女20姚小二張三10172003119無10172004李四21981/2/28李小四17關(guān)系性質(zhì)2—不同的屬性名學(xué)號姓名性別年齡姓名10172001陳一男17陳小一10172002姚二女20姚小二10172003張三女19張小三10172004李四男22李小四曾用名18關(guān)系性質(zhì)3—屬性無序?qū)W號姓名性別年齡曾用名10172001陳一男17陳小一10172002姚二女20姚小二10172003張三女19張小三10172004李四男22李小四學(xué)號姓名曾用名性別年齡10172001陳一陳小一男1710172002姚二姚小二女2010172003張三張小三女1910172004李四李小四男2219關(guān)系性質(zhì)4—元組的候選碼不重復(fù)學(xué)號姓名性別年齡曾用名10172001陳一男17陳小一10172002姚二女20姚小二10172003張三女19張小三10172004李四男22李小四10172001王五男22王小五20關(guān)系性質(zhì)5—元組無序?qū)W號姓名性別年齡10172001陳一男1710172002姚二女2010172003張三女1910172004李四男22學(xué)號姓名性別年齡10172004李四男2210172001陳一男1710172003張三女1910172002姚二女2021關(guān)系性質(zhì)6—分量是原子系別名稱高級職稱人數(shù)教授人數(shù)副教授人數(shù)計算機系日語系751210系別名稱教授人數(shù)副教授人數(shù)計算機系日語系751210非規(guī)范化關(guān)系規(guī)范化關(guān)系2.1.3關(guān)系模式關(guān)系模式是對關(guān)系的描述。關(guān)系模式在形式上可以表示為:R(U,D,DOM,F(xiàn))其中R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來自的域,DOM為屬性向域的映像集合,F(xiàn)為屬性間的數(shù)據(jù)依賴關(guān)系集合。222.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.3關(guān)系模式1.關(guān)系模式的表示關(guān)系模式通常可以簡記為:R(U)或R(A1,A2,…,An

)其中R為關(guān)系名,A1,A2,…,An為屬性名。而域名及屬性向域的映像常常直接說明為屬性的類型、長度。232.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.3關(guān)系模式2.關(guān)系模式與關(guān)系關(guān)系模式是對關(guān)系的描述,關(guān)系模式是靜態(tài)的、穩(wěn)定的;關(guān)系是關(guān)系模式在某一時刻的狀態(tài)或內(nèi)容,關(guān)系是動態(tài)的、隨時間不斷變化的;關(guān)系模式和關(guān)系往往統(tǒng)稱為關(guān)系,通過上下文加以區(qū)別。242.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.4關(guān)系數(shù)據(jù)庫在關(guān)系模型中,實體以及實體間的聯(lián)系都是用關(guān)系來表示的。在一個給定的應(yīng)用領(lǐng)域中,所有實體及實體之間聯(lián)系的關(guān)系的集合(也可以簡單地理解為表的集合)構(gòu)成一個關(guān)系數(shù)據(jù)庫。252.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.2關(guān)系數(shù)據(jù)操作第2章關(guān)系運算理論2.2.1關(guān)系的基本操作關(guān)系模型中常用的關(guān)系操作包括查詢操作和插入、刪除、修改操作兩大部分。關(guān)系的查詢表達能力很強,是關(guān)系操作中最主要的部分。查詢操作可以分為:選擇(Select)、投影(Project)、連接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Except)和笛卡兒積等。其中,選擇、投影、并、差、笛卡兒積是五種基本操作,其他操作是可以用基本操作來定義和導(dǎo)出的。272.2關(guān)系數(shù)據(jù)操作2.2關(guān)系數(shù)據(jù)操作2.2.2關(guān)系操作的特點關(guān)系操作的特點是集合操作方式,即操作的對象和結(jié)果都是集合。這種操作方式也稱為一次一集合的方式,這里提到的“一個集合”也可以理解為“一個關(guān)系”或“一個二維表”。相應(yīng)地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式稱為一次一記錄的方式。282.2.3關(guān)系數(shù)據(jù)語言(1)關(guān)系數(shù)據(jù)語言按照完成的功能可分為三類:數(shù)據(jù)定義語言

(DDL)、數(shù)據(jù)操縱語言(DML)和數(shù)據(jù)控制語言(DCL)。(2)關(guān)系數(shù)據(jù)語言按照查詢方式的不同可分為三類:關(guān)系代數(shù)

語言(如ISBL)、關(guān)系演算語言(如APLHA)、具有關(guān)系

代數(shù)與關(guān)系演算雙重特點的語言(如SQL)。292.2關(guān)系數(shù)據(jù)操作2.3關(guān)系的完整性第2章關(guān)系運算理論2.3關(guān)系的完整性2.3.1完整性約束的分類關(guān)系模型中有三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。(1)實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱作是關(guān)系的兩個不變性,應(yīng)該由關(guān)系數(shù)據(jù)庫DBMS自動支持。(2)用戶自定義的完整性是應(yīng)用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束。312.3.2實體完整性1.實體完整性規(guī)則

若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。2.實體完整性的必要性(1)實體完整性規(guī)則是針對基本關(guān)系而言的。一個基本表通常對應(yīng)現(xiàn)實世界的一個實體集或一個多對多聯(lián)系。2.3關(guān)系的完整性(2)現(xiàn)實世界中的實體和實體間的聯(lián)系都是可區(qū)分的,即它們具有某種唯一性標(biāo)識。相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識。(3)主碼中的屬性即主屬性不能取空值。空值就是“不知道”或“無意義”的值。主屬性取空值,就說明存在某個不可標(biāo)識的實體,即存在不可區(qū)分的實體,這與第(2)點相矛盾。2.3關(guān)系的完整性2.3.2實體完整性3.實體完整性規(guī)則規(guī)定:基本關(guān)系的所有主屬性都不能取空值。例如:學(xué)生實體中“學(xué)號”是主碼,則“學(xué)號”不能取空值;課程實體中“課程號”是主碼,則“課程號”不能取空值;學(xué)生選課關(guān)系——選修表(學(xué)號,課程號,成績)中,“學(xué)號、課程號”是主碼,則“學(xué)號”和“課程號”兩個屬性都不能取空值。342.3關(guān)系的完整性35學(xué)號姓名性別年齡所在系10172001101720021017200310172004陳一姚二張三李四男女女男17201922計算機系計算機系計算機系日語系例如:學(xué)生(學(xué)號,姓名,性別,年齡,系別),“學(xué)號”不能取空值;課程(課程號,課程名,學(xué)分),“課程號”不能取空值。36課程號課程名學(xué)分C1C2C3C4mathsenglishjapanesedatabase3543選課(學(xué)號,課程號,成績)中,“學(xué)號”和“課程號”兩個屬性都不能取空值。37學(xué)號課程號成績10172001101720011017200210172002C1C2C2C4949688762.3.3參照完整性1.關(guān)系間的引用現(xiàn)實世界中的實體之間往往存在著某種聯(lián)系,在關(guān)系模型中實體及實體間的聯(lián)系都是用關(guān)系來描述的。這樣就自然存在著關(guān)系與關(guān)系間的引用。例如:學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系可以用如下三個關(guān)系表示:

學(xué)生(學(xué)號,姓名,性別,年齡,院系)

課程(課程號,課程名,學(xué)分)

選修(學(xué)號,課程號,成績)這三個關(guān)系(或三張表)之間存在著屬性的引用,即選修關(guān)系引用

了學(xué)生關(guān)系的主碼“學(xué)號”和課程關(guān)系的主碼“課程號”。382.3關(guān)系的完整性2.3.3參照完整性2.外碼設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼。如果F與基本關(guān)系S的主碼KS相對應(yīng),則稱F是基本關(guān)系R的外碼,基本關(guān)系R稱為參照關(guān)系(ReferencingRelation),基本關(guān)系S稱為被參照關(guān)系(ReferencedRelation)或目標(biāo)關(guān)系(TargetRelation)。在上例中,選修關(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)系。392.3關(guān)系的完整性2.3.3參照完整性3.參照完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼KS相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:或取空值(F的每個屬性值均為空值);或等于S中某個元組的主碼值。402.3關(guān)系的完整性2.3.3參照完整性3.參照完整性規(guī)則結(jié)合實例,按照參照完整性規(guī)則,“學(xué)號”和“課程號”屬性也可以取兩類值:空值或目標(biāo)關(guān)系中已經(jīng)存在的值。但由于“學(xué)號”和“課程號”是選修關(guān)系中的主屬性,按照實體完整性規(guī)則,它們均不能取空值,并且選修關(guān)系中的“學(xué)號”和“課程號”屬性實際上只能取相應(yīng)被參照關(guān)系中已經(jīng)存在的主碼值。412.3關(guān)系的完整性42學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)專業(yè)(專業(yè)號,專業(yè)名)1)學(xué)生關(guān)系中的專業(yè)號參照專業(yè)關(guān)系中的專業(yè)號,專業(yè)號的值可以是:

(1)空值--表示尚未給學(xué)生分配專業(yè)(2)非空值--值必須取專業(yè)關(guān)系中專業(yè)號的值2)學(xué)生關(guān)系中的班長與學(xué)號之間存在引用關(guān)系,班長的取值可以是:(1)空值---表示該班級未選班長(2)非空值---值必須取同一關(guān)系的學(xué)號43職工號部門編號姓名…980198029803980498050101020203張三李四王五趙六錢七部門編號部門名稱…01020304財務(wù)部人事部公關(guān)部技術(shù)部職工表(R2)部門表(R1)主鍵外鍵2.3.4用戶定義完整性實體完整性與參照完整性是由系統(tǒng)自動支持的,這是關(guān)系模型所要

求的。除此之外,不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,

往往需要一些特殊的約束條件,這就是用戶定義的完整性約束條件。(1)用戶定義完整性規(guī)則是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,

反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。(2)關(guān)系模型應(yīng)提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的

系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能。442.3關(guān)系的完整性45(1)對屬性的類型約束年齡只能取整數(shù),姓名的字符串長度最大為20。(2)對屬性的非空約束學(xué)生的姓名不允許為空。(3)對屬性值的取值范圍進行約束學(xué)生成績在0—100之間,在職職工的工資不低于1000元等。46(4)對同一關(guān)系的不同元組進行約束不允許出現(xiàn)兩個不同的用戶擁有相同的賬號昵稱。(5)對同一關(guān)系的各屬性進行約束職工工資=職工工齡*工齡工資+職務(wù)工資+………2.4傳統(tǒng)的集合運算第2章關(guān)系運算理論2.4傳統(tǒng)的集合運算關(guān)系代數(shù)的運算對象和結(jié)果均為關(guān)系。關(guān)系代數(shù)用到的運算符包括:集合運算符、專門的關(guān)系運算符、比較運算符和邏輯運算符,如表2.3所示。482.4.1并運算例題2.1在校學(xué)生關(guān)系R和休學(xué)學(xué)生關(guān)系S,其中關(guān)系R與關(guān)系S都有四個屬性(學(xué)號,姓名,性別,狀態(tài)),若要取得所有學(xué)生關(guān)

系T,則關(guān)系T由屬于在校學(xué)生關(guān)系R和休學(xué)學(xué)生關(guān)系S的所有元組

組成(即為集合并運算),并且得到的關(guān)系T仍然有四個屬性

(學(xué)號,姓名,性別,狀態(tài))。如表2.4、表2.5、表2.6所示。492.4傳統(tǒng)的集合運算50例如:ABC123456789ABC7894565112RSR∪S的結(jié)果為:ABC1234567895112并運算2.4.2差運算例題2.2有本店商品關(guān)系R和不合格商品關(guān)系S,其中關(guān)系R與關(guān)系S都有三個屬性(品牌,名稱,廠家),若要找出本店內(nèi)合格的

商品關(guān)系T,則關(guān)系T由屬于本店商品關(guān)系R而不屬于不合格商品

關(guān)系S的元組組成(即為集合差運算),并且得到的關(guān)系T仍然

有三個屬性(品牌,名稱,廠家)。如表2.7、表2.8、表2.9所示。522.4傳統(tǒng)的集合運算53例如:ABC123456789ABC7894565112RSR-S的結(jié)果為:ABC123差運算2.4.3交運算例題2.3在上例中,若要找出本店內(nèi)不合格的商品關(guān)系T,則關(guān)系T由既屬于本店商品關(guān)系R又屬于不合格商品關(guān)系S的元組組成(即為集合交運算),并且得到的關(guān)系T仍然有三個屬性(品牌,名

稱,廠家)。如表2.10所示。552.4傳統(tǒng)的集合運算5657S-RR-SR∩SR∩S=R-(R-S)

R∩S=S-(S-R)交運算58例如:ABC123456789ABC7894565112RSR∩S的結(jié)果為:ABC456789交運算2.4.4廣義笛卡爾積例題2.4

現(xiàn)有學(xué)生關(guān)系R和必修課程關(guān)系S,其中關(guān)系R有兩個屬性(學(xué)號、姓名),關(guān)系S有三個屬性(課程號、課程名、學(xué)分),每個學(xué)生必須學(xué)習(xí)所有必修課程,要求形成選課關(guān)系T。由學(xué)生選修課程形成的選課關(guān)系必須包括學(xué)生關(guān)系R的屬性和必修課程關(guān)系S的屬性,即關(guān)系T包括學(xué)號,姓名,課程號,課程名和學(xué)分五個屬性,由于學(xué)生關(guān)系R中兩個元組選修的課程都對應(yīng)著必修課程關(guān)系S中的三個元組,所以,選課關(guān)系T共有六個元組,則得到的關(guān)系T由五個屬性和六個元組組成(即為笛卡爾積運算)。如表2.11、表2.12、表2.13所示。592.4傳統(tǒng)的集合運算6061兩個分別為n目和m目的關(guān)系R和S的廣義笛卡兒積是一個(n+m)列的元組的集合。元組的前n列是關(guān)系R的一個元組,后m列是關(guān)系S的一個元組。若R有k1個元組,S有k2個元組,則關(guān)系R和關(guān)系S的廣義笛卡兒積有k1×k2個元組。記作:ABCabcbceedcCDcdefRSABR.CS.CDabccdabcefbcecdbceefedccdedcefR×S結(jié)果為:R×S結(jié)果中元組的個數(shù)(即基數(shù),行數(shù))=R和S中行數(shù)之積;屬性的個數(shù)(即元數(shù),列數(shù))=R和S中列數(shù)之和。2.5專門的關(guān)系運算第2章關(guān)系運算理論64選擇σ

、投影π

、連接、求商÷

(運算不僅涉及行而且涉及列)專門的關(guān)系運算:2.5專門的關(guān)系運算2.5.1選擇運算設(shè)有一個學(xué)生—課程數(shù)據(jù)庫。學(xué)生關(guān)系包括學(xué)號、姓名、性別、年齡和院系五個屬性,課程關(guān)系包括課程號、課程名和學(xué)分三個屬性,選修關(guān)系包括學(xué)號、課程號和成績?nèi)齻€屬性。關(guān)系模式表示如下:student(sno,sname,sex,age,dept)course(cno,cname,credit)sc(sno,cno,grade)65662.5.1選擇運算例題2.5查詢計算機系全體學(xué)生的信息。由student關(guān)系中滿足dept=“計算機系”這一條件的元組組成(即為選擇運算)。結(jié)果如表2.17所示。672.5專門的關(guān)系運算2.5.1選擇運算由此可見,選擇運算實際上是從關(guān)系R中選取使邏輯表達式值為真的元組。這是從行的角度進行的運算。如圖2.2所示。

圖2.2選擇操作選擇又稱為限制(Restriction)。它是在關(guān)系R中選擇滿足給定條件的諸元組,記作:其中F表示選擇條件,它是一個邏輯表達式,取邏輯值“真”或“假”。682.5專門的關(guān)系運算2.5專門的關(guān)系運算例題2.6查詢年齡小于20歲的學(xué)生。

σAge<20(student)或σ4<20(student)結(jié)果如表2.18所示。692.5專門的關(guān)系運算2.5.2投影運算例題2.7查詢學(xué)生的學(xué)號和姓名。由student關(guān)系中的學(xué)號屬性列和姓名屬性列組成的新關(guān)系(即為投影運算)。結(jié)果如表2.19所示。說明:形成的新關(guān)系不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組,因為取消了某些屬性列后,就可能出現(xiàn)重復(fù)行,應(yīng)取消這些完全相同的行。702.5專門的關(guān)系運算2.5.2投影運算由此可見,投影操作是從列的角度進行的運算。如圖2.3所示。關(guān)系R上的投影是從R中選擇出若干屬性列組成新的關(guān)系。記作:

其中A為R中的屬性列。712.5專門的關(guān)系運算例題2.8查詢學(xué)生關(guān)系student中都有哪些院系,即查詢關(guān)系student在院系屬性上的投影。

πDept(student)

結(jié)果如表2.20所示。說明:student關(guān)系原來有四個元組,而投影結(jié)果取消了重復(fù)的計算機系元組,因此只有兩個元組。722.5專門的關(guān)系運算2.5.3連接運算連接也稱為θ連接。它是從兩個關(guān)系的笛卡兒積中選取屬性間滿足一定條件的元組。記作:其中A和B分別為R和S上度數(shù)相等且可比的屬性組。θ是比較運算符。連接運算從R和S的廣義笛卡爾積RS中選?。≧關(guān)系)在A

屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組。732.5專門的關(guān)系運算2.5.3連接運算連接運算中有兩種最為重要也最為常用的連接,一種是等值連接(Equal-Join),一種是自然連接(Natural-Join)。θ為“=”的連接運算稱為等值連接。它是從關(guān)系R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組,即等值連接為:742.5專門的關(guān)系運算2.5.3連接運算自然連接(Natural-join)是一種特殊的等值連接,它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。即若R和S具有相同的屬性組B,U為R和S的全體屬性集合,則自然連接可記作:752.5專門的關(guān)系運算2.5.3連接運算一般的連接操作是從行的角度進行運算。但自然連接還需要取消重復(fù)列,所以是同時從行和列的角度進行運算。如圖2.4所示。

圖2.4連接操作7677ABCa1b15a1b26a2b38a2b412BEb13b27b310b32b52RS78R

S

AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310C<E79

等值連接R

SR.B=S.B

AR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b3280

自然連接R

SABCEa1b153a1b267a2b3810a2b38281

外連接R

S:如果把舍棄的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(NULL)ABCEa1b153a1b267a2b3810a2b382a2b412NULLNULLb5NULL282

左外連接R

S:如果只把左邊關(guān)系R中要舍棄的元組保留就叫做左外連接。ABCEa1b153a1b267a2b3810a2b382a2b412NULL83

右外連接R

S:如果只把右邊關(guān)系S中要舍棄的元組保留就叫做右外連接ABCEa1b153a1b267a2b3810a2b382NULLb5NULL2ABCabcdbcbbfcadBCDbcdbceadbRSAR.BR.CS.BS.CDabcbcdabcbcedbcbcddbcbcecadadbRS等值聯(lián)接3=2RS1=1AR.BR.CS.BS.CDbbfbcdbbfbceabcadbABCabcdbcbbfcadBCDbcdbceadbRSABCDabcdabcedbcddbcecadbRS自然聯(lián)接2.5專門的關(guān)系運算2.5.4除運算為敘述上的方便先引入幾個概念。(1)元組的分量(2)象集(ImageSet)8687(1)元組的分量設(shè)關(guān)系模式為R(A1,A2,……An),它的一個關(guān)系為Rt∈R表示t是R的一個元組t[Ai]

則表示元組t中相應(yīng)于屬性Ai的一個分量。A1A2…Ai…An………………at1at2at3atiatn………………元組t分量t[Ai]88元組的分量舉例2如:關(guān)系模式SSNOSNAME

SSEXSCSRQ……99001……99058張三……龐兵男……男1980……1979………………t

:(99058,龐兵,男,1979,……)t[SNAME]=龐兵,表示元組t在姓名SNAME上的分量為“龐兵”。89屬性列/域列舉例姓名學(xué)號性別出生日期身份證號籍貫………………張玫200101女1987.1.3210211870103980遼寧劉清200102女1988.4.9370602880409222山東田亮200103男1988.10.6101234881006301河北………………A元組tt[A]=(劉清,200102,女)是元組t在屬性列A上諸分量的集合90(2)象集Zx(ImagesSet)給定一個關(guān)系R(X,Z),X和Z為屬性組。當(dāng)t[X]=x時,x在R中的象集(ImagesSet)為:

Zx={t[Z]|t

R,t[X]=x}它表示R中屬性組X上值為x的諸元組在Z上分量的集合。91象集舉例1x1在R中的象集

Zx1

={Z1,Z2,Z3},x2在R中的象集

Zx2

={Z2,Z3},x3在R中的象集

Zx3={Z1,Z3}x1Z1x1Z2x1Z3x2Z2x2Z3x3Z1x3Z3R92象集舉例2學(xué)號課程號成績200102025720010201782001010389………選課SCXZxt[Z]t[Z]則Zx={(02,57),(01,78)}93象集舉例3例如:學(xué)生-課程數(shù)據(jù)庫中的選修關(guān)系S-Ct[X]=t[SNO]=x=99001象集:Zx={(001,85),(003,90)}t[X]=t[CNO]=x=001象集:Zx={(99001,85),(99002,75)}SNOCNOGrade990010018599001003909900200175990020028094學(xué)號姓名性別年齡籍貫200103張力女17河北200102王紅女18上海200101馬闖男19北京200104劉樹男19廣州學(xué)生Xx則Zx={(200103,張力,河北)}Zt[Z]象集舉例4

2.5專門的關(guān)系運算2.5.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上投影的集合。

記作:其中Yx為x在R中的象集,x=tr[X]952.5專門的關(guān)系運算2.5.4除運算除操作是同時從行和列角度進行運算。如圖2.6所示。

962.5專門的關(guān)系運算2.5.4除運算因此,求R÷S的操作步驟如下:(1)將R中屬性分為兩個集合X和Y,

R(X,Y),其中Y就是S中的前半部分屬性的集合,S(Y,Z)。(2)若X的某個值x的象集YxYx={t[Y]∣t∈R∧t[X]=x}包含S表中t[Y]的所有元組,則將x放入結(jié)果集中。9798ABCa1b1c2a2

b3c7a3b4c6a1

b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2XYYZ例:R÷SRS(1)當(dāng)x=(a1)時其象集為X可以取值為{a1,a2,a3,a4}BCb1c2b2c3b2c199(2)當(dāng)x=(a2)時(3)當(dāng)x=(a3)時(4)當(dāng)x=(a4)時其象集為其象集為其象集為BCb3c7b2c3BCb4c6BCb6c6

B

C

b1c2b2c1b2c3S在(B,C)Y上的投影為R÷S的結(jié)果為:Aa1X2.5專門的關(guān)系運算除運算如圖2.7所示。設(shè)關(guān)系

溫馨提示

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

評論

0/150

提交評論