版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數(shù)據庫原理與設計蘇州大學計算機科學與技術學院
關系數(shù)據庫簡介關系數(shù)據庫簡介提出關系模型的是美國IBM公司的E.F.Codd1970年提出關系數(shù)據模型E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》,1970之后,提出了關系代數(shù)和關系演算的概念1972年提出了關系的第一、第二、第三范式1974年提出了關系的BC范式關系數(shù)據庫簡介關系數(shù)據庫是采用關系模型作為數(shù)據組織方式的數(shù)據庫。目前廣泛使用的數(shù)據庫軟件基本上都是基于關系模型的關系數(shù)據庫管理系統(tǒng),例如SQLServer2000/2005、Oracle、Sybase、Informix、DB2等,都是典型的關系數(shù)據庫管理系統(tǒng)。第三章關系數(shù)據庫3.1關系模型的基本概念3.2關系代數(shù)3.3規(guī)范化3.4關系數(shù)據庫系統(tǒng)的查詢優(yōu)化3.5常用關系數(shù)據庫管理系統(tǒng)介紹3.6小結3.1關系模型的基本概念關系模型就是用二維表格結構來表示實體及實體之間聯(lián)系的模型關系模型是各個關系的框架的集合,即關系模型是一些表格的格式,其中包括關系名、屬性名、關鍵字等。TNO教師號TN姓名SEX性別AGE年齡PROF職稱SAL工資COMM崗位津貼DEPT系別CNO課程號CN課程名CT課時
TNO教師號CNO課程號教師關系T課程關系C授課關系SC3.1關系模型的基本概念由上例可以看出,在一個關系中可以存放兩類信息:一類是描述實體本身的信息一類是描述實體(關系)之間的聯(lián)系的信息3.1關系模型的基本概念關系模型的組成關系數(shù)據結構關系操作集合關系完整性約束在關系模型中,數(shù)據是以二維表的形式存在的,這個二維表就叫做關系2.關系理論是以集合代數(shù)理論為基礎的,因此,我們可以用集合代數(shù)給出二維表的“關系”定義3.1關系模型的基本概念關系模型的組成關系數(shù)據結構關系操作集合關系完整性約束關系代數(shù)用代數(shù)的方法表示關系模型
2.關系演算用邏輯方法表示關系模型3.1關系模型的基本概念關系模型的組成關系數(shù)據結構關系操作集合關系完整性約束實體完整性
2.參照完整性
3.用戶定義的完整性3.1關系模型的基本概念為了從集合論的角度給出關系的定義,我們先引入域和笛卡爾積的概念§3.1.1關系的數(shù)學定義【定義1】域(Domain)是一組具有相同數(shù)據類型的值的集合整數(shù),實數(shù),指定長度的字符串集合域中所包含的值的個數(shù)稱為域的基數(shù)(用m表示)。關系中用域表示屬性的取值范圍。例如:D1={李力,王平,劉偉} m1=3 D2={男,女} m2=2 D3={47,28,30} m3=3 其中,D1,D2,D3為域名,分別表示教師關系中姓名、性別、年齡的集合。域名無排列次序,如D2={男,女}={女,男}§3.1.1關系的數(shù)學定義【定義2】笛卡爾積設D1,D2,…,Dn為任意域,定義D1,D2,…,Dn的笛卡爾積(CartesianProduct)為:所有域的所有取值的一個組合不能重復由定義可以看出,笛卡爾積也是一個集合§3.1.1關系的數(shù)學定義其中:1.元素中的每一個di叫做一個分量(Component),來自相應的域(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關系的數(shù)學定義例子:設D1為專業(yè)域,D2為學生域,且D1={計算機應用,信息管理},D2={張三,李四,王五},則D1×D2={(計算機應用,張三),(計算機應用,李四),(計算機應用,王五),(信息管理,張三),(信息管理,李四),(信息管理,王五)}§3.1.1關系的數(shù)學定義元組(Tuple)不能重復(計算機應用,王五),(信息管理,王五)分量(Component)計算機應用,王五都是分量笛卡爾積的基數(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關系的數(shù)學定義笛卡爾積的表示方法笛卡爾積可表示為一個二維表表中的每行對應一個元組,表中的每列對應一個域D1,D2的笛卡兒積specialitypostgraduate計算機應用張三計算機應用李四計算機應用王五信息管理張三信息管理李四信息管理王五§3.1.1關系的數(shù)學定義【定義3】關系D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的關系,表示為R(D1,D2,…,Dn)R:關系名n:關系的目或度(Degree)當n=1時,稱為單元關系。當n=2時,稱為二元關系?!攏=n時,稱為n元關系。D1×D2笛卡爾積的子集學生關系specialitypostgraduate計算機應用張三計算機應用王五信息管理李四§3.1.1關系的數(shù)學定義關系的元組關系中的每個元素是關系中的元組,通常用t表示。比如,學生關系中(計算機應用,張三)就是一個元組關系中元組個數(shù)是關系的基數(shù)比如,學生關系的基數(shù)是3關系的表示與笛卡爾積類似,同樣可以把關系看成一個二維表。其中,(1)表的框架由域Di(i=1,2,……n)構成;(2)表的任意一行對應一個元組;(3)表的每一列來自同一域;(4)域可以相同,為了加以區(qū)別,每列起一個名字,稱為屬性,n目關系有n個屬性,屬性的名字唯一,屬性的取值范圍Di(i=1,2,…,n)稱為值域(5)具有相同關系框架的關系成為同類關系關系的含義數(shù)學上關系是笛卡爾積的任意子集,但在實際應用中關系是笛卡爾積中所取的有意義的子集。例如在前面例子的笛卡爾集中選取一個子集構成如下關系,顯然不符合實際情況D1,D2的笛卡兒積的子集specialitypostgraduate計算機應用張三信息管理張三關系的性質盡管關系與二維表格、傳統(tǒng)的數(shù)據文件是非常類似的,但它們之間又有重要的區(qū)別。
嚴格地說,關系是種規(guī)范化了的二維表中行的集合,關系具有如下特性:1.關系中不允許出現(xiàn)相同的元組。因為數(shù)學上集合中沒有相同的元素,而關系是元組的集合,所以作為集合元素的元組應該是唯一的。2.關系中元組的順序(即行序)是無關緊要的,在一個關系中可以任意交換兩行的次序。因為集合中的元素是無序的,所以作為集合元素的元組也是無序的。根據關系的這個性質,可以改變元組的順序使其具有某種排序,然后按照順序查詢數(shù)據,可以提高查詢速度。3.關系中屬性的順序是無關緊要的,即列的順序可以任意交換。交換時,應連同屬性名一起交換,否則將得到不同的關系。關系的性質4.同一屬性名下的各個屬性值必須來自同一個域,是同一類型的數(shù)據。5.關系中各個屬性必須有不同的名字,不同的屬性可來自同一個域,即它們的分量可以取自同一個域。6.關系中每一分量必須是不可分的數(shù)據項,或者說所有屬性值都是原子的,即是一個確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”。滿足此條件的關系稱為規(guī)范化關系,否則稱為非規(guī)范化關系。姓名籍貫
姓名省市/縣省市/縣
張強吉林長春
張強吉林長春王麗山西大同
王麗山西大同關系模式和關系數(shù)據庫模式
關系模式是對關系的描述,可以用一個五元組表示:
R(U,D,dom,F(xiàn))R關系名U
組成該關系的屬性名集合
D
屬性組U中屬性所來自的域 DOM屬性向域的映象集合
F
屬性間的數(shù)據依賴關系集合有時可以簡化成R(U),比如:學生(學號,姓名,性別,年齡,系別)一組關系模式的集合叫做關系數(shù)據庫模式。關系模式和關系關系模式對關系的描述靜態(tài)的、穩(wěn)定的關系關系模式在某一時刻的狀態(tài)或內容動態(tài)的、隨時間不斷變化的關系模式和關系往往統(tǒng)稱為關系通過上下文加以區(qū)別關系數(shù)據庫關系數(shù)據庫是“一組隨時間變化,具有各種度的規(guī)范化關系的集合”。由此可見,關系數(shù)據庫也有型和值的概念,其型就是關系數(shù)據庫模式,相對固定;其值就是關系數(shù)據庫內容,代表現(xiàn)實世界中的實體,而實體是隨著時間不斷變化的,所以其值在不同的時刻會有所變化。關系的鍵(碼)候選碼(Candidatekey)若關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼簡單的情況:候選碼只包含一個屬性“學生關系”中的學號能唯一標識每一個學生,則屬性學號是學生關系的候選鍵。在“選課關系”中,只有屬性的組合“學號+課程號”才能唯一地區(qū)分每一條選課記錄,則屬性集“學號+課程號”是選課關系的候選鍵。關系的鍵(碼)全碼(All-key)
最極端的情況:關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼(All-key)假設有教師授課關系TCS,分別有三個屬性教師(T)、課程(C)和學生(S)。一個教師可以講授多門課程,一門課程可以為多個教師講授,同樣一個學生可以選聽多門課程,一門課程可以為多個學生選聽。在這種情況下,T,C,S三者之間是多對多關系,(T,C,S)三個屬性的組合是關系TCS的候選碼,稱為全碼,T,C,S都是主屬性。tidcidsnot1c1s1t1c1s2t1c2s1t2c1s1t2c2s2t2c3s2關系的鍵(碼)下面給出候選鍵的形式化定義:設關系R有屬性A1,A2,……An,其屬性集K=(Ai,Aj,……Ak),當且僅當滿足下列條件時,K被稱為候選鍵:
1.唯一性(Uniqueness):關系R的任意兩個不同元組,其屬性集K的值是不同的。
2.最小性(Minimally):組成關系鍵的屬性集(Ai,Aj,……Ak)中,任一屬性都不能從屬性集K中刪掉,否則將破壞唯一性的性質候選碼識別舉例TSCT1S1C4T2S2C3T3S1C1T4S3C22個候選碼T或者C候選碼識別舉例TSCT1S2C1T1S1C3T2S1C2T2S3C1(T,S)(S,C)(T,C)3個候選碼候選碼識別舉例TSCT1S1C1T1S1C3T2S1C1T2S3C11個候選碼(T,S,C)a1a2a3a4b1b2b3b4a1a2a3a4b1b2b3b4a1a2a3a4b1b2b3b4主鍵如果一個關系中有多個候選鍵,可以從中選擇一個作為查詢、插入或刪除元組的操作變量,被選用的候選鍵稱為主關系鍵(PrimaryKey),或簡稱為主鍵、主碼、關系鍵、關鍵字。例如,假設在學生關系中沒有重名的學生,則“學號”和“姓名”都可作為學生關系的候選鍵。如果選定“學號”作為數(shù)據操作的依據,則“學號”為主關系鍵。在關系模式中表示主鍵學生(學號,姓名,性別,年齡,系別)主屬性與非碼屬性主屬性(PrimeAttribute):包含在候選碼中的的各屬性稱為主屬性。非碼屬性(Non-PrimeAttribute):不包含在任何候選碼中的屬性稱為非碼屬性。在最簡單的情況下,一個候選碼只包含一個屬性,如學生關系中的“學號”,教師關系中的“教師號”。最極端情況,全碼關系中所有屬性都是主屬性外部關系鍵如果關系R2的一個或一組屬性X不是R2的主碼,而是另一關系R1的主碼,則該屬性或屬性組X稱為關系R2的外部關系鍵或外碼(Foreignkey)。并稱關系R2為參照關系(referencingrelation),關系R1為被參照關系(referencedrelation)。R1depiddepname1計算機2外語系3電子系R2idnamedepid2001張三12002李四12003王五22004錢六3注意子表的外鍵和主表的主鍵名字可以不同,但類型必須相同§3.1.2關系模型的完整性為了維護數(shù)據庫中數(shù)據與現(xiàn)實世界的一致性,對關系數(shù)據庫的插入、刪除和修改操作必須有一定的約束條件,這就是關系模型的三類完整性:實體完整性參照完整性用戶定義的完整性§3.1.2關系模型的完整性1.實體完整性(EntityIntegrity)實體完整性是指關系的主鍵(碼)值不能為空或部分為空。現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。與此相對應,關系模型中以主鍵(碼)來唯一標識元組。例如,學生關系中的屬性“學號”可以唯一標識一個元組,也可以唯一標識學生實體。如果主鍵(碼)中的值為空或部分為空,即主屬性為空,則不符合鍵(碼)的定義條件,不能唯一標識元組及與其相對應的實體。因此主鍵(碼)的值不能為空或部分為空
選課表(學號,課程號,成績),主鍵為(學號,課程號)正確:(s01,c01,80);(s01,c01,null);錯誤:(s02,null,80);(null,c03,80);(null,null,80);(null,null,80);§3.1.2關系模型的完整性§3.1.2關系模型的完整性2.
參照完整性(Referentialintegrity)參照完整性規(guī)則的形式定義如下:如果屬性集K是關系模式R1的主鍵,K也是關系模式R2的外鍵,那么在R2的關系中,K的取值只允許兩種可能,或者為空值,或者等于R1關系中某個主鍵值。這條規(guī)則的實質是“不允許引用不存在的實體”。在上述形式定義中,關系模式R1的關系稱為“參照關系”,關系模式R2的關系稱為“依賴關系”?!爸鞅怼焙汀案北怼?,“父表”和“子表”?!?.1.2關系模型的完整性例下面各種情況說明了參照完整性規(guī)則在關系中如何實現(xiàn)的。①在關系數(shù)據庫中有下列兩個關系模式:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)這里帶下劃線者為主鍵。據規(guī)則要求關系SC中的S#值應該在關系S中出現(xiàn)。如果關系SC中有一個元組(S7,C4,80),而學號S7卻在關系S中找不到,那么我們就認為在關系SC中引用了一個不存在的學生實體,這就違反了參照完整性規(guī)則?!?.1.2關系模型的完整性實體完整性和參照完整性是關系模型必須滿足的完整性約束條件,被稱作關系的兩個不變性。任何關系數(shù)據庫系統(tǒng)都應該支持這兩類完整性。除此之外,不同的關系數(shù)據庫系統(tǒng)由于應用環(huán)境的不同,往往還需要一些特殊的約束條件,這就是用戶定義完整性?!?.1.2關系模型的完整性3.用戶定義完整性(User-definedIntegrity)用戶定義完整性是針對某一具體關系數(shù)據庫的約束條件。它反映某一具體應用所涉及的數(shù)據必須滿足的語義要求。例如,屬性值根據實際需要,要具備一些約束條件,如選課關系中成績不能為負數(shù);某些數(shù)據的輸入格式要有一些限制,學號格式(S0127001),S開頭,2位院系,2位專業(yè),3位編號等;關系模型應該提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的、系統(tǒng)的方法處理它們,而不要由應用程序承擔這一功能。§3.1.2關系模型的完整性
例如學生的年齡定義為兩位整數(shù),范圍還太大,我們可以寫如下規(guī)則把年齡限制在15~30歲之間:
CHECK(AGEBETWEEN15AND30)
§3.1.3關系操作關系操作采用集合操作方式,即操作的對象和結構都是集合。關系模型常用的關系操作包括:選擇,投影,連接,除,并,交,差等查詢操作和增加,刪除,修改操作。查詢是最主要的部分。所以說,關系數(shù)據庫的核心部分是查詢,故又稱為查詢語言,而查詢的條件要使用關系運算表達式來表示按表達查詢的方法不同,關系運算可分為關系代數(shù)和關系演算兩大類?!?.2關系代數(shù)關系代數(shù)是對關系進行集合代數(shù)運算,是基于關系代數(shù)的操作語言,稱為關系代數(shù)語言,簡稱關系代數(shù)。它是由IBM在一個實驗性的系統(tǒng)上實現(xiàn)的,稱為ISBL(InformationSystemBaseLanguage)語言。ISBL的每個語句都類似于一個關系代數(shù)表達式。關系代數(shù)的運算對象是關系,運算結果也是關系§3.2關系代數(shù)關系代數(shù)的運算按運算符的不同主要分為兩類:傳統(tǒng)的集合運算:把關系看成元組的集合,以元組作為集合中元素來進行運算,其運算是從關系的“水平”方向即行的角度進行的。包括并、差、交和笛卡爾積等運算。專門的關系運算:不僅涉及行運算,也涉及列運算,這種運算是為數(shù)據庫的應用而引進的特殊運算。包括選取、投影、連接和除法等運算。傳統(tǒng)的集合運算
對兩個關系的集合運算傳統(tǒng)的集合運算是二目運算,是在兩個關系中進行的。但是并不是任意的兩個關系都能進行這種集合運算,而是要在兩個滿足一定條件的關系中進行運算。相容性定義:設給定兩個關系R、S,若滿足:(1)
具有相同的度n;(2)
R中第i個屬性和S中第i個屬性必須來自同一個域。則說關系R、S是相容的。除笛卡爾積外,要求參加運算的關系必須滿足上述的相容性定義?!纠咳鐖D(a)、(b)所示的兩個關系R與S為相容關系ABCa1b1c1a1b1c2a2b2c1R(a)ABCa1b1c1a2b2c1a2b3c2S(b)傳統(tǒng)的集合運算1.并(Union)關系R和關系S的并由屬于R或屬于S的元組組成,即R和S的所有元組合并,刪去重復元組,組成一個新關系,其結果仍為n目關系。記作:
R∪S={t|t∈R∨t∈S}對于關系數(shù)據庫,記錄的插入和添加可通過并運算實現(xiàn)。ABCa1B1c1a1B1c2a2B2c1a2B3c2R∪SABCa1b1c1a1b1c2a2b2c1R(a)ABCa1b1c1a2b2c1a2b3c2S(b)Select*fromRUnionSelect*fromS注意,不是unionall傳統(tǒng)的集合運算2.差(Difference)關系R與關系S的差由屬于R而不屬于S的所有元組組成,即R中刪去與S中相同的元組,組成一個新關系,其結果仍為n目關系。記作:
R-S={t|t∈R∧┐t∈S}通過差運算,可實現(xiàn)關系數(shù)據庫記錄的刪除。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)的集合運算3.交(Intersection)關系R與關系S的交由既屬于R又屬于S的元組組成,即R與S中相同的元組,組成一個新關系,其結果仍為n目關系。記作:
R∩S={t|t∈R∧t∈S}如果兩個關系沒有相同的元組,那么它們的交為空。兩個關系的并和差運算為基本運算(即不能用其他運算表達的運算),而交運算為非基本運算,交運算可以用差運算來表示:
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)的集合運算4.廣義笛卡爾積(ExtendedCartesianProduct)兩個分別為n目和m目關系R和S的廣義笛卡爾積是一個(n+m)列的元組的集合,元組的前n列是關系R的一個元組,后m列是關系S的一個元組。若R有k1個元組,S有k2個元組,則關系R和關系S的廣義笛卡爾積有k1*k2個元組,記作
R×S={tr⌒ts|tr∈R,∧ts∈S}關系的廣義笛卡爾積可用于兩關系的連接操作R.AR.BR.CS.AS.BS.Ca1b1c1a1b1c1a1b1c1a2b2c1a1b1c1a2b3c2a1b1c2a1b1c1a1b1c2a2b2c1a1b1c2a2b3c2a2b2c1a1b1c1a2b2c1a2b2c1a2b2c1a2b3c2R×SSelect*fromR,S專門的關系運算由于傳統(tǒng)的集合運算,只是從行的角度進行,而要靈活地實現(xiàn)關系數(shù)據庫多樣的查詢操作,必須引入專門的關系運算。學生-課程數(shù)據庫:
學生關系Student、課程關系Course和選修關系SC專門的關系運算設關系模式為R(A1,A2,……An),它的一個關系為R,t∈R表示t是R的一個元組,t[Ai]則表示元組t中相應于屬性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上諸分量的集合。專門的關系運算1.選?。⊿election)選取運算是單目運算,是根據一定的條件在給定的關系R中選取若干個元組,組成一個新關系,記作:σF(R)={t|t∈R∧F(t)為真}其中,σ為選取運算符,F(xiàn)為選取的條件,它由運算對象(屬性名、常數(shù)、簡單函數(shù))、算術比較運算符(>,≥,<,≤,=,≠)和邏輯運算符(∨∧┐)連接起來的邏輯表達式,結果為邏輯值“真”或“假”。選取運算是從行的角度進行的運算。相應的SQL?Select*fromstudentwheresdept=‘IS’select*fromstudentwheresage<20相應的SQL?2.投影(Projection)投影運算也是單目運算,關系R上的投影是從R中選擇出若干屬性列,組成新的關系,即對關系在垂直方向進行的運算,從左到右按照指定的若干屬性及順序取出相應列,刪去重復元組。記作:ΠA(R)={t[A]|t∈R}其中A為R中的屬性列,Π為投影運算符。從其定義可看出,投影運算是從列的角度進行的運算但投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行)[例3]查詢學生的姓名和所在系即求Student關系上學生姓名和所在系兩個屬性上的投影Selectsname,sdeptfromstudent[例4]查詢學生關系Student中都有哪些系
SelectsdeptfromstudentSelectdistinctsdeptfromstudentSelectsnofromscwherecno=‘2’思考:查詢性別為男或者年齡小于20的女生的學生姓名和系專門的關系運算R為n目關系,S為m目關系,tr∈R,ts∈S,trts稱為元組的連接(concatenation),它是一個n+m列的元組,前n個分量為R的一個n元組,后m個分量為S中的一個m元組。3.連接(Join)1)連接也稱為θ連接2)連接運算的含義從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組
RS={|tr
R∧ts
S∧tr[A]θts[B]}A和B:分別為R和S上度數(shù)相等且可比的屬性組θ:比較運算符
連接運算從R和S的廣義笛卡爾積R×S中選?。≧關系)在A屬性組上的值與(S關系)在B屬性組上值滿足比較關系θ的元組
兩類常用連接運算等值連接(equijoin)什么是等值連接θ為“=”的連接運算稱為等值連接等值連接的含義從關系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:RS={|tr
R∧ts
S∧tr[A]=ts[B]}
自然連接(Naturaljoin)自然連接是一種特殊的等值連接兩個關系中進行比較的分量必須是相同的屬性組在結果中把重復的屬性列去掉自然連接的含義R和S具有相同的屬性組BRS={|tr
R∧ts
S∧tr[A]=ts[B]}
一般的連接操作是從行的角度進行運算。自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。Select*fromR,SwhereC<E它返回兩個表中的所有列,但只返回連接列中C列值小于E列值的行Select*fromR,SwhereR.B=S.B它返回兩個表中的所有列,但只返回連接列中具有相等值的行SelectA,R.B,C,EfromR,SwhereR.B=S.B它返回兩個表中的不重復列,并且只返回連接列中具有相等值的行等值連接與自然連接的區(qū)別1.
等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關系只有在同名屬性才能進行自然連接。2.等值連接不將重復屬性去掉,而自然連接去掉重復屬性,也可以說,自然連接是去掉重復列的等值連接。思考查詢學習了課程號為“c01”的學生姓名Selectsnamefromsc,course,studentWo=oandsc.sno=student.snoandsc.cpno=‘5’專門的關系運算給定一個關系R(X,Z),X和Z為屬性組,定義當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)給定關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組(也可以沒有Z)。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系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是公共部分除法對應SQL(自學)selectR.AfromRwhereR.Anotin(selectT2.Afrom(select*from(selectAfromR)asT1,S)asT2wherenotexists(select*fromRwhereR.A=T2.AandR.B=T2.BandR.C=T2.C))除法運算為非基本運算,假設S中沒有Z部分(有Z則Πx(R)×S-R不成立,需要修改),則除法可以表示為:
R÷S=Πx(R)-Πx(Πx(R)×S-R)請模仿前面的除法sql實現(xiàn)此功能的SQL請模仿前面的除法sql實現(xiàn)此功能的SQL關系代數(shù)表達式的優(yōu)化策略關系代數(shù)表達式的優(yōu)化是查詢優(yōu)化的基本課題。不同的關系代數(shù)表達式運算涉及不同的操作步驟,因而具有不同的操作效率等價變換規(guī)則研究關系代數(shù)表達式的優(yōu)化最好從研究關系表達式的等價變換規(guī)則開始。兩個關系表達式El和E2是等價的,可記為E1≡E2。l)連接、笛卡爾積交換律 設E1和E2是關系代數(shù)表達式,F(xiàn)是連接運算的條件,則有:
E1×E2≡E2×E1
E1E2≡E2E1
E1E2≡E2El
F
F2)連接、笛卡爾積的結合律 設E1,E2,E3是關系代數(shù)表達式,F(xiàn)l和F2是連接運算的條件,則有:
(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是關系代數(shù)表達式,Ai(i=1,2,...,n),Bj(j=l,2,...,m)是屬性名且{A1,A2,...,An}構成{Bl,B2,...,Bm}的子集。
4)選擇的串接定律
σF1(σF2(E))≡σF1∧F2(E)
這里,,F(xiàn)l,F(xiàn)2是選擇條件。選擇的串接律E是關系代數(shù)表達式說明選擇條件可以合并。這樣一次就可檢查全部條件。
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)選擇與并的交換 設E=E1∪E2,E1、E2有相同的屬性名,則
σF(E1∪E2)≡σF(E1)∪σF(E2)8)選擇與差運算的交換 若E1與E2有相同的屬性名,則
σF(E1-E2)≡σF(E1)-σF(E2)9)投影與笛卡爾積的交換 設E1和E2是兩個關系表達式,A1,...,An是E1的屬性,B1,...,Bm是E2的屬性,則
∏A1,A2,...,An,B1,B2,...,Bm(E1×E2)≡∏A1,A2,...,An(E1)×∏B1,B2,...,Bm(E2)10)投影與并的交換 設E1和E2有相同的屬性名,則
∏A1,A2,...,An(E1∪E2)≡∏A1,A2,...,An(E1)∪∏A1,A2,...,An(E2)
查詢優(yōu)化的一般準則l.選擇運算應盡可能先做。在優(yōu)化策略中這是最重要、最基本的一條。2.把投影運算和選擇運算同時進行。3.找出公共子表達式。4.在執(zhí)行連接前對關系適當?shù)仡A處理。建立索引或對關系排序5.把某些選擇同在它前面要執(zhí)行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年西安西北有色物化探總隊有限公司招聘備考題庫含答案詳解
- 養(yǎng)老院環(huán)境衛(wèi)生與消毒制度
- 2026年攀枝花市西區(qū)財政局關于面向社會公開招聘人員的備考題庫帶答案詳解
- 2026年石晶光電招聘23人備考題庫附答案詳解
- 2026年航天時代低空科技有限公司招聘行政人員勞務派遣崗位備考題庫及一套完整答案詳解
- 2026年雅安市人民醫(yī)院四川大學華西醫(yī)院雅安醫(yī)院 小兒外科、健康管理中心醫(yī)師招聘備考題庫及一套參考答案詳解
- 天津中醫(yī)藥大學第二附屬醫(yī)院2026年第一批公開招聘備考題庫(博士及高級職稱醫(yī)療人員)帶答案詳解
- 2026年蘇州交投鑫能交通科技有限公司公開招聘備考題庫及答案詳解1套
- 2026年橫琴粵澳深度合作區(qū)首都師范大學子期實驗小學招聘備考題庫參考答案詳解
- 2026年部分大??蓤蟛幌迣I(yè)武漢大學人民醫(yī)院招聘7人備考題庫含答案詳解
- (2025年)四川省自貢市紀委監(jiān)委公開遴選公務員筆試試題及答案解析
- 2025年度骨科護理部年終工作總結及工作計劃
- 2026安徽省農村信用社聯(lián)合社面向社會招聘農商銀行高級管理人員參考考試試題及答案解析
- 巖板采購合同范本
- popchrio歐可芮小紅書營銷方案
- (零模)2026屆廣州市高三年級調研測試英語試卷(含答案解析)
- 透析病人遠期并發(fā)癥及管理
- 2025陜西西安財金投資管理限公司招聘27人易考易錯模擬試題(共500題)試卷后附參考答案
- 放射科X線胸片診斷技術要點
- 配網工程安全管理培訓課件
- 2025年江西電力職業(yè)技術學院單招考試文化素質物理通關題庫附答案詳解【綜合題】
評論
0/150
提交評論