數(shù)據(jù)庫原理與設(shè)計(jì):chp2-關(guān)系數(shù)據(jù)庫_第1頁
數(shù)據(jù)庫原理與設(shè)計(jì):chp2-關(guān)系數(shù)據(jù)庫_第2頁
數(shù)據(jù)庫原理與設(shè)計(jì):chp2-關(guān)系數(shù)據(jù)庫_第3頁
數(shù)據(jù)庫原理與設(shè)計(jì):chp2-關(guān)系數(shù)據(jù)庫_第4頁
數(shù)據(jù)庫原理與設(shè)計(jì):chp2-關(guān)系數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩116頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫原理與設(shè)計(jì)蘇州大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

關(guān)系數(shù)據(jù)庫簡介關(guān)系數(shù)據(jù)庫簡介提出關(guān)系模型的是美國IBM公司的E.F.Codd1970年提出關(guān)系數(shù)據(jù)模型E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》,1970之后,提出了關(guān)系代數(shù)和關(guān)系演算的概念1972年提出了關(guān)系的第一、第二、第三范式1974年提出了關(guān)系的BC范式關(guān)系數(shù)據(jù)庫簡介關(guān)系數(shù)據(jù)庫是采用關(guān)系模型作為數(shù)據(jù)組織方式的數(shù)據(jù)庫。目前廣泛使用的數(shù)據(jù)庫軟件基本上都是基于關(guān)系模型的關(guān)系數(shù)據(jù)庫管理系統(tǒng),例如SQLServer2000/2005、Oracle、Sybase、Informix、DB2等,都是典型的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。第三章關(guān)系數(shù)據(jù)庫3.1關(guān)系模型的基本概念3.2關(guān)系代數(shù)3.3規(guī)范化3.4關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化3.5常用關(guān)系數(shù)據(jù)庫管理系統(tǒng)介紹3.6小結(jié)3.1關(guān)系模型的基本概念關(guān)系模型就是用二維表格結(jié)構(gòu)來表示實(shí)體及實(shí)體之間聯(lián)系的模型關(guān)系模型是各個關(guān)系的框架的集合,即關(guān)系模型是一些表格的格式,其中包括關(guān)系名、屬性名、關(guān)鍵字等。TNO教師號TN姓名SEX性別AGE年齡PROF職稱SAL工資COMM崗位津貼DEPT系別CNO課程號CN課程名CT課時

TNO教師號CNO課程號教師關(guān)系T課程關(guān)系C授課關(guān)系SC3.1關(guān)系模型的基本概念由上例可以看出,在一個關(guān)系中可以存放兩類信息:一類是描述實(shí)體本身的信息一類是描述實(shí)體(關(guān)系)之間的聯(lián)系的信息3.1關(guān)系模型的基本概念關(guān)系模型的組成關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系操作集合關(guān)系完整性約束在關(guān)系模型中,數(shù)據(jù)是以二維表的形式存在的,這個二維表就叫做關(guān)系2.關(guān)系理論是以集合代數(shù)理論為基礎(chǔ)的,因此,我們可以用集合代數(shù)給出二維表的“關(guān)系”定義3.1關(guān)系模型的基本概念關(guān)系模型的組成關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系操作集合關(guān)系完整性約束關(guān)系代數(shù)用代數(shù)的方法表示關(guān)系模型

2.關(guān)系演算用邏輯方法表示關(guān)系模型3.1關(guān)系模型的基本概念關(guān)系模型的組成關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系操作集合關(guān)系完整性約束實(shí)體完整性

2.參照完整性

3.用戶定義的完整性3.1關(guān)系模型的基本概念為了從集合論的角度給出關(guān)系的定義,我們先引入域和笛卡爾積的概念§3.1.1關(guān)系的數(shù)學(xué)定義【定義1】域(Domain)是一組具有相同數(shù)據(jù)類型的值的集合整數(shù),實(shí)數(shù),指定長度的字符串集合域中所包含的值的個數(shù)稱為域的基數(shù)(用m表示)。關(guān)系中用域表示屬性的取值范圍。例如:D1={李力,王平,劉偉} m1=3 D2={男,女} m2=2 D3={47,28,30} m3=3 其中,D1,D2,D3為域名,分別表示教師關(guān)系中姓名、性別、年齡的集合。域名無排列次序,如D2={男,女}={女,男}§3.1.1關(guān)系的數(shù)學(xué)定義【定義2】笛卡爾積設(shè)D1,D2,…,Dn為任意域,定義D1,D2,…,Dn的笛卡爾積(CartesianProduct)為:所有域的所有取值的一個組合不能重復(fù)由定義可以看出,笛卡爾積也是一個集合§3.1.1關(guān)系的數(shù)學(xué)定義其中:1.元素中的每一個di叫做一個分量(Component),來自相應(yīng)的域(di∈Di)2.每一個元素(d1,d2,d3,…,dn)叫做一個n元組(n-tuple),簡稱元組(Tuple)。但元組不是di的集合,元組的每個分量(di)是按序排列的。如:(1,2,3)≠(2,3,1)≠(1,3,2);§3.1.1關(guān)系的數(shù)學(xué)定義例子:設(shè)D1為專業(yè)域,D2為學(xué)生域,且D1={計(jì)算機(jī)應(yīng)用,信息管理},D2={張三,李四,王五},則D1×D2={(計(jì)算機(jī)應(yīng)用,張三),(計(jì)算機(jī)應(yīng)用,李四),(計(jì)算機(jī)應(yīng)用,王五),(信息管理,張三),(信息管理,李四),(信息管理,王五)}§3.1.1關(guān)系的數(shù)學(xué)定義元組(Tuple)不能重復(fù)(計(jì)算機(jī)應(yīng)用,王五),(信息管理,王五)分量(Component)計(jì)算機(jī)應(yīng)用,王五都是分量笛卡爾積的基數(shù)(Cardinalnumber)若Di(i=1,2,…,n)為有限集,其基數(shù)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數(shù)M為:前面例子的M為2*3=6§3.1.1關(guān)系的數(shù)學(xué)定義笛卡爾積的表示方法笛卡爾積可表示為一個二維表表中的每行對應(yīng)一個元組,表中的每列對應(yīng)一個域D1,D2的笛卡兒積specialitypostgraduate計(jì)算機(jī)應(yīng)用張三計(jì)算機(jī)應(yīng)用李四計(jì)算機(jī)應(yīng)用王五信息管理張三信息管理李四信息管理王五§3.1.1關(guān)系的數(shù)學(xué)定義【定義3】關(guān)系D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的關(guān)系,表示為R(D1,D2,…,Dn)R:關(guān)系名n:關(guān)系的目或度(Degree)當(dāng)n=1時,稱為單元關(guān)系。當(dāng)n=2時,稱為二元關(guān)系。…當(dāng)n=n時,稱為n元關(guān)系。D1×D2笛卡爾積的子集學(xué)生關(guān)系specialitypostgraduate計(jì)算機(jī)應(yīng)用張三計(jì)算機(jī)應(yīng)用王五信息管理李四§3.1.1關(guān)系的數(shù)學(xué)定義關(guān)系的元組關(guān)系中的每個元素是關(guān)系中的元組,通常用t表示。比如,學(xué)生關(guān)系中(計(jì)算機(jī)應(yīng)用,張三)就是一個元組關(guān)系中元組個數(shù)是關(guān)系的基數(shù)比如,學(xué)生關(guān)系的基數(shù)是3關(guān)系的表示與笛卡爾積類似,同樣可以把關(guān)系看成一個二維表。其中,(1)表的框架由域Di(i=1,2,……n)構(gòu)成;(2)表的任意一行對應(yīng)一個元組;(3)表的每一列來自同一域;(4)域可以相同,為了加以區(qū)別,每列起一個名字,稱為屬性,n目關(guān)系有n個屬性,屬性的名字唯一,屬性的取值范圍Di(i=1,2,…,n)稱為值域(5)具有相同關(guān)系框架的關(guān)系成為同類關(guān)系關(guān)系的含義數(shù)學(xué)上關(guān)系是笛卡爾積的任意子集,但在實(shí)際應(yīng)用中關(guān)系是笛卡爾積中所取的有意義的子集。例如在前面例子的笛卡爾集中選取一個子集構(gòu)成如下關(guān)系,顯然不符合實(shí)際情況D1,D2的笛卡兒積的子集specialitypostgraduate計(jì)算機(jī)應(yīng)用張三信息管理張三關(guān)系的性質(zhì)盡管關(guān)系與二維表格、傳統(tǒng)的數(shù)據(jù)文件是非常類似的,但它們之間又有重要的區(qū)別。

嚴(yán)格地說,關(guān)系是種規(guī)范化了的二維表中行的集合,關(guān)系具有如下特性:1.關(guān)系中不允許出現(xiàn)相同的元組。因?yàn)閿?shù)學(xué)上集合中沒有相同的元素,而關(guān)系是元組的集合,所以作為集合元素的元組應(yīng)該是唯一的。2.關(guān)系中元組的順序(即行序)是無關(guān)緊要的,在一個關(guān)系中可以任意交換兩行的次序。因?yàn)榧现械脑厥菬o序的,所以作為集合元素的元組也是無序的。根據(jù)關(guān)系的這個性質(zhì),可以改變元組的順序使其具有某種排序,然后按照順序查詢數(shù)據(jù),可以提高查詢速度。3.關(guān)系中屬性的順序是無關(guān)緊要的,即列的順序可以任意交換。交換時,應(yīng)連同屬性名一起交換,否則將得到不同的關(guān)系。關(guān)系的性質(zhì)4.同一屬性名下的各個屬性值必須來自同一個域,是同一類型的數(shù)據(jù)。5.關(guān)系中各個屬性必須有不同的名字,不同的屬性可來自同一個域,即它們的分量可以取自同一個域。6.關(guān)系中每一分量必須是不可分的數(shù)據(jù)項(xiàng),或者說所有屬性值都是原子的,即是一個確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”。滿足此條件的關(guān)系稱為規(guī)范化關(guān)系,否則稱為非規(guī)范化關(guān)系。姓名籍貫

姓名省市/縣省市/縣

張強(qiáng)吉林長春

張強(qiáng)吉林長春王麗山西大同

王麗山西大同關(guān)系模式和關(guān)系數(shù)據(jù)庫模式

關(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)系集合有時可以簡化成R(U),比如:學(xué)生(學(xué)號,姓名,性別,年齡,系別)一組關(guān)系模式的集合叫做關(guān)系數(shù)據(jù)庫模式。關(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ū)別關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫是“一組隨時間變化,具有各種度的規(guī)范化關(guān)系的集合”。由此可見,關(guān)系數(shù)據(jù)庫也有型和值的概念,其型就是關(guān)系數(shù)據(jù)庫模式,相對固定;其值就是關(guān)系數(shù)據(jù)庫內(nèi)容,代表現(xiàn)實(shí)世界中的實(shí)體,而實(shí)體是隨著時間不斷變化的,所以其值在不同的時刻會有所變化。關(guān)系的鍵(碼)候選碼(Candidatekey)若關(guān)系中的某一屬性組的值能唯一地標(biāo)識一個元組,則稱該屬性組為候選碼簡單的情況:候選碼只包含一個屬性“學(xué)生關(guān)系”中的學(xué)號能唯一標(biāo)識每一個學(xué)生,則屬性學(xué)號是學(xué)生關(guān)系的候選鍵。在“選課關(guān)系”中,只有屬性的組合“學(xué)號+課程號”才能唯一地區(qū)分每一條選課記錄,則屬性集“學(xué)號+課程號”是選課關(guān)系的候選鍵。關(guān)系的鍵(碼)全碼(All-key)

最極端的情況:關(guān)系模式的所有屬性組是這個關(guān)系模式的候選碼,稱為全碼(All-key)假設(shè)有教師授課關(guān)系TCS,分別有三個屬性教師(T)、課程(C)和學(xué)生(S)。一個教師可以講授多門課程,一門課程可以為多個教師講授,同樣一個學(xué)生可以選聽多門課程,一門課程可以為多個學(xué)生選聽。在這種情況下,T,C,S三者之間是多對多關(guān)系,(T,C,S)三個屬性的組合是關(guān)系TCS的候選碼,稱為全碼,T,C,S都是主屬性。tidcidsnot1c1s1t1c1s2t1c2s1t2c1s1t2c2s2t2c3s2關(guān)系的鍵(碼)下面給出候選鍵的形式化定義:設(shè)關(guān)系R有屬性A1,A2,……An,其屬性集K=(Ai,Aj,……Ak),當(dāng)且僅當(dāng)滿足下列條件時,K被稱為候選鍵:

1.唯一性(Uniqueness):關(guān)系R的任意兩個不同元組,其屬性集K的值是不同的。

2.最小性(Minimally):組成關(guān)系鍵的屬性集(Ai,Aj,……Ak)中,任一屬性都不能從屬性集K中刪掉,否則將破壞唯一性的性質(zhì)候選碼識別舉例TSCT1S1C4T2S2C3T3S1C1T4S3C22個候選碼T或者C候選碼識別舉例TSCT1S2C1T1S1C3T2S1C2T2S3C1(T,S)(S,C)(T,C)3個候選碼候選碼識別舉例TSCT1S1C1T1S1C3T2S1C1T2S3C11個候選碼(T,S,C)a1a2a3a4b1b2b3b4a1a2a3a4b1b2b3b4a1a2a3a4b1b2b3b4主鍵如果一個關(guān)系中有多個候選鍵,可以從中選擇一個作為查詢、插入或刪除元組的操作變量,被選用的候選鍵稱為主關(guān)系鍵(PrimaryKey),或簡稱為主鍵、主碼、關(guān)系鍵、關(guān)鍵字。例如,假設(shè)在學(xué)生關(guān)系中沒有重名的學(xué)生,則“學(xué)號”和“姓名”都可作為學(xué)生關(guān)系的候選鍵。如果選定“學(xué)號”作為數(shù)據(jù)操作的依據(jù),則“學(xué)號”為主關(guān)系鍵。在關(guān)系模式中表示主鍵學(xué)生(學(xué)號,姓名,性別,年齡,系別)主屬性與非碼屬性主屬性(PrimeAttribute):包含在候選碼中的的各屬性稱為主屬性。非碼屬性(Non-PrimeAttribute):不包含在任何候選碼中的屬性稱為非碼屬性。在最簡單的情況下,一個候選碼只包含一個屬性,如學(xué)生關(guān)系中的“學(xué)號”,教師關(guān)系中的“教師號”。最極端情況,全碼關(guān)系中所有屬性都是主屬性外部關(guān)系鍵如果關(guān)系R2的一個或一組屬性X不是R2的主碼,而是另一關(guān)系R1的主碼,則該屬性或?qū)傩越MX稱為關(guān)系R2的外部關(guān)系鍵或外碼(Foreignkey)。并稱關(guān)系R2為參照關(guān)系(referencingrelation),關(guān)系R1為被參照關(guān)系(referencedrelation)。R1depiddepname1計(jì)算機(jī)2外語系3電子系R2idnamedepid2001張三12002李四12003王五22004錢六3注意子表的外鍵和主表的主鍵名字可以不同,但類型必須相同§3.1.2關(guān)系模型的完整性為了維護(hù)數(shù)據(jù)庫中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,對關(guān)系數(shù)據(jù)庫的插入、刪除和修改操作必須有一定的約束條件,這就是關(guān)系模型的三類完整性:實(shí)體完整性參照完整性用戶定義的完整性§3.1.2關(guān)系模型的完整性1.實(shí)體完整性(EntityIntegrity)實(shí)體完整性是指關(guān)系的主鍵(碼)值不能為空或部分為空?,F(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識。與此相對應(yīng),關(guān)系模型中以主鍵(碼)來唯一標(biāo)識元組。例如,學(xué)生關(guān)系中的屬性“學(xué)號”可以唯一標(biāo)識一個元組,也可以唯一標(biāo)識學(xué)生實(shí)體。如果主鍵(碼)中的值為空或部分為空,即主屬性為空,則不符合鍵(碼)的定義條件,不能唯一標(biāo)識元組及與其相對應(yīng)的實(shí)體。因此主鍵(碼)的值不能為空或部分為空

選課表(學(xué)號,課程號,成績),主鍵為(學(xué)號,課程號)正確:(s01,c01,80);(s01,c01,null);錯誤:(s02,null,80);(null,c03,80);(null,null,80);(null,null,80);§3.1.2關(guān)系模型的完整性§3.1.2關(guān)系模型的完整性2.

參照完整性(Referentialintegrity)參照完整性規(guī)則的形式定義如下:如果屬性集K是關(guān)系模式R1的主鍵,K也是關(guān)系模式R2的外鍵,那么在R2的關(guān)系中,K的取值只允許兩種可能,或者為空值,或者等于R1關(guān)系中某個主鍵值。這條規(guī)則的實(shí)質(zhì)是“不允許引用不存在的實(shí)體”。在上述形式定義中,關(guān)系模式R1的關(guān)系稱為“參照關(guān)系”,關(guān)系模式R2的關(guān)系稱為“依賴關(guān)系”。“主表”和“副表”,“父表”和“子表”?!?.1.2關(guān)系模型的完整性例下面各種情況說明了參照完整性規(guī)則在關(guān)系中如何實(shí)現(xiàn)的。①在關(guān)系數(shù)據(jù)庫中有下列兩個關(guān)系模式:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)這里帶下劃線者為主鍵。據(jù)規(guī)則要求關(guān)系SC中的S#值應(yīng)該在關(guān)系S中出現(xiàn)。如果關(guān)系SC中有一個元組(S7,C4,80),而學(xué)號S7卻在關(guān)系S中找不到,那么我們就認(rèn)為在關(guān)系SC中引用了一個不存在的學(xué)生實(shí)體,這就違反了參照完整性規(guī)則?!?.1.2關(guān)系模型的完整性實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱作關(guān)系的兩個不變性。任何關(guān)系數(shù)據(jù)庫系統(tǒng)都應(yīng)該支持這兩類完整性。除此之外,不同的關(guān)系數(shù)據(jù)庫系統(tǒng)由于應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,這就是用戶定義完整性?!?.1.2關(guān)系模型的完整性3.用戶定義完整性(User-definedIntegrity)用戶定義完整性是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件。它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。例如,屬性值根據(jù)實(shí)際需要,要具備一些約束條件,如選課關(guān)系中成績不能為負(fù)數(shù);某些數(shù)據(jù)的輸入格式要有一些限制,學(xué)號格式(S0127001),S開頭,2位院系,2位專業(yè),3位編號等;關(guān)系模型應(yīng)該提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的、系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能?!?.1.2關(guān)系模型的完整性

例如學(xué)生的年齡定義為兩位整數(shù),范圍還太大,我們可以寫如下規(guī)則把年齡限制在15~30歲之間:

CHECK(AGEBETWEEN15AND30)

§3.1.3關(guān)系操作關(guān)系操作采用集合操作方式,即操作的對象和結(jié)構(gòu)都是集合。關(guān)系模型常用的關(guān)系操作包括:選擇,投影,連接,除,并,交,差等查詢操作和增加,刪除,修改操作。查詢是最主要的部分。所以說,關(guān)系數(shù)據(jù)庫的核心部分是查詢,故又稱為查詢語言,而查詢的條件要使用關(guān)系運(yùn)算表達(dá)式來表示按表達(dá)查詢的方法不同,關(guān)系運(yùn)算可分為關(guān)系代數(shù)和關(guān)系演算兩大類?!?.2關(guān)系代數(shù)關(guān)系代數(shù)是對關(guān)系進(jìn)行集合代數(shù)運(yùn)算,是基于關(guān)系代數(shù)的操作語言,稱為關(guān)系代數(shù)語言,簡稱關(guān)系代數(shù)。它是由IBM在一個實(shí)驗(yàn)性的系統(tǒng)上實(shí)現(xiàn)的,稱為ISBL(InformationSystemBaseLanguage)語言。ISBL的每個語句都類似于一個關(guān)系代數(shù)表達(dá)式。關(guān)系代數(shù)的運(yùn)算對象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系§3.2關(guān)系代數(shù)關(guān)系代數(shù)的運(yùn)算按運(yùn)算符的不同主要分為兩類:傳統(tǒng)的集合運(yùn)算:把關(guān)系看成元組的集合,以元組作為集合中元素來進(jìn)行運(yùn)算,其運(yùn)算是從關(guān)系的“水平”方向即行的角度進(jìn)行的。包括并、差、交和笛卡爾積等運(yùn)算。專門的關(guān)系運(yùn)算:不僅涉及行運(yùn)算,也涉及列運(yùn)算,這種運(yùn)算是為數(shù)據(jù)庫的應(yīng)用而引進(jìn)的特殊運(yùn)算。包括選取、投影、連接和除法等運(yùn)算。傳統(tǒng)的集合運(yùn)算

對兩個關(guān)系的集合運(yùn)算傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,是在兩個關(guān)系中進(jìn)行的。但是并不是任意的兩個關(guān)系都能進(jìn)行這種集合運(yùn)算,而是要在兩個滿足一定條件的關(guān)系中進(jìn)行運(yùn)算。相容性定義:設(shè)給定兩個關(guān)系R、S,若滿足:(1)

具有相同的度n;(2)

R中第i個屬性和S中第i個屬性必須來自同一個域。則說關(guān)系R、S是相容的。除笛卡爾積外,要求參加運(yùn)算的關(guān)系必須滿足上述的相容性定義?!纠咳鐖D(a)、(b)所示的兩個關(guān)系R與S為相容關(guān)系A(chǔ)BCa1b1c1a1b1c2a2b2c1R(a)ABCa1b1c1a2b2c1a2b3c2S(b)傳統(tǒng)的集合運(yùn)算1.并(Union)關(guān)系R和關(guān)系S的并由屬于R或?qū)儆赟的元組組成,即R和S的所有元組合并,刪去重復(fù)元組,組成一個新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:

R∪S={t|t∈R∨t∈S}對于關(guān)系數(shù)據(jù)庫,記錄的插入和添加可通過并運(yùn)算實(shí)現(xiàn)。ABCa1B1c1a1B1c2a2B2c1a2B3c2R∪SABCa1b1c1a1b1c2a2b2c1R(a)ABCa1b1c1a2b2c1a2b3c2S(b)Select*fromRUnionSelect*fromS注意,不是unionall傳統(tǒng)的集合運(yùn)算2.差(Difference)關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成,即R中刪去與S中相同的元組,組成一個新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:

R-S={t|t∈R∧┐t∈S}通過差運(yùn)算,可實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫記錄的刪除。ABCa1b1c1a1b1c2a2b2c1R(a)ABCa1b1c1a2b2c1a2b3c2S(b)ABCa1b1c2

R-S(1)select*fromRexceptselect*fromS(2)select*fromRwherenotexists(select*fromSwhereR.A=S.AandR.B=S.BandR.C=S.C)傳統(tǒng)的集合運(yùn)算3.交(Intersection)關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成,即R與S中相同的元組,組成一個新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:

R∩S={t|t∈R∧t∈S}如果兩個關(guān)系沒有相同的元組,那么它們的交為空。兩個關(guān)系的并和差運(yùn)算為基本運(yùn)算(即不能用其他運(yùn)算表達(dá)的運(yùn)算),而交運(yùn)算為非基本運(yùn)算,交運(yùn)算可以用差運(yùn)算來表示:

R∩S=R-(R-S)ABCa1b1c1a1b1c2a2b2c1R(a)ABCa1b1c1a2b2c1a2b3c2S(b)

R∩S

ABCa1B1c1a2B2c1(1)select*fromRintersectselect*fromS(2)SelectR.*fromR,Swhere R.A=S.AandR.B=S.BandR.C=S.C傳統(tǒng)的集合運(yùn)算4.廣義笛卡爾積(ExtendedCartesianProduct)兩個分別為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個元組,記作

R×S={tr⌒ts|tr∈R,∧ts∈S}關(guān)系的廣義笛卡爾積可用于兩關(guān)系的連接操作R.AR.BR.CS.AS.BS.Ca1b1c1a1b1c1a1b1c1a2b2c1a1b1c1a2b3c2a1b1c2a1b1c1a1b1c2a2b2c1a1b1c2a2b3c2a2b2c1a1b1c1a2b2c1a2b2c1a2b2c1a2b3c2R×SSelect*fromR,S專門的關(guān)系運(yùn)算由于傳統(tǒng)的集合運(yùn)算,只是從行的角度進(jìn)行,而要靈活地實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫多樣的查詢操作,必須引入專門的關(guān)系運(yùn)算。學(xué)生-課程數(shù)據(jù)庫:

學(xué)生關(guān)系Student、課程關(guān)系Course和選修關(guān)系SC專門的關(guān)系運(yùn)算設(shè)關(guān)系模式為R(A1,A2,……An),它的一個關(guān)系為R,t∈R表示t是R的一個元組,t[Ai]則表示元組t中相應(yīng)于屬性Ai的一個分量。若A={Ai1,Ai2,……,Aik},其中Ai1,Ai2,……,Aik是A1,A2,……,An中的一部分,則A稱為屬性列或域列,?則表示{A1,A2,……,An}中去掉{Ai1,Ai2,……,Aik}后剩余的屬性組。t[A]={t[Ai1],t[Ai2],……,t[Aik]}表示元組t在屬性列A上諸分量的集合。專門的關(guān)系運(yùn)算1.選?。⊿election)選取運(yùn)算是單目運(yùn)算,是根據(jù)一定的條件在給定的關(guān)系R中選取若干個元組,組成一個新關(guān)系,記作:σF(R)={t|t∈R∧F(t)為真}其中,σ為選取運(yùn)算符,F(xiàn)為選取的條件,它由運(yùn)算對象(屬性名、常數(shù)、簡單函數(shù))、算術(shù)比較運(yùn)算符(>,≥,<,≤,=,≠)和邏輯運(yùn)算符(∨∧┐)連接起來的邏輯表達(dá)式,結(jié)果為邏輯值“真”或“假”。選取運(yùn)算是從行的角度進(jìn)行的運(yùn)算。相應(yīng)的SQL?Select*fromstudentwheresdept=‘IS’select*fromstudentwheresage<20相應(yīng)的SQL?2.投影(Projection)投影運(yùn)算也是單目運(yùn)算,關(guān)系R上的投影是從R中選擇出若干屬性列,組成新的關(guān)系,即對關(guān)系在垂直方向進(jìn)行的運(yùn)算,從左到右按照指定的若干屬性及順序取出相應(yīng)列,刪去重復(fù)元組。記作:ΠA(R)={t[A]|t∈R}其中A為R中的屬性列,Π為投影運(yùn)算符。從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算但投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(避免重復(fù)行)[例3]查詢學(xué)生的姓名和所在系即求Student關(guān)系上學(xué)生姓名和所在系兩個屬性上的投影Selectsname,sdeptfromstudent[例4]查詢學(xué)生關(guān)系Student中都有哪些系

SelectsdeptfromstudentSelectdistinctsdeptfromstudentSelectsnofromscwherecno=‘2’思考:查詢性別為男或者年齡小于20的女生的學(xué)生姓名和系專門的關(guān)系運(yùn)算R為n目關(guān)系,S為m目關(guān)系,tr∈R,ts∈S,trts稱為元組的連接(concatenation),它是一個n+m列的元組,前n個分量為R的一個n元組,后m個分量為S中的一個m元組。3.連接(Join)1)連接也稱為θ連接2)連接運(yùn)算的含義從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組

RS={|tr

R∧ts

S∧tr[A]θts[B]}A和B:分別為R和S上度數(shù)相等且可比的屬性組θ:比較運(yùn)算符

連接運(yùn)算從R和S的廣義笛卡爾積R×S中選?。≧關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組

兩類常用連接運(yùn)算等值連接(equijoin)什么是等值連接θ為“=”的連接運(yùn)算稱為等值連接等值連接的含義從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:RS={|tr

R∧ts

S∧tr[A]=ts[B]}

自然連接(Naturaljoin)自然連接是一種特殊的等值連接兩個關(guān)系中進(jìn)行比較的分量必須是相同的屬性組在結(jié)果中把重復(fù)的屬性列去掉自然連接的含義R和S具有相同的屬性組BRS={|tr

R∧ts

S∧tr[A]=ts[B]}

一般的連接操作是從行的角度進(jìn)行運(yùn)算。自然連接還需要取消重復(fù)列,所以是同時從行和列的角度進(jìn)行運(yùn)算。Select*fromR,SwhereC<E它返回兩個表中的所有列,但只返回連接列中C列值小于E列值的行Select*fromR,SwhereR.B=S.B它返回兩個表中的所有列,但只返回連接列中具有相等值的行SelectA,R.B,C,EfromR,SwhereR.B=S.B它返回兩個表中的不重復(fù)列,并且只返回連接列中具有相等值的行等值連接與自然連接的區(qū)別1.

等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關(guān)系只有在同名屬性才能進(jìn)行自然連接。2.等值連接不將重復(fù)屬性去掉,而自然連接去掉重復(fù)屬性,也可以說,自然連接是去掉重復(fù)列的等值連接。思考查詢學(xué)習(xí)了課程號為“c01”的學(xué)生姓名Selectsnamefromsc,course,studentWo=oandsc.sno=student.snoandsc.cpno=‘5’專門的關(guān)系運(yùn)算給定一個關(guān)系R(X,Z),X和Z為屬性組,定義當(dāng)t[X]=x時,x在R中的象集(imageset),為Zx={t[Z]|t∈R,t[X]=x},它表示R中的屬性組X上值為x的諸元組在Z上分量的集合。

x1在R中的象集

Zx1

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

Zx2

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

Zx3={Z1,Z3}4.除法(Division)給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組(也可以沒有Z)。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)算得到一個新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合,記作:R÷S={tr[X]|tr∈R∧Πy(S)Yx}其中,Yx為x在R中的象集,x=tr[X]。一般解決“至少包括A,B,C等”的問題首先確定X,Y,Z,其中Y是公共部分除法對應(yīng)SQL(自學(xué))selectR.AfromRwhereR.Anotin(selectT2.Afrom(select*from(selectAfromR)asT1,S)asT2wherenotexists(select*fromRwhereR.A=T2.AandR.B=T2.BandR.C=T2.C))除法運(yùn)算為非基本運(yùn)算,假設(shè)S中沒有Z部分(有Z則Πx(R)×S-R不成立,需要修改),則除法可以表示為:

R÷S=Πx(R)-Πx(Πx(R)×S-R)請模仿前面的除法sql實(shí)現(xiàn)此功能的SQL請模仿前面的除法sql實(shí)現(xiàn)此功能的SQL關(guān)系代數(shù)表達(dá)式的優(yōu)化策略關(guān)系代數(shù)表達(dá)式的優(yōu)化是查詢優(yōu)化的基本課題。不同的關(guān)系代數(shù)表達(dá)式運(yùn)算涉及不同的操作步驟,因而具有不同的操作效率等價變換規(guī)則研究關(guān)系代數(shù)表達(dá)式的優(yōu)化最好從研究關(guān)系表達(dá)式的等價變換規(guī)則開始。兩個關(guān)系表達(dá)式El和E2是等價的,可記為E1≡E2。l)連接、笛卡爾積交換律 設(shè)E1和E2是關(guān)系代數(shù)表達(dá)式,F(xiàn)是連接運(yùn)算的條件,則有:

E1×E2≡E2×E1

E1E2≡E2E1

E1E2≡E2El

F

F2)連接、笛卡爾積的結(jié)合律 設(shè)E1,E2,E3是關(guān)系代數(shù)表達(dá)式,F(xiàn)l和F2是連接運(yùn)算的條件,則有:

(E1×E2)×E3≡El×(E2×E3)

(E1E2)E3≡E1(E2E3)

(E1E2)E3≡E1(E2E3)

F1

F2

F1

F23)投影的串接定律 ∏A1,A2,...,An(∏B1,B2,...,Bm(E))≡∏A1,A2,...,An(E)

這里,E是關(guān)系代數(shù)表達(dá)式,Ai(i=1,2,...,n),Bj(j=l,2,...,m)是屬性名且{A1,A2,...,An}構(gòu)成{Bl,B2,...,Bm}的子集。

4)選擇的串接定律

σF1(σF2(E))≡σF1∧F2(E)

這里,,F(xiàn)l,F(xiàn)2是選擇條件。選擇的串接律E是關(guān)系代數(shù)表達(dá)式說明選擇條件可以合并。這樣一次就可檢查全部條件。

5)選擇與投影的交換律

σF(∏A1,A2,...,An(E))≡∏A1,A2,...,An(σF(E))

這里,選擇條件F只涉及屬性A1,...,An。若F中有不屬于Al,...,An的屬性B1,…,Bm則有更一般的規(guī)則:

∏A1,A2,...,An(σF(E))≡∏A1,A2,...,An(σF(∏A1,A2,...,An,B1,B2,...,Bm(E))6)選擇與笛卡爾積的交換律如果F中涉及的屬性都是El中的屬性,則

σF(El×E2)≡σF(El)×E2

如果F=F1∧F2,并且F1只涉及E1中的屬性,F(xiàn)2只涉及E2中的屬性,則由上面的等價變換規(guī)則1,4,6可推出:

σF(E1×E2)≡σF1(El)×σF2(E2)若F1只涉及E1中的屬性,F(xiàn)2涉及E1和E2兩者的屬性,則仍有

σF(El×E2)≡σF2(σF1(E1)×E2)

它使部分選擇在笛卡爾積前先做。7)選擇與并的交換 設(shè)E=E1∪E2,E1、E2有相同的屬性名,則

σF(E1∪E2)≡σF(E1)∪σF(E2)8)選擇與差運(yùn)算的交換 若E1與E2有相同的屬性名,則

σF(E1-E2)≡σF(E1)-σF(E2)9)投影與笛卡爾積的交換 設(shè)E1和E2是兩個關(guān)系表達(dá)式,A1,...,An是E1的屬性,B1,...,Bm是E2的屬性,則

∏A1,A2,...,An,B1,B2,...,Bm(E1×E2)≡∏A1,A2,...,An(E1)×∏B1,B2,...,Bm(E2)10)投影與并的交換 設(shè)E1和E2有相同的屬性名,則

∏A1,A2,...,An(E1∪E2)≡∏A1,A2,...,An(E1)∪∏A1,A2,...,An(E2)

查詢優(yōu)化的一般準(zhǔn)則l.選擇運(yùn)算應(yīng)盡可能先做。在優(yōu)化策略中這是最重要、最基本的一條。2.把投影運(yùn)算和選擇運(yùn)算同時進(jìn)行。3.找出公共子表達(dá)式。4.在執(zhí)行連接前對關(guān)系適當(dāng)?shù)仡A(yù)處理。建立索引或?qū)﹃P(guān)系排序5.把某些選擇同在它前面要執(zhí)行

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論