數(shù)據(jù)庫上課 第三講 關系代數(shù)_第1頁
數(shù)據(jù)庫上課 第三講 關系代數(shù)_第2頁
數(shù)據(jù)庫上課 第三講 關系代數(shù)_第3頁
數(shù)據(jù)庫上課 第三講 關系代數(shù)_第4頁
數(shù)據(jù)庫上課 第三講 關系代數(shù)_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、機械自動化學院機械自動化學院20152015主講:主講: 顧顧 曦曦 電話:電話:1569718107915697181079EmailEmail:回顧*2關系(表)學生記錄表*學 號姓 名年 齡性 別系 名年 級2011004張飛19男工業(yè)工程32011006郭靖20男機工32011008小喬18女機電3碼元組(行)關系名屬性(列)分量關系模式:學生記錄表(學號,姓名,性別,系名,年級)模式數(shù)據(jù)1.1 關系代數(shù)(relation algebra)關系代數(shù)是通過關系代數(shù)運算構(gòu)成的表達式來表達查詢基本的關系代數(shù)運算有選擇、投影、集合并、集合差、選擇、投影、集合并、集合差、笛卡爾積和更名笛卡爾積和

2、更名等。 關系代數(shù)運算是以一個或兩個關系關系作為輸入(即運算對象)產(chǎn)生一個新的關系新的關系作為結(jié)果。 *51.2 標記方法設關系模式為r(A1,A2,An) 它的一個關系實例設為R tR表示t是R的一個元組tA表示元組t在屬性列A上諸分量的集合。 tAi則表示元組t中相應于屬性Ai的一個分量 *6 A,A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,則A稱為屬性集或?qū)傩越M。A:表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的屬性組。 *7示例:關系模式 r(A1,A2,An)14級學生記錄表(一個關系實例R)*學 號姓 名年 齡性 別系 名年

3、級2011004張飛19男工業(yè)工程32011006郭靖20男機工32011008小喬18女機電3屬性集AtAtRtAi屬性集A tr ts R為n目關系,S為m目關系。 tr R,tsS, tr ts稱為元組的連接元組的連接。 tr ts是一個n + m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。 *9示例ABCa1b1c1a2b2c2*10DEd1e1d2e2R ( 3目關系 )S ( 2目關系 )tr ts ( 5列元組 )trtrtsa1b1c1d1e1關系代數(shù)的運算符 關系代數(shù)用到的運算符包括四類*11*122.1 并(并( )關系r和關系s具有相同的n個屬性

4、,且相應的屬性取自同一個域。t是元組變量,tr表示t是r的一個元組。 關系r與關系s的并記作 :rs = t trts 其結(jié)果關系仍為n目關系,由屬于r或或?qū)儆趕的所有元組組成。注:去掉重復元組注:去掉重復元組*13并( )示例*142.2 差(差(-)r和s具有相同的目n相應的屬性取自同一個域關系r與關系s的差記作 :r-s = t trts 其結(jié)果關系仍為n目關系,由屬于r且且不屬于s的所有元組組成。*15示例示例*16An Introduction to Database System2.3 交(交( )r和s具有相同的目n相應的屬性取自同一個域關系r與關系s的交記作:rs = t tr

5、ts 其結(jié)果關系仍為n目關系,由既既屬于r又又屬于s的所有元組組成。關系的交可以通過差來表達,即rs = r-(r-s) *17示例*182.4 笛卡爾積() 兩個分別為n目和m目的關系r和s的笛卡爾積是一個n+m目元組的集合。 元組的前n列是關系r的一個元組,后m列是關系s的一個元組若關系r有kr個元組,關系s有ks個元組,則關系r和s的笛卡爾積有krks個元組。記作 : rs = trts trrtss *19例:成績管理數(shù)據(jù)庫(P56) 關系Course和Class可分別描述為:Course ( 課程號,課程名稱,學時,學分)Class ( 班級號,班級名稱,學院,年級,人數(shù))求笛卡爾積

6、Class Course*20*21 Course關系關系CourseNo CourseName creditHour courseHour priorCourseAC001 基礎會計基礎會計 48 3 nullCN028 大學語文大學語文 48 3 nulCS012 操作系統(tǒng)操作系統(tǒng) 80 5 nullCS015 數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng) 64 4 CS012Class關系關系ClassNo ClassName instiute grade ClassNumAC0703 會計學會計學08(3)班班 會計學院會計學院 2008 46CS0701 計算機計算機07(1)班班 信息學院信息學院 200

7、7 48ISO802 信息系統(tǒng)信息系統(tǒng)08(2)班班 信息學院信息學院 2008 43笛卡爾積 Class Course*22*233.2 選擇()運算選擇操作是在關系關系r中查找滿足給定謂詞滿足給定謂詞P(即選擇條件即選擇條件)的所有元組,記作: P (r) = t t rP(t) P 是一個邏輯表達式,取值為“真”或“假”。 選擇運算是從行行的角度的角度進行的運算。*24P (r) 示例l 例如,在數(shù)據(jù)庫ScoreDB中,查找2007級的所有班級情況 grade=2007(Class) ClassNo ClassName instiute grade ClassNum AC0703 會計學

8、會計學08(3)班班 會計學院會計學院 2007 46 CS0701 計算機計算機07(1)班班 信息學院信息學院 2007 48l 例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,查找所有中,查找所有1992年及以后出生年及以后出生 的女學生的女學生情況情況 : year(birthday)=1992sex=女女(Student)StudentNo StudentName sex birthday native nation classNo 0703010 李宏冰李宏冰 女女 1992-03-09 太原太原 蒙古族蒙古族 AC0703*25 3.3 投影()關系r上的投影是從r中選擇出若干屬性

9、列若干屬性列組成新的關系。記作: A(r) = tA tr 其中:A為關系r的屬性集合。注意:投影是從列的角度進行的運算。投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行) *26投影(A(r) )示例在數(shù)據(jù)庫ScoreDB中,查找所有學生的姓名和民族 。 studentName, nation(Student) 提問: nation(Student) 在數(shù)據(jù)庫ScoreDB中,查找所有“蒙古族”學生的姓名和籍貫。StudentName nation 李小勇李小勇 漢族漢族 王紅王紅 漢族漢族 王宏冰王宏冰 蒙古族蒙古族 劉方晨劉方晨 傣族傣族 王紅敏王紅敏 蒙古族蒙古族

10、StudentName native 王宏冰王宏冰 太原太原 王紅敏王紅敏 上海上海studentName, native(nation=蒙古族(Student)*27l 連接也稱為連接。記為A op B,其中A、B分別為關系r和s中的度數(shù)相等且可比度數(shù)相等且可比的連接屬性集連接屬性集,op為比較運算符。 l 連接是從兩個關系的笛卡爾積兩個關系的笛卡爾積中選取連接屬性間滿足謂詞的所有元組。記作 : r s = trts trrtss(r.A op s.B) l連接運算就是從關系r和s的笛卡爾積rs中,選取r關系在A屬性集上的值值與s關系在B屬性集上的值值滿足連接謂詞的所有元組,即 r s =

11、3.4 連接())(sr)(sr*28 幾種連接l一般連接一般連接:不是等值比較謂詞的連接運算(較少用)。l等值連接等值連接(equijoin) :為等值比較謂詞的連接運算。l自然連接自然連接(natural join):l一種特殊的等值連接l兩個參與連接的關系具有公共的屬性集具有公共的屬性集,并在這個公共屬性集上進行等值連接;l將連接結(jié)果中的重復屬性列去除掉重復屬性列去除掉,即在公共屬性集中的列只保留一次。 )(sr*29一般的連接操作是從行的角度進行運算。 自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。 ABRS*30示例關系R和關系S 如下所示:*31公共屬性:B*32一般

12、連接 R S的結(jié)果: CE *33 等值連接 R S 的結(jié)果:R.B=S.B *34 自然連接 R S的結(jié)果如下: 取消重復列外連接(參見教材B,p59例子)對于連接R S 外連接:把舍棄的元組也保存在結(jié)果關系中,在其他屬性上填空值(null)。左外連接:保留左邊關系R中要舍棄的元組。右外連接:保留右邊關系S中要舍棄的元組。*35*36上例中關系R和關系S的外連接 上例中關系R和關系S的左外連接和右外連接 *37綜合示例在數(shù)據(jù)庫ScoreDB中,查找所有2008級的“蒙古族”學生的姓名 StudentName 王紅敏王紅敏 分析:分析: nation=蒙古族蒙古族(Student)可以找到所有

13、蒙古族學生的情況,但關系可以找到所有蒙古族學生的情況,但關系Student中中沒有年級的信息,因此沒有年級的信息,因此必須必須將關系將關系Student與關系與關系Class關聯(lián)起來。關聯(lián)起來。 根據(jù)模式導航圖可知,根據(jù)模式導航圖可知,關系關系Student與關系與關系Class可通過外碼可通過外碼classNo關聯(lián)起來,關聯(lián)起來,這種外碼引用關系可通過自然連接表示這種外碼引用關系可通過自然連接表示 Student Class =Student.classNo=Class.classNo(StudentClass) 最后的查詢可表達為:最后的查詢可表達為: studentName(nation

14、=蒙古族蒙古族(Student) grade=2008(Class) *38注意:在關系代數(shù)中,對同一個查詢問題,可用多種方式來表達!*39studentName(nation=蒙古族(Student) grade=2008(Class) =studentName(Student.classNo=Class.classNo(nation=蒙古族(Student)grade=2008(Class) =studentName(Student.classNo=Class.classNo(nation=蒙古族grade=2008(StudentClass)=studentName(nation=蒙古族

15、grade=2008Student.classNo=Class.classNo(StudentClass) =studentName(nation=蒙古族grade=2008(Student.classNo=Class.classNo(StudentClass) =studentName(nation=蒙古族grade=2008(Student Class) *40主要的關系代數(shù)運算*41符號(名稱)符號(名稱)示例和要點示例和要點 (選擇)nation=蒙古族(Student) 返回關系中符合選擇條件P的行(投影)studentName, nation(Student)輸出關系特定屬性的所有

16、行,消除重復列 (自然連接)Student Class兩個參與連接的關系具有公共的屬性集;在這個公共屬性集上進行等值連接;去掉連接結(jié)果中的重復屬性列。(笛卡爾積)StudentClassrs = trts trrtss (并)studentN0(Student) studentN0(Score)兩個關系具有相同的屬性集,合并元組,去掉重復元組3.5 除()概念:象集概念:象集給定一個關系R(X,Z),X和Z為屬性組 當tX=x時,x在R中的像集像集(Images Set)為: Zx= tZ | t R,tX=x 它表示R中屬性組X上值為x的元組在Z上分量的集合。)(sr*42象集示例*43例:

17、R(A,B,C)如下 A B C a1 b1 c2 a2 b3 c7 a3 b4 c6 a1 b2 c3 a4 b6 c6 a2 b2 c3 a1 b2 c1 R上屬性集A的值為a1的像集為:( b1, c2 ),( b2, c3),( b2, c1)除運算設關系r(R)和s(S),屬性集S是R的子集子集,即SR,則關系rs是關系r中滿足下列條件的元組在屬性集R-S上的投影: trr,記 x= trR-S,則關系r中屬性集R-S的取值的取值x的象集的象集Sx包含包含關系s。記作 rs = trR-S tr rs Sx *44除操作是同時從行行和列列角度進行運算 RS*45除法示例例1 Scor

18、e(courseNo(courseNo=AC001(Course) StudentNoterm score0701008 07081 760703010 07081 920703045 07081 520703045 08091 940802002 08091 980802005 09101 88Score關系關系StudentNo courseNoterm score0701001CN02807081850701001CS01207082880701001CS01508091920701008AC00107081760701008CN02807081860701008CS0120708293

19、0701008CS01508091960703010AC00107081920703010CN02807081830703010CS01207082730703045AC00107081520703045AC00108091940703045 CN028 07081 800703045 CS015 08091 820802002AC00108091980802002CN02808091720802002CS01509101850802005AC00109101880802005CS01208092900802005CS0150910187courseNoAC001courseNoCN028例2

20、Score(courseNo(courseNo=CN028(Course)StudentNoterm score0701001 07081 850701008 07081 860703010 07081 830703045 07081 800802002 08091 72Score關系關系StudentNo courseNoterm score0701001CN02807081850701001CS01207082880701001CS01508091920701008AC00107081760701008CN02807081860701008CS01207082930701008CS0150

21、8091960703010AC00107081920703010CN02807081830703010CS01207082730703045AC00107081520703045AC00108091940703045 CN028 07081 800703045 CS015 08091 820802002AC00108091980802002CN02808091720802002CS01509101850802005AC00109101880802005CS01208092900802005CS0150910187 需要查找修讀過信息學院開設的所有課程的學生學號,如何表達查詢? )(sr分析:查

22、找出修讀過信息學院課程的所有學生 r1 = studentNo, courseNo(courseNo LIKE CS%(Score) 找出信息學院開設的所有課程 r2 = courseNo(courseNo LIKE CS%(Course) StudentNo courseNo0701001CS0120701001CS0150701008CS0120701008CS0150703010CS0120703045 CS015 0802002CS0150802005CS0120802005CS015CourseNo CS012 CS015例3*48)(sr 比較圖2-20(a)和(b) ,修讀過信息

23、學院開設的所有課程的學生 就是關系r1中滿足“courseNo列包含關系r2的所有行”的那些學生 。*493.6 構(gòu)造關系代數(shù)表達式的步驟 明確該查詢涉及到哪些屬性; 明確該查詢涉及到哪些關系; 根據(jù)數(shù)據(jù)庫模式導航圖,通過多對一聯(lián)系(或一對多聯(lián)系)把所有涉及的關系連接起來,每一個多對一聯(lián)系(或一對多聯(lián)系)都可以表示為外碼屬性的自然連接。 *50小結(jié):關系代數(shù)的運算符 集合運算符集合運算符比較運算符比較運算符邏輯運算符邏輯運算符專門的關系運算專門的關系運算符符 - *51*524.1 關系數(shù)據(jù)模型的完整性約束關系的完整性約束條件 包含三個方面:*531)實體完整性若屬性集A是關系r的主碼,則A不

24、能取空值null。 例如,關系Student,由于studentNo是關系Student的主碼,因此它在任何時候的取值都不能為空值null其他屬性如birthday、speciality等可以取空值,表示當時該屬性的值未知或不存在。 如果主碼是由若干個屬性的集合構(gòu)成,則要求構(gòu)成主碼的每一個屬性的值都不能取空值。 例如,學生成績管理數(shù)據(jù)庫ScoreDB中的關系Score,它的主碼是studentNo, courseNo,因此這2個屬性都不能取空值。 *542)參照完整性設F是關系r的一個屬性(或?qū)傩约?,Ks是關系s的主碼。如果F與Ks相對應,則稱F是關系r參照關系s的外碼(foreign ke

25、y),簡稱F是關系r的外碼。并稱關系r為參照關系,關系s為被參照關系或目標關系。 若屬性(或?qū)傩约?F是關系r的外碼,它與關系s的主碼Ks相對應,則對于關系r中的每一個元組在屬性F上的取值要么為空值null,要么等于關系s中某個元組的主碼值。 *55舉例:u 多對一聯(lián)系的屬性引用 學生成績管理數(shù)據(jù)庫ScoreDB中,學生關系Student與班級關系Class之間存在多對一的“歸屬”聯(lián)系。 u 多對多聯(lián)系的聯(lián)系關系及屬性引用 學生成績管理數(shù)據(jù)庫ScoreDB中,假設每一個學生一個學期可以選修若干門課程,每一門課程同時有若干個學生選修,那么學生關系Student與課程關系Course之間存在多對多

26、的“選修”聯(lián)系,且課程的開課學期term和修讀成績score為聯(lián)系屬性。 u 關系內(nèi)部屬性間的引用聯(lián)系 學生成績管理數(shù)據(jù)庫ScoreDB中,假設一門課程可能存在先修課程,且關系Course中的priorCourse屬性用來存放先修課程的課程編號。課程關系Course中的priorCourse屬性需要引用課程關系Course的主碼“課程編號”courseNo。 Class( classNo, className, institute, grade, classNum ) Student( studentNo, studentName, sex, birthday, native, nation,

27、 classNo )實現(xiàn)“多對一”聯(lián)系的屬性引用1n Student( studentNo, studentName, sex, birthday, native, nation, classNo ) Score( studentNo, courseNo, term, score ) Course( courseNo, courseName, creditHour, courseHour, priorCourse )實現(xiàn)“多對多”聯(lián)系的聯(lián)系關系及屬性引用mnCourse( courseNo, courseName, creditHour, courseHour, priorCourse )實現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論