數(shù)據(jù)庫(kù)系統(tǒng)原理及應(yīng)用教程2_第1頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理及應(yīng)用教程2_第2頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理及應(yīng)用教程2_第3頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理及應(yīng)用教程2_第4頁(yè)
數(shù)據(jù)庫(kù)系統(tǒng)原理及應(yīng)用教程2_第5頁(yè)
已閱讀5頁(yè),還剩110頁(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)介

1、1關(guān)系模型關(guān)系模型2 上一章介紹了主要的數(shù)據(jù)模型: 層次模型 網(wǎng)狀模型 關(guān)系模型 其中簡(jiǎn)單靈活,并有著堅(jiān)實(shí)的理論基礎(chǔ),已成為當(dāng)前的數(shù)據(jù)模型。 本章主要講述本章主要講述: 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu) 關(guān)系的定義和性質(zhì) 關(guān)系數(shù)據(jù)庫(kù)的基本概念 關(guān)系運(yùn)算32.1 關(guān)系模型關(guān)系模型 關(guān)系模型就是用關(guān)系模型就是用二維表格二維表格結(jié)構(gòu)來(lái)表示實(shí)體及實(shí)體之間結(jié)構(gòu)來(lái)表示實(shí)體及實(shí)體之間聯(lián)系的模型。聯(lián)系的模型。 關(guān)系模型是各個(gè)關(guān)系的框架的集合,即關(guān)系模型是一關(guān)系模型是各個(gè)關(guān)系的框架的集合,即關(guān)系模型是一些些表格的格式表格的格式,其中包括關(guān)系名、屬性名、關(guān)鍵字等。,其中包括關(guān)系名、屬性名、關(guān)鍵字等。 教師關(guān)系 課程關(guān)系C 授課

2、關(guān)系SC教師課程數(shù)據(jù)庫(kù)的關(guān)系模型TNO教師號(hào)TN姓名SEX性別AGE年齡PROF職稱SAL工資COMM崗位津貼DEPT系別CNO課程號(hào)CN課程名CT課時(shí)TNO教師號(hào)CNO課程號(hào)4 從各個(gè)關(guān)系的框架中,我們可以很容易看出哪兩個(gè)關(guān)從各個(gè)關(guān)系的框架中,我們可以很容易看出哪兩個(gè)關(guān)系之間有系之間有聯(lián)系聯(lián)系。例如:。例如: 教師關(guān)系和授課關(guān)系有公共的屬性“教師號(hào)”,則表明這兩個(gè)關(guān)系有聯(lián)系。 而課程關(guān)系和授課關(guān)系有公共的屬性“課程號(hào)”,則表明這兩個(gè)關(guān)系也有聯(lián)系。 至于元組之間的聯(lián)系,則與具體的數(shù)據(jù)有關(guān)。只有在公共屬性上具有相同屬性值的元組之間才有聯(lián)系。 5 由上例可以看出,在一個(gè)關(guān)系中可以存放兩類信息:由上

3、例可以看出,在一個(gè)關(guān)系中可以存放兩類信息: 一類是描述實(shí)體本身的信息 一類是描述實(shí)體(關(guān)系)之間的聯(lián)系的信息 在層次模型和網(wǎng)狀模型中,把有聯(lián)系的實(shí)體(元組)用在層次模型和網(wǎng)狀模型中,把有聯(lián)系的實(shí)體(元組)用指針鏈接起來(lái),實(shí)體之間的聯(lián)系是通過(guò)指針鏈接起來(lái),實(shí)體之間的聯(lián)系是通過(guò)指針指針來(lái)實(shí)現(xiàn)的。來(lái)實(shí)現(xiàn)的。 而關(guān)系模型則采用不同的思想,即用而關(guān)系模型則采用不同的思想,即用二維表二維表來(lái)表示實(shí)體來(lái)表示實(shí)體與實(shí)體之間的聯(lián)系,這就是關(guān)系模型的本質(zhì)所在。與實(shí)體之間的聯(lián)系,這就是關(guān)系模型的本質(zhì)所在。 所以,在建立所以,在建立關(guān)系模型關(guān)系模型時(shí),只要把的所有的實(shí)體及其屬時(shí),只要把的所有的實(shí)體及其屬性用關(guān)系框架來(lái)

4、表示,同時(shí)把實(shí)體之間的關(guān)系也用關(guān)系性用關(guān)系框架來(lái)表示,同時(shí)把實(shí)體之間的關(guān)系也用關(guān)系框架來(lái)表示,就可以得到一個(gè)關(guān)系模型??蚣軄?lái)表示,就可以得到一個(gè)關(guān)系模型。 如上例中的教師課程數(shù)據(jù)庫(kù)的關(guān)系模型就是這樣建立的。62.2 關(guān)系的定義關(guān)系的定義 在關(guān)系模型中,數(shù)據(jù)是以二維表的形式存在的,這個(gè)在關(guān)系模型中,數(shù)據(jù)是以二維表的形式存在的,這個(gè)二維表二維表就叫做就叫做關(guān)系關(guān)系。 關(guān)系理論關(guān)系理論是以是以集合代數(shù)集合代數(shù)理論為基礎(chǔ)的,因此,我們可理論為基礎(chǔ)的,因此,我們可以用集合代數(shù)給出二維表的以用集合代數(shù)給出二維表的“關(guān)系關(guān)系”定義。定義。 為了從集合論的角度給出關(guān)系的定義,我們先引入為了從集合論的角度給出關(guān)

5、系的定義,我們先引入域域和和笛卡爾積笛卡爾積的概念。的概念。72.2.1 域(域(Domain) 域是一組具有相同數(shù)據(jù)類型的值的集合,又稱為域是一組具有相同數(shù)據(jù)類型的值的集合,又稱為值域值域。(用(用D表示)表示) 例如整數(shù)、實(shí)數(shù)、字符串的集合。 域中所包含的值的個(gè)數(shù)稱為域的域中所包含的值的個(gè)數(shù)稱為域的基數(shù)基數(shù)(用(用m表示)。表示)。 關(guān)系中用域表示屬性的取值范圍。例如:關(guān)系中用域表示屬性的取值范圍。例如:D1=李力,王平,劉偉 m1=3D2=男,女 m2=2D3=47,28,30 m3=3 其中,D1,D2,D3為域名,分別表示教師關(guān)系中姓名、性別、年齡的集合。 域名無(wú)排列次序,如域名無(wú)排

6、列次序,如D2=男,女男,女=女,男女,男8笛卡爾積笛卡爾積(Cartesian Product ) 給定一組域給定一組域D1,D2,Dn(它們可以包含相同的(它們可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。元素,即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡爾積為的笛卡爾積為D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。由定義可以看出,笛卡爾積也是一個(gè)由定義可以看出,笛卡爾積也是一個(gè)集合集合。例如:上述表示教師關(guān)系中姓名、性別兩個(gè)域的笛卡爾積為:D1=李力,王平,劉偉D2=男,女D1D2=(李力,男),(李力,女),(王平,男), (王平,女)

7、,(劉偉,男),(劉偉,女)9笛卡爾積笛卡爾積(Cartesian Product ) 給定一組域給定一組域D1,D2,Dn(它們可以包含相同的元素,(它們可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。即可以完全不同,也可以部分或全部相同)。D1,D2,Dn的笛卡爾積為的笛卡爾積為D1D2Dn=(d1,d2,dn)|diDi,i=1,2,n。 其中:其中:1. 元素中的每一個(gè)di叫做一個(gè)分量(Component),來(lái)自相應(yīng)的域(diDi)2. 每一個(gè)元素(d1,d2,d3,dn)叫做一個(gè)n元組(n-tuple),簡(jiǎn)稱元組(Tuple)。但元組不是di的集合,元組的每個(gè)分量(di)

8、是按序排列的。如:(1,2,3)(2,3,1)(1,3,2)而集合中的元素是沒(méi)有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。其中:李力、王平、劉偉、男、女都是分量 (李力,男),(李力,女)等是元組103. 若Di(i=1,2,n)為有限集,Di中的集合元素個(gè)數(shù)稱為Di的 基 數(shù) , 用 m i ( i = 1 , 2 , n ) 表 示 , 則 笛 卡 爾 積D1D2Dn的基數(shù)M(即元素(d1,d2,dn)的個(gè)數(shù))為所有域的基數(shù)的累積,即 M= 例如:上述表示教師關(guān)系中姓名、性別兩個(gè)域的笛卡爾積為:D1D2=(李力,男),(李力,女),(王平,男),(王平,女),(劉偉,男

9、),(劉偉,女)其中:其基數(shù)M=m1m2=3*2=6元組的個(gè)數(shù)為6niim1114. 笛卡爾積可用二維表的形式表示。例如,上述的6個(gè)元組可表示成表2.1。D1和和D2的笛卡爾積的笛卡爾積 由上例可以看出,笛卡爾積實(shí)際是一個(gè)二維表,表的框架由域構(gòu)成,表的任意一行就是一個(gè)元組,表中的每一列來(lái)自同一域,如第一個(gè)分量來(lái)自D1,第二個(gè)分量來(lái)自D2。姓名性別李力男李力女王平男王平女劉偉男劉偉女122.2.3 關(guān)系(關(guān)系(Relation) 笛卡爾積笛卡爾積D1D2Dn的任一子集稱為定義在域的任一子集稱為定義在域D1,D2,Dn上的上的n元關(guān)系(元關(guān)系(Relation),可用),可用R(D1,D2Dn)表

10、示)表示如上例D1D2笛卡爾積的子集可以構(gòu)成教師關(guān)系T1,姓名性別李力男王平女劉偉男幾點(diǎn)說(shuō)明:幾點(diǎn)說(shuō)明:1. R為關(guān)系名,為關(guān)系名,n稱為關(guān)系的目或稱為關(guān)系的目或度(度(Degree)。)。當(dāng)n=1時(shí),稱為單元關(guān)系。當(dāng)n=2時(shí),稱為二元關(guān)系。當(dāng)n=n時(shí),稱為n元關(guān)系。如上例為二元關(guān)系,關(guān)系名為如上例為二元關(guān)系,關(guān)系名為T。132. 關(guān)系中元組個(gè)數(shù)是關(guān)系的基數(shù)。如(李力,男),(王平,女),關(guān)系中元組個(gè)數(shù)是關(guān)系的基數(shù)。如(李力,男),(王平,女),(劉偉,男)為三個(gè)元組,關(guān)系的基數(shù)為(劉偉,男)為三個(gè)元組,關(guān)系的基數(shù)為3。 如果一個(gè)關(guān)系的元組個(gè)數(shù)是無(wú)限的,則稱為無(wú)限關(guān)系; 如果一個(gè)關(guān)系的元組個(gè)數(shù)

11、是有限的,則稱為有限關(guān)系。 由于計(jì)算機(jī)存儲(chǔ)系統(tǒng)的限制,我們一般不去處理無(wú)限關(guān)系,而只考慮有限關(guān)系。3. 同樣可以把關(guān)系看成一個(gè)二維表。其中,同樣可以把關(guān)系看成一個(gè)二維表。其中,(1)表的框架由域Di(i=1,2,n)構(gòu)成;(2)表的任意一行對(duì)應(yīng)一個(gè)元組;(3)表的每一列來(lái)自同一域;(4)域可以相同,為了加以區(qū)別,每列起一個(gè)名字,稱為屬性,n目關(guān)系有n個(gè)屬性,屬性的名字唯一,屬性的取值范圍Di(i=1,2,n)稱為值域(5)具有相同關(guān)系框架的關(guān)系成為同類關(guān)系,例如,有另一個(gè)關(guān)系T2,如表2.3所示:T1和T2是同類關(guān)系。姓名性別張雪女張?zhí)m女14 4. 數(shù)學(xué)上關(guān)系是笛卡爾積的任意子集,但在實(shí)際應(yīng)用

12、中數(shù)學(xué)上關(guān)系是笛卡爾積的任意子集,但在實(shí)際應(yīng)用中關(guān)系是笛卡爾積中所取的有意義的子集。例如在表關(guān)系是笛卡爾積中所取的有意義的子集。例如在表2.1中中選取一個(gè)子集構(gòu)成如下關(guān)系,顯然不符合實(shí)際情況選取一個(gè)子集構(gòu)成如下關(guān)系,顯然不符合實(shí)際情況姓名性別李力男李力女152.3 關(guān)系的性質(zhì)關(guān)系的性質(zhì) 盡管關(guān)系與二維表格、傳統(tǒng)的數(shù)據(jù)文件是非常類似的,盡管關(guān)系與二維表格、傳統(tǒng)的數(shù)據(jù)文件是非常類似的,但它們之間又有重要的區(qū)別。但它們之間又有重要的區(qū)別。 嚴(yán)格地說(shuō),關(guān)系是種規(guī)范化了的二維表中行的集合,嚴(yán)格地說(shuō),關(guān)系是種規(guī)范化了的二維表中行的集合,為了使相應(yīng)的數(shù)據(jù)操作簡(jiǎn)化,在關(guān)系模型中,對(duì)關(guān)系為了使相應(yīng)的數(shù)據(jù)操作簡(jiǎn)化

13、,在關(guān)系模型中,對(duì)關(guān)系作了種種限制,關(guān)系具有如下特性:作了種種限制,關(guān)系具有如下特性:1. 關(guān)系中不允許出現(xiàn)相同的元組關(guān)系中不允許出現(xiàn)相同的元組。2. 關(guān)系中元組的順序(即行序)是無(wú)關(guān)緊要的關(guān)系中元組的順序(即行序)是無(wú)關(guān)緊要的,在一個(gè)關(guān)系中可以任意交換兩行的次序。根據(jù)關(guān)系的這個(gè)性質(zhì),可以改變?cè)M的順序使其具有某種排序,然后按照順序查詢數(shù)據(jù),可以提高查詢速度。163. 關(guān)系中屬性的順序是無(wú)關(guān)緊要的關(guān)系中屬性的順序是無(wú)關(guān)緊要的:即列的順序可以任意交換。交換時(shí),應(yīng)連同屬性名一起交換,否則將得到不同的關(guān)系。例如:關(guān)系例如:關(guān)系T1作如下交換時(shí),無(wú)任何影響作如下交換時(shí),無(wú)任何影響性別姓名男李力女王平男

14、劉偉17 而作如下交換時(shí),不交換屬性名,只交換屬性列中的而作如下交換時(shí),不交換屬性名,只交換屬性列中的值,則得到不同的關(guān)系,如下表值,則得到不同的關(guān)系,如下表: 姓名性別男李力女王平男劉偉184. 同一屬性名下的各個(gè)屬性值必須來(lái)自同一個(gè)域同一屬性名下的各個(gè)屬性值必須來(lái)自同一個(gè)域:是同一類型的數(shù)據(jù)。5. 關(guān)系中各個(gè)屬性必須有不同的名字:關(guān)系中各個(gè)屬性必須有不同的名字:不同的屬性可來(lái)自同一個(gè)域,即它們的分量可以取自同一個(gè)域。例如,有如下表中關(guān)系,職業(yè)與兼職是兩個(gè)不同的屬性,但它們例如,有如下表中關(guān)系,職業(yè)與兼職是兩個(gè)不同的屬性,但它們?nèi)∽酝粋€(gè)域職業(yè)教師,工人,輔導(dǎo)員。取自同一個(gè)域職業(yè)教師,工人,

15、輔導(dǎo)員。 姓名職業(yè)兼職張強(qiáng)教師輔導(dǎo)員王麗工人教師劉寧教師輔導(dǎo)員196. 關(guān)系中每一分量必須是不可分的數(shù)據(jù)項(xiàng)關(guān)系中每一分量必須是不可分的數(shù)據(jù)項(xiàng),或者說(shuō)所有屬性值都是原子的,即是一個(gè)確定的值,而不是值的集合。屬性值可以為空值,表示“未知”或“不可使用”,即不可“表中有表”。滿足此條件的關(guān)系稱為規(guī)范化關(guān)系,否則稱為非規(guī)范化關(guān)系。例如,在表例如,在表1中,籍貫含有省、市縣兩項(xiàng),出現(xiàn)了中,籍貫含有省、市縣兩項(xiàng),出現(xiàn)了“表中有表表中有表”的現(xiàn)象,則為非規(guī)范化關(guān)系,而把籍貫分成省、市縣兩列,將其的現(xiàn)象,則為非規(guī)范化關(guān)系,而把籍貫分成省、市縣兩列,將其規(guī)范化,如表規(guī)范化,如表2所示。所示。 表表1 表表2姓名

16、籍貫姓名省市縣省市縣張強(qiáng)吉林長(zhǎng)春張強(qiáng)吉林長(zhǎng)春王麗山西大同王麗山西大同202.4 關(guān)系的碼關(guān)系的碼 2.4.1 候選碼與主碼候選碼與主碼 能唯一標(biāo)識(shí)關(guān)系中元組的屬性或?qū)傩约瑒t稱該屬性能唯一標(biāo)識(shí)關(guān)系中元組的屬性或?qū)傩约?,則稱該屬性或?qū)傩约癁榛驅(qū)傩约癁楹蜻x碼候選碼(Candidate Key),也稱候選鍵。如,也稱候選鍵。如 “學(xué)生關(guān)系”中的學(xué)號(hào)能唯一標(biāo)識(shí)每一個(gè)學(xué)生,則屬性學(xué)號(hào)是學(xué)生關(guān)系的候選碼。 在“選課關(guān)系”中,只有屬性的組合“學(xué)號(hào)+課程號(hào)”才能唯一地區(qū)分每一條選課記錄,則屬性集“學(xué)號(hào)+課程號(hào)”是選課關(guān)系的候選鍵。21下面給出候選碼的形式化定義:下面給出候選碼的形式化定義: 設(shè)關(guān)系設(shè)關(guān)系R有屬

17、性有屬性A1,A2,An,其屬性集,其屬性集K=(Ai,Aj,Ak),當(dāng)且僅當(dāng)滿足下列條件時(shí),),當(dāng)且僅當(dāng)滿足下列條件時(shí),K被稱為被稱為候選碼:候選碼:1. 唯一性(唯一性(Uniqueness):):關(guān)系R的任意兩個(gè)不同元組,其屬性集K的值是不同的。2.最小性(最小性(Minimally):組成關(guān)系鍵的屬性集(Ai,Aj,Ak)中,任一屬性都不能從屬性集K中刪掉,否則將破壞唯一性的性質(zhì) 例如:“學(xué)生關(guān)系”中的每個(gè)學(xué)生的學(xué)號(hào)是唯一的,“選課關(guān)系”中“學(xué)號(hào)+課程號(hào)” 的組合也是唯一的。對(duì)于屬性集“學(xué)號(hào)+課程號(hào)” 去掉任一屬性,都無(wú)法唯一標(biāo)識(shí)選課記錄。 22 如果一個(gè)關(guān)系中有多個(gè)候選碼,可以從中選

18、擇一個(gè)作為如果一個(gè)關(guān)系中有多個(gè)候選碼,可以從中選擇一個(gè)作為查詢、插入或刪除元組的操作變量,被選用的候選鍵稱查詢、插入或刪除元組的操作變量,被選用的候選鍵稱為為主碼主碼(Primary Key),或稱為,或稱為主鍵主鍵、關(guān)鍵字關(guān)鍵字。 例如,假設(shè)在學(xué)生關(guān)系中沒(méi)有重名的學(xué)生,則“學(xué)號(hào)”和“姓名”都可作為學(xué)生關(guān)系的候選鍵。如果選定“學(xué)號(hào)”作為數(shù)據(jù)操作的依據(jù),則“學(xué)號(hào)”為主關(guān)系鍵。 主碼是關(guān)系模型中的一個(gè)重要概念。每個(gè)關(guān)系必需選擇主碼是關(guān)系模型中的一個(gè)重要概念。每個(gè)關(guān)系必需選擇一個(gè)主碼,選定以后,不能隨意改變。每個(gè)關(guān)系必定有一個(gè)主碼,選定以后,不能隨意改變。每個(gè)關(guān)系必定有且僅有一個(gè)主碼,因?yàn)殛P(guān)系的元組

19、無(wú)重復(fù),至少關(guān)系的且僅有一個(gè)主碼,因?yàn)殛P(guān)系的元組無(wú)重復(fù),至少關(guān)系的所有屬性的組合可作為主碼。所有屬性的組合可作為主碼。232.4.2 主屬性與非主屬性主屬性與非主屬性 主屬性主屬性(Prime Attribute):包含在主碼中的的各屬):包含在主碼中的的各屬性稱為主屬性。性稱為主屬性。 非主屬性非主屬性(Non-Prime Attribute):不包含在任何候):不包含在任何候選碼中的屬性稱為非碼屬性。選碼中的屬性稱為非碼屬性。 在最簡(jiǎn)單的情況下,一個(gè)候選碼只包含一個(gè)屬性,如在最簡(jiǎn)單的情況下,一個(gè)候選碼只包含一個(gè)屬性,如學(xué)生關(guān)系中的學(xué)生關(guān)系中的“學(xué)號(hào)學(xué)號(hào)”,教師關(guān)系中的,教師關(guān)系中的“教師號(hào)

20、教師號(hào)”。 在最極終端的情況下,所有屬性的組合是關(guān)系的候選在最極終端的情況下,所有屬性的組合是關(guān)系的候選碼,這時(shí)稱為碼,這時(shí)稱為全碼全碼(all-key)。)。24 下面是一個(gè)全碼的例子:下面是一個(gè)全碼的例子: 假設(shè)圖書館有借書關(guān)系TCS,分別有三個(gè)屬性讀者編號(hào)(T)、圖書編號(hào)(C)和借閱時(shí)間(S)。 在這種情況下,T,C,S三者之間是多對(duì)多關(guān)系,(T,C,S)三個(gè)屬性的組合是關(guān)系TCS的候選碼,稱為全碼,T,C,S都是主屬性。TCST1C12005-4-1252.4.3 外碼外碼(Foreign key) 如果關(guān)系如果關(guān)系R2的一個(gè)或一組屬性的一個(gè)或一組屬性X不是不是R2的主碼,而是另一的主

21、碼,而是另一關(guān)系關(guān)系R1的主碼,則該屬性或?qū)傩越M的主碼,則該屬性或?qū)傩越MX稱為關(guān)系稱為關(guān)系R2的的外碼外碼或或外部關(guān)系鍵外部關(guān)系鍵。并稱關(guān)系。并稱關(guān)系R2為為參照關(guān)系參照關(guān)系(referencing relation),關(guān)系,關(guān)系R1為為被參照關(guān)系被參照關(guān)系(referenced relation)。因此,因此,“學(xué)號(hào)學(xué)號(hào)” 屬性是選課關(guān)系的屬性是選課關(guān)系的外碼外碼。學(xué)生關(guān)系為。學(xué)生關(guān)系為被被參照關(guān)系參照關(guān)系,選課關(guān)系為,選課關(guān)系為參照關(guān)系參照關(guān)系。26 由外部關(guān)系鍵的定義可知,被參照關(guān)系的主碼和參照由外部關(guān)系鍵的定義可知,被參照關(guān)系的主碼和參照關(guān)系的外碼必須定義在同一個(gè)域上。關(guān)系的外碼必須定

22、義在同一個(gè)域上。 如選課關(guān)系中的“學(xué)號(hào)”與學(xué)生關(guān)系的主碼“學(xué)號(hào)”定義在同一個(gè)域上。27關(guān)系模型及其定義關(guān)系模型及其定義 5)關(guān)系模式(關(guān)系模式(Relation Schema):關(guān)系的描述稱作關(guān)):關(guān)系的描述稱作關(guān)系模式,包括關(guān)系名、關(guān)系中的屬性名、屬性向域的系模式,包括關(guān)系名、關(guān)系中的屬性名、屬性向域的映象、屬性間的數(shù)據(jù)依賴關(guān)系等映象、屬性間的數(shù)據(jù)依賴關(guān)系等,其形式化描述為其形式化描述為R(U,D,dom,F),簡(jiǎn)記作簡(jiǎn)記作R(U)或或R(A1 , A2 , An ) 。R(U, D, DOM, F)關(guān)系名關(guān)系名屬性名集合屬性名集合域的集合域的集合屬性向域?qū)傩韵蛴虻挠诚蟮挠诚髮傩蚤g數(shù)據(jù)屬性間

23、數(shù)據(jù)的依賴關(guān)系的依賴關(guān)系28 屬性向域的映象一般直接說(shuō)明為屬性的類型、長(zhǎng)度等。屬性向域的映象一般直接說(shuō)明為屬性的類型、長(zhǎng)度等。 某一時(shí)刻對(duì)應(yīng)某個(gè)關(guān)系模式的內(nèi)容(元組的集合)稱某一時(shí)刻對(duì)應(yīng)某個(gè)關(guān)系模式的內(nèi)容(元組的集合)稱作關(guān)系。作關(guān)系。 關(guān)系模式是型,是穩(wěn)定的,靜態(tài)的。關(guān)系是某一時(shí)刻關(guān)系模式是型,是穩(wěn)定的,靜態(tài)的。關(guān)系是某一時(shí)刻的值,是隨時(shí)間不斷變化的,是動(dòng)態(tài)的。的值,是隨時(shí)間不斷變化的,是動(dòng)態(tài)的。R(U, D, DOM, F)關(guān)系名關(guān)系名屬性名集合屬性名集合域的集合域的集合屬性向域?qū)傩韵蛴虻挠诚蟮挠诚髮傩蚤g數(shù)據(jù)屬性間數(shù)據(jù)的依賴關(guān)系的依賴關(guān)系29 關(guān)系數(shù)據(jù)庫(kù)(關(guān)系數(shù)據(jù)庫(kù)(Relation Da

24、tabase)其型是關(guān)系模式的集合,即數(shù)據(jù)庫(kù)描述其值是某一時(shí)刻關(guān)系的集合 例如教學(xué)數(shù)據(jù)庫(kù)中,共有五個(gè)關(guān)系,其關(guān)系模式分別例如教學(xué)數(shù)據(jù)庫(kù)中,共有五個(gè)關(guān)系,其關(guān)系模式分別學(xué)生(學(xué)號(hào),姓名,性別,年齡,系別)教師(教師號(hào),姓名,性別,年齡,系別)課程(課程號(hào),課程名,課時(shí))選課(學(xué)號(hào),課程號(hào),成績(jī))授課(教師號(hào),課程號(hào))30 在每個(gè)關(guān)系中,又有其相應(yīng)的數(shù)據(jù)庫(kù)的實(shí)例在每個(gè)關(guān)系中,又有其相應(yīng)的數(shù)據(jù)庫(kù)的實(shí)例 例如:與學(xué)生關(guān)系模式對(duì)應(yīng)的數(shù)據(jù)庫(kù)中的實(shí)例有如下6個(gè)元組: S1趙亦女17計(jì)算機(jī)S2錢爾男18信息S3孫珊女20信息S4李思男21自動(dòng)化S5周武男19計(jì)算機(jī)S6吳麗女20自動(dòng)化312.4.4 關(guān)系模型的

25、完整性關(guān)系模型的完整性 為了維護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,對(duì)關(guān)系為了維護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)與現(xiàn)實(shí)世界的一致性,對(duì)關(guān)系數(shù)據(jù)庫(kù)的插入、刪除和修改操作必須有一定的約束條數(shù)據(jù)庫(kù)的插入、刪除和修改操作必須有一定的約束條件,這就是關(guān)系模型的三類完整性:件,這就是關(guān)系模型的三類完整性: 實(shí)體完整性 參照完整性 用戶定義的完整性1. 實(shí)體完整性實(shí)體完整性(Entity Integrity) 實(shí)體完整性實(shí)體完整性是指主碼的值不能為空或部分為空。是指主碼的值不能為空或部分為空。 關(guān)系模型中的一個(gè)元組對(duì)應(yīng)一個(gè)實(shí)體,一個(gè)關(guān)系則對(duì)關(guān)系模型中的一個(gè)元組對(duì)應(yīng)一個(gè)實(shí)體,一個(gè)關(guān)系則對(duì)應(yīng)一個(gè)實(shí)體集。應(yīng)一個(gè)實(shí)體集。 例如,一條學(xué)生

26、記錄對(duì)應(yīng)著一個(gè)學(xué)生,學(xué)生關(guān)系對(duì)應(yīng)著學(xué)生的集合。32 現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)。與此相對(duì)應(yīng),關(guān)系模型中以主碼來(lái)唯一標(biāo)識(shí)元組。標(biāo)識(shí)。與此相對(duì)應(yīng),關(guān)系模型中以主碼來(lái)唯一標(biāo)識(shí)元組。 例如,學(xué)生關(guān)系中的屬性“學(xué)號(hào)”可以唯一標(biāo)識(shí)一個(gè)元組,也可以唯一標(biāo)識(shí)學(xué)生實(shí)體。 如果主碼的值為空或部分為空,即主屬性為空,則不符如果主碼的值為空或部分為空,即主屬性為空,則不符合主碼的定義條件,不能唯一標(biāo)識(shí)元組及與其相對(duì)應(yīng)的合主碼的定義條件,不能唯一標(biāo)識(shí)元組及與其相對(duì)應(yīng)的實(shí)體。這就說(shuō)明存在不可區(qū)分的實(shí)體,從而與現(xiàn)實(shí)世界實(shí)體。這就說(shuō)明存在不可區(qū)分的實(shí)體

27、,從而與現(xiàn)實(shí)世界中的實(shí)體是可以區(qū)分的事實(shí)相矛盾。因此中的實(shí)體是可以區(qū)分的事實(shí)相矛盾。因此主關(guān)系鍵的值主關(guān)系鍵的值不能為空或部分為空不能為空或部分為空。 例如,學(xué)生關(guān)系中的主關(guān)系鍵“學(xué)號(hào)”不能為空;選課關(guān)系中的主關(guān)系鍵“學(xué)號(hào)+課程號(hào)”不能部分為空,即“學(xué)號(hào)”和“課程號(hào)”兩個(gè)屬性都不能為空。332. 參照完整性參照完整性(Referential integrity) 如果關(guān)系如果關(guān)系R2的外碼的外碼X與關(guān)系與關(guān)系R1的主碼相符的主碼相符,則則X的每個(gè)的每個(gè)值或者等于值或者等于R1中主碼的某一個(gè)值,或者取空值。中主碼的某一個(gè)值,或者取空值。SNO學(xué)號(hào)SN姓名SEX性別AGE年齡DEPT所在系S1趙亦

28、女17計(jì)算機(jī)S2錢爾男18信息 S11王威男19 DEPT所在系A(chǔ)DDR地址計(jì)算機(jī)1號(hào)樓信息1號(hào)樓自動(dòng)化2號(hào)樓 S(學(xué)生關(guān)系)(學(xué)生關(guān)系) D(系別關(guān)系)(系別關(guān)系)34 在例中,如果按照參照完整性規(guī)則,選課關(guān)系中的外在例中,如果按照參照完整性規(guī)則,選課關(guān)系中的外碼碼“學(xué)號(hào)學(xué)號(hào)” 可以取空值或者取被參照關(guān)系中已經(jīng)存在可以取空值或者取被參照關(guān)系中已經(jīng)存在的值。但由于的值。但由于“學(xué)號(hào)學(xué)號(hào)” 是選課關(guān)系中主屬性,根據(jù)實(shí)是選課關(guān)系中主屬性,根據(jù)實(shí)體完整性規(guī)則,兩個(gè)屬性都不能為空。體完整性規(guī)則,兩個(gè)屬性都不能為空。所以所以選課關(guān)系選課關(guān)系中的外碼中的外碼“學(xué)號(hào)學(xué)號(hào)” 中只能取被參照關(guān)系中已經(jīng)存在的中只

29、能取被參照關(guān)系中已經(jīng)存在的值。值。35 實(shí)體完整性實(shí)體完整性和和參照完整性參照完整性是關(guān)系模型必須滿足的完整是關(guān)系模型必須滿足的完整性約束條件,系統(tǒng)都應(yīng)該支持這兩類完整性。性約束條件,系統(tǒng)都應(yīng)該支持這兩類完整性。 除此之外,不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)由于應(yīng)用環(huán)境的不除此之外,不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)由于應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件,這就是同,往往還需要一些特殊的約束條件,這就是用戶定用戶定義完整性義完整性。363. 用戶定義完整性(用戶定義完整性(User-defined Integrity) 用戶定義完整性用戶定義完整性是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條是針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)的約束條件

30、。件。 它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。求。 例如,屬性值根據(jù)實(shí)際需要,要具備一些約束條件,例如,屬性值根據(jù)實(shí)際需要,要具備一些約束條件,如選課關(guān)系中成績(jī)不能為負(fù)數(shù);某些數(shù)據(jù)的輸入格式如選課關(guān)系中成績(jī)不能為負(fù)數(shù);某些數(shù)據(jù)的輸入格式要有一些限制等。關(guān)系模型應(yīng)該提供定義和檢驗(yàn)這類要有一些限制等。關(guān)系模型應(yīng)該提供定義和檢驗(yàn)這類完整性的機(jī)制,以便用統(tǒng)一的、系統(tǒng)的方法處理它們,完整性的機(jī)制,以便用統(tǒng)一的、系統(tǒng)的方法處理它們,而不要由應(yīng)用程序承擔(dān)這一功能。而不要由應(yīng)用程序承擔(dān)這一功能。37關(guān)系模型及其定義關(guān)系模型及其定義 關(guān)系操作關(guān)系操作 關(guān)

31、系操作是集合操作,操作的對(duì)象及結(jié)果都是集合,是一次一集合(Set-at-a-time)的方式。而非關(guān)系型的數(shù)據(jù)操作方式是一次一記錄(Record-at-a-time)。 關(guān)系操作語(yǔ)言的種類關(guān)系操作語(yǔ)言的種類關(guān)系數(shù)關(guān)系數(shù)據(jù)語(yǔ)言據(jù)語(yǔ)言關(guān)系代關(guān)系代數(shù)語(yǔ)言數(shù)語(yǔ)言關(guān)系演關(guān)系演算語(yǔ)言算語(yǔ)言具有關(guān)系代數(shù)和關(guān)系具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語(yǔ)言演算雙重特點(diǎn)的語(yǔ)言元組關(guān)系演算語(yǔ)言元組關(guān)系演算語(yǔ)言域關(guān)系演算語(yǔ)言域關(guān)系演算語(yǔ)言ISBL(Information System Base Language)APLHAQBESQL38 關(guān)系模型與其他模型相比,最有特色的是它的關(guān)系模型與其他模型相比,最有特色的是它的數(shù)據(jù)庫(kù)

32、數(shù)據(jù)庫(kù)語(yǔ)言語(yǔ)言。 這種語(yǔ)言靈活方便、表達(dá)能力和功能都很強(qiáng)。這種語(yǔ)言靈活方便、表達(dá)能力和功能都很強(qiáng)。 目前關(guān)系數(shù)據(jù)庫(kù)所使用的語(yǔ)言一般都具有目前關(guān)系數(shù)據(jù)庫(kù)所使用的語(yǔ)言一般都具有定義定義、查詢查詢、更新更新和和控制控制一體化的特點(diǎn),而一體化的特點(diǎn),而查詢查詢是最主要的部分。是最主要的部分。 所以說(shuō),關(guān)系數(shù)據(jù)庫(kù)的核心部分是所以說(shuō),關(guān)系數(shù)據(jù)庫(kù)的核心部分是查詢查詢,故又稱為,故又稱為查查詢語(yǔ)言詢語(yǔ)言,而查詢的條件要使用,而查詢的條件要使用關(guān)系運(yùn)算表達(dá)式關(guān)系運(yùn)算表達(dá)式來(lái)表示。來(lái)表示。 因此,關(guān)系運(yùn)算是設(shè)計(jì)關(guān)系數(shù)據(jù)語(yǔ)言的基礎(chǔ)。因此,關(guān)系運(yùn)算是設(shè)計(jì)關(guān)系數(shù)據(jù)語(yǔ)言的基礎(chǔ)。 按表達(dá)查詢的方法不同,關(guān)系運(yùn)算可分為按表達(dá)

33、查詢的方法不同,關(guān)系運(yùn)算可分為關(guān)系代數(shù)關(guān)系代數(shù)和和關(guān)系演算關(guān)系演算兩大類。兩大類。 2.6 關(guān)系代數(shù)關(guān)系代數(shù)392.6.1 關(guān)系代數(shù)的分類及其運(yùn)算符關(guān)系代數(shù)的分類及其運(yùn)算符 關(guān)系代數(shù)是對(duì)關(guān)系進(jìn)行集合代數(shù)運(yùn)算,是基于關(guān)系代關(guān)系代數(shù)是對(duì)關(guān)系進(jìn)行集合代數(shù)運(yùn)算,是基于關(guān)系代數(shù)的操作語(yǔ)言,稱為數(shù)的操作語(yǔ)言,稱為關(guān)系代數(shù)語(yǔ)言,簡(jiǎn)稱關(guān)系代數(shù)關(guān)系代數(shù)語(yǔ)言,簡(jiǎn)稱關(guān)系代數(shù)。 它 是 由 I B M 在 一 個(gè) 實(shí) 驗(yàn) 性 的 系 統(tǒng) 上 實(shí) 現(xiàn) 的 , 稱 為ISBL(Information System Base Language)語(yǔ)言。 ISBL的每個(gè)語(yǔ)句都類似于一個(gè)關(guān)系代數(shù)表達(dá)式。 關(guān)系代數(shù)的關(guān)系代數(shù)的運(yùn)算

34、對(duì)象運(yùn)算對(duì)象是是關(guān)系關(guān)系,運(yùn)算結(jié)果運(yùn)算結(jié)果也是也是關(guān)系關(guān)系,關(guān),關(guān)系代數(shù)用到的運(yùn)算符主要包括四類:系代數(shù)用到的運(yùn)算符主要包括四類: 集合運(yùn)算符:(并),-(差),(交),X(廣義笛卡爾積); 專門的關(guān)系運(yùn)算符:(選擇),(投影),(連接),*(自然連接),(除); 算術(shù)比較運(yùn)算符:(大于),(大于等于), ,=,)和邏輯運(yùn)算符()和邏輯運(yùn)算符( )連)連接起來(lái)的邏輯表達(dá)式,結(jié)果為邏輯值接起來(lái)的邏輯表達(dá)式,結(jié)果為邏輯值“真真”或或“假假”。 選取運(yùn)算實(shí)際上是從關(guān)系選取運(yùn)算實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式為真中選取使邏輯表達(dá)式為真的元組,是從行的角度進(jìn)行的運(yùn)算。的元組,是從行的角度進(jìn)行的運(yùn)算。5

35、2 設(shè)學(xué)生課程數(shù)據(jù)庫(kù),其關(guān)系模式為: 學(xué)生(學(xué)生,姓名,年齡,所在系); 課程(課程號(hào),課程名,學(xué)分); 選課(學(xué)號(hào),課程號(hào),成績(jī)).【例【例4-1】用關(guān)系代數(shù)表示在學(xué)生課程數(shù)據(jù)庫(kù)中查詢計(jì)算機(jī)】用關(guān)系代數(shù)表示在學(xué)生課程數(shù)據(jù)庫(kù)中查詢計(jì)算機(jī)系的全體學(xué)生的操作。系的全體學(xué)生的操作。 所在系所在系= 計(jì)算機(jī)系計(jì)算機(jī)系 (學(xué)生)(學(xué)生)【例【例4-2】用關(guān)系代數(shù)表示在學(xué)生課程數(shù)據(jù)庫(kù)中查詢年齡小】用關(guān)系代數(shù)表示在學(xué)生課程數(shù)據(jù)庫(kù)中查詢年齡小于于20歲的學(xué)生的操作。歲的學(xué)生的操作。 年齡年齡20(學(xué)生)(學(xué)生)53542. 投影(投影(Projection) 投影運(yùn)算也是單目運(yùn)算,關(guān)系投影運(yùn)算也是單目運(yùn)算,關(guān)

36、系R上的投影是從上的投影是從R中選擇出中選擇出若干屬性列,組成新的關(guān)系,即對(duì)關(guān)系在垂直方向進(jìn)行的若干屬性列,組成新的關(guān)系,即對(duì)關(guān)系在垂直方向進(jìn)行的運(yùn)算,從左到右按照指定的若干屬性及順序取出相應(yīng)列,運(yùn)算,從左到右按照指定的若干屬性及順序取出相應(yīng)列,刪去重復(fù)元組。記作:刪去重復(fù)元組。記作:A(R)=tA|tR 其中其中A為為R中的屬性列,中的屬性列,為投影運(yùn)算符。為投影運(yùn)算符。 從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算,這從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算,這正是選取運(yùn)算和投影運(yùn)算的區(qū)別所在。選取運(yùn)算是從關(guān)系正是選取運(yùn)算和投影運(yùn)算的區(qū)別所在。選取運(yùn)算是從關(guān)系的水平方向上進(jìn)行運(yùn)算的

37、,而投影運(yùn)算則是從關(guān)系的垂直的水平方向上進(jìn)行運(yùn)算的,而投影運(yùn)算則是從關(guān)系的垂直方向上進(jìn)行的。方向上進(jìn)行的。 55 投影運(yùn)算可以改變關(guān)系的屬性次序投影運(yùn)算可以改變關(guān)系的屬性次序 56例例4 查詢教師關(guān)系中有哪些系。查詢教師關(guān)系中有哪些系。SNO(SC) 結(jié)果如右圖所示結(jié)果如右圖所示 由例由例4可以看出,投影后取消了某些屬性列后,就可能可以看出,投影后取消了某些屬性列后,就可能出現(xiàn)重復(fù)行,應(yīng)該取消這些完全相同的行。所以投影出現(xiàn)重復(fù)行,應(yīng)該取消這些完全相同的行。所以投影之后,不但減少了屬性,元組也可能減少,新關(guān)系與之后,不但減少了屬性,元組也可能減少,新關(guān)系與原關(guān)系不相容。原關(guān)系不相容。 SNO95

38、001950019500157例例2.8 查詢選項(xiàng)了查詢選項(xiàng)了1課程的學(xué)生號(hào)。課程的學(xué)生號(hào)。SNO(CNO=1(SC) 結(jié)果如右圖所示。結(jié)果如右圖所示。 本例中選取運(yùn)算和投影運(yùn)算相結(jié)合,先在選課表中選本例中選取運(yùn)算和投影運(yùn)算相結(jié)合,先在選課表中選取滿足條件的元組,再于取滿足條件的元組,再于SNO屬性上進(jìn)行投影。屬性上進(jìn)行投影。 SNO95001583. 連接(連接(Join) 連接運(yùn)算是二目運(yùn)算,是從兩個(gè)關(guān)系的笛卡爾積中選連接運(yùn)算是二目運(yùn)算,是從兩個(gè)關(guān)系的笛卡爾積中選取滿足連接條件的元組,組成新的關(guān)系。取滿足連接條件的元組,組成新的關(guān)系。 設(shè)關(guān)系設(shè)關(guān)系R(A1,A2,An)及)及S(B1,B2

39、,Bm),連接連接屬性集屬性集X包含于包含于A1,A2,An,及及Y包含于包含于B1,B2,Bm,X與與Y中屬性列數(shù)目相等,且相對(duì)應(yīng)中屬性列數(shù)目相等,且相對(duì)應(yīng)屬性有共同的域。屬性有共同的域。若若Z=A1,A2An/X (/X:去掉去掉X之之外的屬性外的屬性) 及及W=B1,B2Bm/Y,則則 R及及S可表示為可表示為R(Z,X),S(W,Y) 關(guān)系關(guān)系R和和S在連接屬性在連接屬性X和和Y上的連接,就是以上的連接,就是以RS笛笛卡爾積中,選取卡爾積中,選取X屬性列上的分量與屬性列上的分量與Y屬性列上的分量屬性列上的分量滿足給定滿足給定比較條件的那些元組,也就是在比較條件的那些元組,也就是在RS上

40、選上選取在連接屬性取在連接屬性X,Y上滿足上滿足條件的子集,組成新的關(guān)系。條件的子集,組成新的關(guān)系。新關(guān)系的度為新關(guān)系的度為n+m。 59記作:記作: RS=t rts |trRtsStrXtsY為真為真 XY 其中,其中,是連接運(yùn)算符,是連接運(yùn)算符,為算術(shù)比較運(yùn)算符,也稱為算術(shù)比較運(yùn)算符,也稱連連接;接; XY為連接條件;為連接條件; 為“=”時(shí),稱為等值連接; 為“”時(shí),稱為大于連接。 連接運(yùn)算為非基本運(yùn)算,可以用選取運(yùn)算和廣義笛卡爾連接運(yùn)算為非基本運(yùn)算,可以用選取運(yùn)算和廣義笛卡爾積運(yùn)算來(lái)表示:積運(yùn)算來(lái)表示:RS=xy(RS)60 在連接運(yùn)算中,一種最常用的連接是自然連接。在連接運(yùn)算中,一

41、種最常用的連接是自然連接。 所謂自然連接就是在等值連接的情況下,當(dāng)連接屬性所謂自然連接就是在等值連接的情況下,當(dāng)連接屬性X與與Y具有相同屬性組時(shí),把在連接結(jié)果中重復(fù)的屬性具有相同屬性組時(shí),把在連接結(jié)果中重復(fù)的屬性列去掉。即如果列去掉。即如果R與與S具有相同的屬性組具有相同的屬性組Y,則自然連,則自然連接可記作:接可記作:R*S=t rts |trRtsStrY=tsY 自然連接是在廣義笛卡爾積自然連接是在廣義笛卡爾積RS中選出同名屬性上符中選出同名屬性上符合相等條件元組,再進(jìn)行投影,去掉重復(fù)的同名屬性,合相等條件元組,再進(jìn)行投影,去掉重復(fù)的同名屬性,組成新的關(guān)系。組成新的關(guān)系。 61例例2.9

42、 如圖如圖2.9(a)、(b)所示的兩個(gè)關(guān)系所示的兩個(gè)關(guān)系R與與S,(c)為為R和和S的的大于連接(大于連接(CD),),(d)為為R和和S的等值連接(的等值連接(C=D),),(e)為為R和和S的等值連接(的等值連接(R.B=S.B),),(f)為為R和和S的自然的自然連接。連接。 R S (a) (b) ABC BDa1b12 b15a1b24 b26a2b36 b37a2b48 b3862大于連接(大于連接(CD) 等值連接(等值連接(C=D) (c) (d) AR.BCS.BD AR.BCS.BDa2b36b15 a2b36b26a2b48b15 a2b48b38a2b48b26 a2

43、b48b37 63等值連接等值連接(R.B=S.B) 自然連接自然連接 (e) (f) 圖圖2.9 連接運(yùn)算舉例連接運(yùn)算舉例 AR.BCS.BD ABCDa1b12b15 a1b125a1b24b26 a1b246a2b36b37 a2b367a2b36b38 a2b36864【例【例4-4】設(shè)學(xué)生和選課關(guān)系中的數(shù)據(jù)如下,學(xué)生與選課之間的笛卡兒積、等值連】設(shè)學(xué)生和選課關(guān)系中的數(shù)據(jù)如下,學(xué)生與選課之間的笛卡兒積、等值連接和自然連接的結(jié)果如表所示。接和自然連接的結(jié)果如表所示。 學(xué)號(hào)學(xué)號(hào)姓名姓名年齡年齡所在系所在系 學(xué)號(hào)學(xué)號(hào)課程名課程名成績(jī)成績(jī)98001張三張三20計(jì)算機(jī)系計(jì)算機(jī)系98001數(shù)據(jù)庫(kù)數(shù)

44、據(jù)庫(kù)6298005李四李四21數(shù)學(xué)系數(shù)學(xué)系98001數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)73 98005微積分微積分80學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)姓名姓名年齡年齡所在系所在系選課選課.學(xué)號(hào)學(xué)號(hào)課名課名成績(jī)成績(jī)980019800198001980059800598005張三張三張三張三張三張三李四李四李四李四李四李四202020212121計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系數(shù)學(xué)系數(shù)學(xué)系數(shù)學(xué)系數(shù)學(xué)系數(shù)學(xué)系數(shù)學(xué)系980019800198005980019800198005數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)微積分微積分?jǐn)?shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)微積分微積分627380627380學(xué)生 選課 學(xué)生選課 65學(xué)生學(xué)生.學(xué)號(hào)

45、學(xué)號(hào)姓名姓名年齡年齡所在系所在系選課選課.學(xué)號(hào)學(xué)號(hào)課名課名成績(jī)成績(jī)980019800198005張三張三張三張三李四李四202021計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系數(shù)學(xué)系數(shù)學(xué)系980019800198005數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)微積分微積分627380學(xué)生學(xué)生.學(xué)號(hào)學(xué)號(hào)姓名姓名年齡年齡所在系所在系課名課名成績(jī)成績(jī)980019800198005張三張三張三張三李四李四202021計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系計(jì)算機(jī)系數(shù)學(xué)系數(shù)學(xué)系數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)微積分微積分627380學(xué)生 選課 學(xué)生.學(xué)號(hào)=選課.學(xué)號(hào) 學(xué)生 選課 66結(jié)合上例,我們可以看出結(jié)合上例,我們可以看出等值連接與自然連接的區(qū)

46、別等值連接與自然連接的區(qū)別: 1. 等值連接中不要求相等屬性值的屬性名相同,而自然等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關(guān)系只有連接要求相等屬性值的屬性名必須相同,即兩關(guān)系只有在同名屬性才能進(jìn)行自然連接。如上例在同名屬性才能進(jìn)行自然連接。如上例R中的中的C列和列和S中中的的D列可進(jìn)行等值連接,但因?yàn)閷傩悦煌?,不能進(jìn)行列可進(jìn)行等值連接,但因?yàn)閷傩悦煌?,不能進(jìn)行自然連接。自然連接。 2. 等值連接不將重復(fù)屬性去掉,而自然連接去掉重復(fù)屬等值連接不將重復(fù)屬性去掉,而自然連接去掉重復(fù)屬性,也可以說(shuō),自然連接是去掉重復(fù)列的等值連接。如性,也可以說(shuō),自然連

47、接是去掉重復(fù)列的等值連接。如上例上例R中的中的B列和列和S中的中的B列進(jìn)行等值連接時(shí),結(jié)果有兩列進(jìn)行等值連接時(shí),結(jié)果有兩個(gè)重復(fù)的屬性列個(gè)重復(fù)的屬性列B,而進(jìn)行自然連接時(shí),結(jié)果只有一個(gè)屬而進(jìn)行自然連接時(shí),結(jié)果只有一個(gè)屬性列性列B。 67例例2.10 查詢講授數(shù)據(jù)庫(kù)課程的教師姓名。查詢講授數(shù)據(jù)庫(kù)課程的教師姓名。TN(CN=數(shù)據(jù)庫(kù)(C)*TNO,CNO(TC)*TNO,TN(T)或TN(TNO(CN=數(shù)據(jù)庫(kù)(C)*TC)*TNO,TN(T) 結(jié)果如右圖所示。結(jié)果如右圖所示。 TN王平劉偉張?zhí)m684. 除法除法(Division) 除法運(yùn)算是二目運(yùn)算,設(shè)有關(guān)系除法運(yùn)算是二目運(yùn)算,設(shè)有關(guān)系R(X,Y)與

48、關(guān)系)與關(guān)系S(Y,Z),其中),其中X,Y,Z為屬性集合,為屬性集合,R中的中的Y與與S中中的的Y可以有不同的屬性名,但對(duì)應(yīng)屬性必須出自相同可以有不同的屬性名,但對(duì)應(yīng)屬性必須出自相同的域。關(guān)系的域。關(guān)系R除以關(guān)系除以關(guān)系S所得的商是一個(gè)新關(guān)系所得的商是一個(gè)新關(guān)系P(X),),P是是R中滿足下列條件的元組在中滿足下列條件的元組在X上的投影:元組在上的投影:元組在X上分量值上分量值x的象集的象集Yx包含包含S在在Y上投影的集合。記作:上投影的集合。記作:RS=trX|trRy(S)Yx 其中,其中,Yx為為x在在R中的象集,中的象集,x= trX。 除法運(yùn)算為非基本運(yùn)算,可以表示為:除法運(yùn)算為非

49、基本運(yùn)算,可以表示為:RS=x(R)x(x(R)SR) 69關(guān)系代數(shù)關(guān)系代數(shù) 除除(Division)象集:給定一個(gè)關(guān)系R(X, Y),X和Y為屬性組。當(dāng)tX=x時(shí),x在R中的象集為: Yx=tY| tR, tX=x除:給定關(guān)系R(X, Y)和S(Y,Z),其中X,Y,Z 為屬性組。R中的Y和S中的Y可以有不同的名字,但必須取自同一個(gè)域,R與S除得到一個(gè)新關(guān)系P(X), P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作: R S=trX| tr Ry(S) Yx70【例【例4-5】給出選課、選修課和必修課】給出選課、選修課和必修課3個(gè)關(guān)系,

50、它們的關(guān)系模式為:個(gè)關(guān)系,它們的關(guān)系模式為: 選課選課(學(xué)號(hào),學(xué)號(hào),課號(hào),成績(jī)課號(hào),成績(jī));選修課;選修課(課號(hào),課名課號(hào),課名);必修課;必修課(課號(hào),課名課號(hào),課名). 學(xué)號(hào)學(xué)號(hào)課號(hào)課號(hào)成績(jī)成績(jī) 課號(hào)課號(hào)課名課名S1C1AC2計(jì)算機(jī)圖計(jì)算機(jī)圖形學(xué)形學(xué)S1C2B必修課必修課S1C3BS2C1A課號(hào)課號(hào)科名科名S2C3BC1數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)S3C1BC3操作系統(tǒng)操作系統(tǒng)S3C3B選課選課選修課選修課S4C1AS4C2A學(xué)號(hào)學(xué)號(hào)成績(jī)成績(jī)S5C2BS1BS5C3BS4AS5C1AS5B71學(xué)號(hào)成績(jī) 學(xué)號(hào)S3BS1 S2S3S5選課必修課 學(xué)號(hào),課號(hào)(選課)必修課 72象集象集ABCDEa1b15d

51、13a1b15d27a1b25d310a2b35d32a4b56d27a4b56d310a4b56d32a6b66d52(a1,b1)的象的象CDE5d135d27(a1,b2)的象的象CDE5d310(a4,b5)的象的象CDE6d276d3106d32XY73除除ABCDEa1b15d13a1b15d27a1b25d310a2b35d32a2b15d52a3b26d13a4b56d27a4b56d310XY(a4,b5)=CDEF6d27fa6d310fb6d32fcYR上分量值上分量值X 的象集的象集Yx包含包含S在在Y上的投影上的投影74學(xué)生選課庫(kù)的關(guān)系模式為: 學(xué)生(學(xué)號(hào),姓名,性別

52、,年齡,所在系); 課程(課程號(hào),課程名,先行課); 選課(學(xué)號(hào),課程號(hào),成績(jī)).【例【例4-64-6】求選修了課程號(hào)為】求選修了課程號(hào)為“C2”C2”課程的學(xué)生學(xué)號(hào)。課程的學(xué)生學(xué)號(hào)。 學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)= C2= C2(選課)(選課)【例【例4-74-7】求選修了課程號(hào)為】求選修了課程號(hào)為“C2”C2”課的學(xué)生學(xué)號(hào)和姓名。課的學(xué)生學(xué)號(hào)和姓名。 學(xué)號(hào),姓名學(xué)號(hào),姓名(課程號(hào)課程號(hào)= C2= C2(選課學(xué)生)(選課學(xué)生)【例【例4-84-8】求沒(méi)有選修課程號(hào)為】求沒(méi)有選修課程號(hào)為“C2”C2”課程的學(xué)生學(xué)號(hào)。課程的學(xué)生學(xué)號(hào)。 學(xué)號(hào)學(xué)號(hào)(學(xué)生)(學(xué)生)-學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)= C2= C2(

53、選課)(選課)本題不能寫為:本題不能寫為: 學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào) C2 C2(選課)(選課)75【例【例4-94-9】求既選修】求既選修“C2”C2”課程,又選修課程,又選修“C3”C3”課程的學(xué)生學(xué)號(hào)。課程的學(xué)生學(xué)號(hào)。學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)= C2 = C2 選課選課)學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)= C3= C3( (選課選課)該題不能寫為:該題不能寫為:學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)=C2 =C2 課程號(hào)課程號(hào)=C3=C3(選課)(選課)【例【例4-104-10】求選修課程號(hào)為】求選修課程號(hào)為“C2”C2”或或“C3”C3”課程的學(xué)生學(xué)號(hào)。課程的學(xué)生學(xué)號(hào)。學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)=C2=C2( (選課選

54、課)學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)=C3=C3( (選課選課)或或 學(xué)號(hào)學(xué)號(hào)(課程號(hào)課程號(hào)=C2 =C2 課程號(hào)課程號(hào)=C3=C3(選課)(選課)【例【例4-114-11】求選修了全部課程的學(xué)生學(xué)號(hào)?!壳筮x修了全部課程的學(xué)生學(xué)號(hào)。學(xué)號(hào),課程號(hào)學(xué)號(hào),課程號(hào)(選課(選課課程)課程)【例【例4-124-12】一個(gè)學(xué)號(hào)為】一個(gè)學(xué)號(hào)為“98002”98002”的學(xué)生所學(xué)過(guò)的所有課程可能也被其他學(xué)生選修,的學(xué)生所學(xué)過(guò)的所有課程可能也被其他學(xué)生選修,求這些學(xué)生的學(xué)號(hào)和姓名。求這些學(xué)生的學(xué)號(hào)和姓名。學(xué)號(hào),姓名學(xué)號(hào),姓名(學(xué)號(hào),課程號(hào)學(xué)號(hào),課程號(hào)( (選課選課) )課程號(hào)課程號(hào)(學(xué)號(hào)學(xué)號(hào)= 98002= 98002(

55、(選課選課) () (學(xué)生學(xué)生) ) 764.2關(guān)系代數(shù)關(guān)系代數(shù)關(guān)系除法運(yùn)算的步驟:關(guān)系除法運(yùn)算的步驟:將被除關(guān)系屬性分為象集屬性和結(jié)果屬性對(duì)象集屬性進(jìn)行投影目標(biāo)數(shù)據(jù)集將被除關(guān)系分組:結(jié)果屬性值一樣的元組分為一組1)找出結(jié)果集77除運(yùn)算實(shí)例除運(yùn)算實(shí)例學(xué)號(hào)學(xué)號(hào)課號(hào)課號(hào)成績(jī)成績(jī)S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A課號(hào)課號(hào)課名課名C1數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)C3操作系統(tǒng)操作系統(tǒng)S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1AC1數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)C3操作系

56、統(tǒng)操作系統(tǒng)S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A=S3B選課選課必修課必修課選擇了所有必修課表選擇了所有必修課表 中的課程中的課程的學(xué)生的學(xué)號(hào)和成績(jī)的學(xué)生的學(xué)號(hào)和成績(jī)78小小 結(jié)結(jié) 關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是目前使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),本是目前使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),本書的重點(diǎn)也是討論關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。書的重點(diǎn)也是討論關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。 本章系統(tǒng)地介紹了關(guān)系數(shù)據(jù)庫(kù)的一些基本概念,其中本章系統(tǒng)地介紹了關(guān)系數(shù)據(jù)庫(kù)的一些基本概念,其中包括關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的完整性及其關(guān)系操包括關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的完整性及其

57、關(guān)系操作。作。79 關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,通過(guò)關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,通過(guò)謂詞形式來(lái)表示查詢表達(dá)式。謂詞形式來(lái)表示查詢表達(dá)式。 根據(jù)謂詞變?cè)牟煌?,可將關(guān)系演算分為元組關(guān)系演根據(jù)謂詞變?cè)牟煌?,可將關(guān)系演算分為元組關(guān)系演算和域關(guān)系演算。算和域關(guān)系演算。2.7.1 元組關(guān)系演算語(yǔ)言元組關(guān)系演算語(yǔ)言 元組關(guān)系演算元組關(guān)系演算是以元組變量作為謂詞變?cè)幕緦?duì)象。是以元組變量作為謂詞變?cè)幕緦?duì)象。 元組關(guān)系演算語(yǔ)言的典型代表是元組關(guān)系演算語(yǔ)言的典型代表是E.F.Codd提出的提出的ALPHA語(yǔ)言,這種語(yǔ)言雖然沒(méi)有實(shí)際實(shí)現(xiàn),但較有語(yǔ)言,這種語(yǔ)言雖然沒(méi)有實(shí)際實(shí)現(xiàn),但

58、較有名氣,名氣,INGRES關(guān)系數(shù)據(jù)庫(kù)上使用的關(guān)系數(shù)據(jù)庫(kù)上使用的QUEL語(yǔ)言,就語(yǔ)言,就是在是在ALPHA語(yǔ)言的基礎(chǔ)上研制的。語(yǔ)言的基礎(chǔ)上研制的。 這里主要介紹這里主要介紹ALPHA語(yǔ)言和語(yǔ)言和QUEL語(yǔ)言語(yǔ)言 2.7 關(guān)系演算關(guān)系演算 802.7.1.1 ALPHA語(yǔ)言語(yǔ)言 ALPHA語(yǔ)言是以語(yǔ)言是以謂詞公式謂詞公式來(lái)定義查詢要求的。在謂詞來(lái)定義查詢要求的。在謂詞公式中存在客體變?cè)?,這里稱為公式中存在客體變?cè)?,這里稱為元組變量元組變量。 元組變量是一個(gè)變量,其變化范圍為某一個(gè)命名的關(guān)元組變量是一個(gè)變量,其變化范圍為某一個(gè)命名的關(guān)系。系。 ALPHA語(yǔ)言的基本格式是:語(yǔ)言的基本格式是: ():

59、 操作符操作符有有GET,PUT,HOLD,UPDATE,DELETE,DROP等到種。等到種。 工作空間工作空間是指內(nèi)存空間,可以用一個(gè)字母表示,通常是指內(nèi)存空間,可以用一個(gè)字母表示,通常用用W表示,也可以用別的字母表示。工作空間是用戶表示,也可以用別的字母表示。工作空間是用戶與系統(tǒng)的通信區(qū)。與系統(tǒng)的通信區(qū)。 目標(biāo)表目標(biāo)表用于指定操作(如查詢、更新等)出來(lái)的結(jié)果,用于指定操作(如查詢、更新等)出來(lái)的結(jié)果,它可以是關(guān)系名或?qū)傩悦淮鸩僮髡Z(yǔ)句可以同時(shí)對(duì)它可以是關(guān)系名或?qū)傩悦?,一答操作語(yǔ)句可以同時(shí)對(duì)多個(gè)關(guān)系或多個(gè)屬性進(jìn)行操作。多個(gè)關(guān)系或多個(gè)屬性進(jìn)行操作。81 操作條件操作條件是用謂詞公式表示的邏

60、輯表達(dá)式,只有滿足是用謂詞公式表示的邏輯表達(dá)式,只有滿足此條件的元組才能進(jìn)行操作,這是一個(gè)可選項(xiàng),缺省此條件的元組才能進(jìn)行操作,這是一個(gè)可選項(xiàng),缺省時(shí)表示無(wú)條件執(zhí)行操作符規(guī)定的操作。除此之外,還時(shí)表示無(wú)條件執(zhí)行操作符規(guī)定的操作。除此之外,還可以在基本格式上加上排序要求,定額要求等。可以在基本格式上加上排序要求,定額要求等。 下面以教學(xué)數(shù)據(jù)庫(kù)(圖下面以教學(xué)數(shù)據(jù)庫(kù)(圖1.121.12)為例,說(shuō)明)為例,說(shuō)明ALPHAALPHA語(yǔ)言的使用。語(yǔ)言的使用。 1. 數(shù)據(jù)查詢數(shù)據(jù)查詢(1)簡(jiǎn)單查詢)簡(jiǎn)單查詢例例 查詢所有學(xué)生的數(shù)據(jù)。查詢所有學(xué)生的數(shù)據(jù)。GET W (S) GET語(yǔ)句的作用是把數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀

溫馨提示

  • 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)論