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

下載本文檔

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

文檔簡(jiǎn)介

第2章關(guān)系運(yù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)的集合運(yùn)算2.5專門(mén)的關(guān)系運(yùn)算2.6綜合實(shí)例2.7本章小結(jié)2.1關(guān)系數(shù)據(jù)結(jié)構(gòu)第2章關(guān)系運(yùn)算理論2.1關(guān)系數(shù)據(jù)結(jié)構(gòu)2.1.1關(guān)系的定義1.域(Domain)域是一組具有相同數(shù)據(jù)類型的值的集合。例如:整數(shù)、實(shí)數(shù)、介于某個(gè)取值范圍的日期。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)笛卡爾積中每一個(gè)元素(d1,d2,…,dn)叫作一個(gè)n元組(n-tuple)或簡(jiǎn)稱元組。(2)分量(Component)笛卡爾積元素(d1,d2,…,dn)中的每一個(gè)值di叫作一個(gè)分量。(3)基數(shù)(CardinalNumber)若Di(i=1,2,…,n)為有限集,其基數(shù)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數(shù)M為:

(即為元組的個(gè)數(shù))。(4)笛卡爾積的表示方法笛卡爾積可表示為一個(gè)二維表。表中的每行對(duì)應(yīng)一個(gè)元組,表中的每列對(duì)應(yīng)一個(gè)域。5例如,給出3個(gè)域:D1:院系集合DEPARTMENT={計(jì)算機(jī)系,日語(yǔ)系}D2:班級(jí)集合CLASS={1班,2班}D3:學(xué)生集合STUDENT={張三,李四,王五}其中(計(jì)算機(jī)系,1班,張三)、(計(jì)算機(jī)系,2班,李四)等都是元組,計(jì)算機(jī)系、1班、2班、張三、李四等都是分量。該笛卡爾積的基數(shù)為2×2×3=12。即D1×D2×D3共有12個(gè)元組。這12個(gè)元組可列成一張二維表,如表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)系中的每個(gè)元素是關(guān)系中的元組,通常用t表示。(2)單元關(guān)系與二元關(guān)系

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

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

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

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

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

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

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

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

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

課程(課程號(hào),課程名,學(xué)分)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

、投影π

、連接、求商÷

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

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

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

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

πDept(student)

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

屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組。732.5專門(mén)的關(guān)系運(yùn)算2.5.3連接運(yùn)算連接運(yùn)算中有兩種最為重要也最為常用的連接,一種是等值連接(Equal-Join),一種是自然連接(Natural-Join)。θ為“=”的連接運(yùn)算稱為等值連接。它是從關(guān)系R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組,即等值連接為:742.5專門(mén)的關(guān)系運(yùn)算2.5.3連接運(yùn)算自然連接(Natural-join)是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。即若R和S具有相同的屬性組B,U為R和S的全體屬性集合,則自然連接可記作:752.5專門(mén)的關(guān)系運(yùn)算2.5.3連接運(yùn)算一般的連接操作是從行的角度進(jìn)行運(yùn)算。但自然連接還需要取消重復(fù)列,所以是同時(shí)從行和列的角度進(jìn)行運(yùn)算。如圖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專門(mén)的關(guān)系運(yùn)算2.5.4除運(yùn)算為敘述上的方便先引入幾個(gè)概念。(1)元組的分量(2)象集(ImageSet)8687(1)元組的分量設(shè)關(guān)系模式為R(A1,A2,……An),它的一個(gè)關(guān)系為Rt∈R表示t是R的一個(gè)元組t[Ai]

則表示元組t中相應(yīng)于屬性Ai的一個(gè)分量。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é)號(hào)性別出生日期身份證號(hào)籍貫………………張玫200101女1987.1.3210211870103980遼寧劉清200102女1988.4.9370602880409222山東田亮200103男1988.10.6101234881006301河北………………A元組tt[A]=(劉清,200102,女)是元組t在屬性列A上諸分量的集合90(2)象集Zx(ImagesSet)給定一個(gè)關(guān)系R(X,Z),X和Z為屬性組。當(dāng)t[X]=x時(shí),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é)號(hào)課程號(hào)成績(jī)200102025720010201782001010389………選課SCXZxt[Z]t[Z]則Zx={(02,57),(01,78)}93象集舉例3例如:學(xué)生-課程數(shù)據(jù)庫(kù)中的選修關(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é)號(hào)姓名性別年齡籍貫200103張力女17河北200102王紅女18上海200101馬闖男19北京200104劉樹(shù)男19廣州學(xué)生Xx則Zx={(200103,張力,河北)}Zt[Z]象集舉例4

2.5專門(mén)的關(guān)系運(yùn)算2.5.4除運(yùn)算給定關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)

算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性

列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。

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

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

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

b3c7a3b4c6a1

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

B

C

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論