關(guān)系模型與關(guān)系代數(shù)_第1頁
關(guān)系模型與關(guān)系代數(shù)_第2頁
關(guān)系模型與關(guān)系代數(shù)_第3頁
關(guān)系模型與關(guān)系代數(shù)_第4頁
關(guān)系模型與關(guān)系代數(shù)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

關(guān)系模型與關(guān)系代數(shù)第一頁,共四十七頁,2022年,8月28日目錄關(guān)系模型2.1關(guān)系代數(shù)2.2第二頁,共四十七頁,2022年,8月28日關(guān)系模型系統(tǒng)而嚴格地提出關(guān)系模型的是美國IBM公司的

1970年提出關(guān)系數(shù)據(jù)模型E.F.Codd,“ARelationalModelofDataforLargeSharedDataBanks”,《CommunicationoftheACM》,1970關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫管理系統(tǒng)是當今的主流數(shù)據(jù)庫管理系統(tǒng)。關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。第三頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡單,它就是二維表,亦稱為關(guān)系。關(guān)系數(shù)據(jù)庫是表的集合,即關(guān)系的集合。表是一個實體集,一行就是一個實體,它由共同表示一個實體的有關(guān)聯(lián)的若干屬性的值所構(gòu)成。由于一個表是這種有關(guān)聯(lián)的值的集合(即行的集合),而表這個概念和數(shù)學上的關(guān)系概念密切相關(guān),因此稱為關(guān)系模型。關(guān)系模型中,現(xiàn)實世界的實體以及實體間的各種聯(lián)系都是用關(guān)系來表示。第四頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義域——是一組具有相同數(shù)據(jù)類型的值的集合。笛卡爾積給定一組域D1,D2,…,Dn,它們之中可以有相同的域。D1,D2,…,Dn的笛卡爾積為:

D1×D2×…×Dn

={(d1,d2,…,dn)∣di∈Di,i=1,2,…,n}其中,集合中的每一個元素(d1,d2,…,dn)稱為一個n元組,簡稱為元組;元素中的每一個值di稱為一個分量。若Di(i=1,2,…,n)為有限集,假設(shè)其基數(shù)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數(shù)M為:

舉例:給定兩個域:學生的姓名集合:D1={‘李小勇’,‘劉方晨’,‘王紅敏’}課程的名稱集合:D2={‘數(shù)據(jù)庫系統(tǒng)概論’,‘操作系統(tǒng)’}則D1,D2的笛卡爾積為:

D1×D2={(‘李小勇’,‘數(shù)據(jù)庫系統(tǒng)概論’),(‘李小勇’,‘操作系統(tǒng)’),(‘劉方晨’,‘數(shù)據(jù)庫系統(tǒng)概論’),(‘劉方晨’,‘操作系統(tǒng)’),(‘王紅敏’,‘數(shù)據(jù)庫系統(tǒng)概論’),(‘王紅敏’,‘操作系統(tǒng)’)}

第五頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義關(guān)系D1×D2×…×Dn的子集稱為在域D1,D2,…,Dn上的關(guān)系,表示為:

r(D1,D2,…,Dn)其中,r表示關(guān)系的名字,n是關(guān)系的目或度(degree)。當

n=1時,稱該關(guān)系為單元關(guān)系;當n=2時,稱該關(guān)系為二元關(guān)系。

關(guān)系是笛卡爾積的有限子集,所以關(guān)系也是一個二維表,表的每行對應于關(guān)系的一個元組,表的每列對應于關(guān)系的一個域。由于域可以相同,為了區(qū)別就必須給每列起一個名字,稱為屬性(attribute)。n目關(guān)系共有n個屬性。

第六頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義超碼:對于關(guān)系r的一個或多個屬性的集合A,如果屬性集A可以唯一地標識關(guān)系r中的一個元組,則稱屬性集A為關(guān)系r的一個超碼(superkey)

。候選碼:對于關(guān)系r的一個或多個屬性的集合A,如果屬性集A的任意真子集都不能成為關(guān)系r的超碼,則稱屬性集A為候選碼(candidatekey)

。主碼:若一個關(guān)系有多個候選碼,則可以選定其中的一個候選碼作為該關(guān)系的主碼??罩担核锌赡艿挠虻囊粋€取值,表明值未知或不存在。

如果某學生的speciality屬性值為null,則表示該學生還沒有明確所學專業(yè),或不知道他的所學專業(yè)。舉例:Student關(guān)系studentNostudentNamesexbirthday speciality

0701001 李小勇 男1990-12-21 計算機 0701008 王紅 男1992-04-26 計算機

0802002 劉方晨 女1990-11-11 信息系統(tǒng) 0802005 王紅敏 女1990-10-01 信息系統(tǒng) 0703045 王紅 男1992-04-26 會計學

0703010 李宏冰 女1992-03-09 會計學 超碼:studentNo,{studentNo,studentName}、{studentNo,sex}、

{studentNo,studentName,speciality}、…

候選碼:studentNo和{studentName,speciality}——與語義有關(guān)主碼:studentNo第七頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模式對于一個二維表,有表頭部分和表體部分,表頭部分定義了該表的結(jié)構(gòu),即定義了該表由哪些列構(gòu)成(假設(shè)由n列構(gòu)成),每個列的名字和取值范圍等;表體就是所有數(shù)據(jù)行的集合,每一個數(shù)據(jù)行都是由表頭部分規(guī)定的n列有關(guān)聯(lián)的取值的集合構(gòu)成。對應于關(guān)系數(shù)據(jù)庫,表的每一個數(shù)據(jù)行對應于關(guān)系的一個元組,表體對應于關(guān)系,關(guān)系是元組的集合,關(guān)系是值的概念;表頭部分對應于關(guān)系模式,關(guān)系模式是型的概念,它定義了元組集合的結(jié)構(gòu),即定義了一個元組由哪些屬性構(gòu)成(假設(shè)由n個屬性構(gòu)成),每個屬性的名字和來自的域等.第八頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模式關(guān)系的描述稱為關(guān)系模式(relationschema)。形式化地表示為:r(U,D,DOM,F)

r為關(guān)系名,U為組成該關(guān)系的屬性名的集合,D為屬性集U中所有屬性所來自的域的集合,DOM為屬性向域的映像集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合(即體現(xiàn)一個元組的各屬性取值之間的“關(guān)聯(lián)”性)。關(guān)系模式通常被簡記為:r(U)

或r(A1,A2,…,An)

r為關(guān)系名,U為屬性名的集合{A1,A2,…,An}

第九頁,共四十七頁,2022年,8月28日關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系模式關(guān)系數(shù)據(jù)庫也有型和值之分,型就是關(guān)系數(shù)據(jù)庫模式,即它所包含的所有關(guān)系模式的集合;值就是這些關(guān)系模式在某一時刻所對應的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫實例。在實際應用中,人們經(jīng)常把關(guān)系數(shù)據(jù)庫模式和關(guān)系數(shù)據(jù)庫實例都籠統(tǒng)地稱為關(guān)系數(shù)據(jù)庫。舉例:學生成績管理數(shù)據(jù)庫ScoreDB的模式

Class(classNo:char(6),className:varchar(30),institute:varchar(30),

grade:smallint,classNum:tinyint)Student(studentNo:char(7),studentName:varchar(20),sex:char(2),birthday:

datetime,native:varchar(20),nation:varchar(30),classNo:char(6))Course(courseNo:char(5),courseName:varchar(30),creditHour:numeric,

courseHour:int,priorCourse:char(5))Score(studentNo:char(7),courseNo:char(5),term:char(5),score:numeric)

說明:基本數(shù)據(jù)類型請參見P112~113第十頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件實體完整性若屬性集A是關(guān)系r的主碼,則A不能取空值null。

例如,關(guān)系Student,由于studentNo是關(guān)系Student的主碼,因此它在任何時候的取值都不能為空值null,但其他屬性如sex、birthday、speciality等都可以取空值,表示當時該屬性的值未知或不存在。

如果主碼是由若干個屬性的集合構(gòu)成,則要求構(gòu)成主碼的每一個屬性的值都不能取空值。例如,學生成績管理數(shù)據(jù)庫ScoreDB中的關(guān)系Score,它的主碼是{studentNo,courseNo,term},因此這3個屬性都不能取空值。第十一頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件參照完整性設(shè)F是關(guān)系r的一個屬性(或?qū)傩约?,Ks是關(guān)系s的主碼。如果F與Ks相對應,則稱F是關(guān)系r參照關(guān)系s的外碼(foreignkey),簡稱F是關(guān)系r的外碼。并稱關(guān)系r為參照關(guān)系,關(guān)系s為被參照關(guān)系或目標關(guān)系。若屬性(或?qū)傩约?F是關(guān)系r的外碼,它與關(guān)系s的主碼Ks相對應,則對于關(guān)系r中的每一個元組在屬性F上的取值要么為空值null,要么等于關(guān)系s中某個元組的主碼值。

第十二頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件舉例:

多對一聯(lián)系的屬性引用學生成績管理數(shù)據(jù)庫ScoreDB中,學生關(guān)系Student與班級關(guān)系Class之間存在多對一的“歸屬”聯(lián)系。

多對多聯(lián)系的聯(lián)系關(guān)系及屬性引用學生成績管理數(shù)據(jù)庫ScoreDB中,假設(shè)每一個學生一個學期可以選修若干門課程,每一門課程同時有若干個學生選修,那么學生關(guān)系Student與課程關(guān)系Course之間存在多對多的“選修”聯(lián)系,且課程的開課學期term和修讀成績score為聯(lián)系屬性。

關(guān)系內(nèi)部屬性間的引用聯(lián)系

學生成績管理數(shù)據(jù)庫ScoreDB中,假設(shè)一門課程可能存在先修課程,且關(guān)系Course中的priorCourse屬性用來存放先修課程的課程編號。課程關(guān)系Course中的priorCourse屬性需要引用課程關(guān)系Course的主碼“課程編號”courseNo。Class(classNo,className,institute,grade,classNum

) Student(studentNo,studentName,sex,birthday,native,nation,classNo)圖2-4實現(xiàn)“多對一”聯(lián)系的屬性引用1nStudent(studentNo,studentName,sex,birthday,native,nation,classNo)

Score(studentNo,courseNo,term,score) Course(courseNo,courseName,creditHour,courseHour,priorCourse

)圖2-5實現(xiàn)“多對多”聯(lián)系的聯(lián)系關(guān)系及屬性引用mnCourse(courseNo,courseName,creditHour,courseHour,priorCourse)圖2-6實現(xiàn)關(guān)系內(nèi)部屬性間的引用聯(lián)系第十三頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件數(shù)據(jù)庫模式導航圖一個含有主碼和外碼依賴的數(shù)據(jù)庫模式可以通過模式導航圖來表示。

第十四頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件數(shù)據(jù)庫模式導航圖一個含有主碼和外碼依賴的數(shù)據(jù)庫模式可以通過模式導航圖來表示。關(guān)系Student與關(guān)系Class之間存在多對一的“歸屬”聯(lián)系(一個班由多個學生組成,一個學生只能歸屬于某個班),通過外碼classNo實現(xiàn)該聯(lián)系。關(guān)系Course與關(guān)系Student之間存在多對多的“選修”聯(lián)系。關(guān)系Score的主碼是{studentNo,courseNo,term},顯然同一個學生在同一個學期不允許修讀同一門課程多次。關(guān)系Course的priorCourse屬性參照本關(guān)系的主碼courseNo屬性第十五頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件數(shù)據(jù)庫模式導航圖

第十六頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件數(shù)據(jù)庫模式導航圖一個含有主碼和外碼依賴的數(shù)據(jù)庫模式可以通過模式導航圖來表示關(guān)系Student與關(guān)系Class之間、關(guān)系Class與關(guān)系Institute之間、關(guān)系Teacher與關(guān)系Institute之間都存在多對一的“歸屬”聯(lián)系。關(guān)系Course的priorCourse屬性參照本關(guān)系的主碼courseNo屬性關(guān)系CourseClass與關(guān)系Course之間存在多對一的“開課”聯(lián)系(每個學期一門課程可能開設(shè)多個教學班,一個教學班只講授一門課程)。關(guān)系CourseClass與關(guān)系Classroom之間存在多對一的“上課”聯(lián)系關(guān)系CourseClass與關(guān)系Teacher之間存在多對一的“授課”聯(lián)系關(guān)系CourseClass與關(guān)系Student之間存在多對多的“選課”聯(lián)系。關(guān)系SC的主碼是{cClassNo,studentNo},顯然同一個學生不允許選修同一個教學班的課程多次。第十七頁,共四十七頁,2022年,8月28日關(guān)系完整性約束條件用戶自定義完整性任何關(guān)系數(shù)據(jù)庫管理系統(tǒng)都應該支持實體完整性和參照完整性。用戶定義的完整性就是針對某一具體應用要求來定義的約束條件,它反映某一具體應用所涉及的數(shù)據(jù)必須滿足的語義要求。例如,限制關(guān)系中某些屬性的取值要符合業(yè)務語義要求。限制關(guān)系中某些屬性的取值之間需要滿足一定的邏輯關(guān)系。限制關(guān)系中某屬性集上的取值必須唯一。

第十八頁,共四十七頁,2022年,8月28日關(guān)系操作關(guān)系操作關(guān)系操作的特點是集合操作方式,即操作的對象和結(jié)果都是集合。這種操作方式也稱為一次一個集合的方式。相應地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為一次一個記錄的方式。關(guān)系模型中的關(guān)系操作有查詢操作和更新操作(包括插入刪除和修改)兩大類。查詢操作是關(guān)系操作中最主要的部分.查詢操作又可以分為選擇(select)、投影(project)、連接(join)、除(divide)、并(union)、交(intersection)、差(except)、笛卡爾積等。第十九頁,共四十七頁,2022年,8月28日關(guān)系操作關(guān)系操作能力可用兩種方式來表示:代數(shù)方式和邏輯方式。關(guān)系代數(shù)是用代數(shù)方式表達的關(guān)系查詢語言。關(guān)系演算是用邏輯方式表達的關(guān)系查詢語言。關(guān)系演算又可按謂詞變元的基本對象是元組變量還是域變量分為元組關(guān)系演算和域關(guān)系演算。對于關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算均是抽象的查詢語言,在表達能力上是完全等價的。第二十頁,共四十七頁,2022年,8月28日目錄關(guān)系模型2.1關(guān)系代數(shù)2.2第二十一頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)關(guān)系代數(shù)關(guān)系代數(shù)是通過關(guān)系代數(shù)運算構(gòu)成的表達式來表達查詢?;镜年P(guān)系代數(shù)運算有選擇、投影、集合并、集合差、笛卡爾積和更名等。關(guān)系代數(shù)運算是以一個或兩個關(guān)系作為輸入(即運算對象)產(chǎn)生一個新的關(guān)系作為結(jié)果。第二十二頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)傳統(tǒng)的集合運算前提假設(shè):關(guān)系r和關(guān)系s具有相同的n個屬性,且相應的屬性取自同一個域。t是元組變量,t∈r表示t是r的一個元組。

并運算關(guān)系r與關(guān)系s的并記作:r∪s={t∣tr∨ts}其結(jié)果關(guān)系仍為n目關(guān)系,由屬于r或?qū)儆趕的所有元組組成。第二十三頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)傳統(tǒng)的集合運算

差關(guān)系r與關(guān)系s的差記作:r-s={t∣tr∧ts}其結(jié)果關(guān)系仍為n目關(guān)系,由屬于r而不屬于s的所有元組組成。

交關(guān)系r與關(guān)系s的交記作:r∩s={t∣tr∧ts}其結(jié)果關(guān)系仍為n目關(guān)系,由既屬于r又屬于s的所有元組組成。關(guān)系的交可以通過差來表達,即r∩s=r-(r-s)。第二十四頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)傳統(tǒng)的集合運算

笛卡爾積

兩個分別為n目和m目的關(guān)系r和s的笛卡爾積是一個n+m目元組的集合。元組的前n列是關(guān)系r的一個元組,后m列是關(guān)系s的一個元組若關(guān)系r有kr個元組,關(guān)系s有ks個元組,則關(guān)系r和s的笛卡爾積有kr×ks個元組。記作:

r×s={tr·ts∣trr∧tss}第二十五頁,共四十七頁,2022年,8月28日成績管理數(shù)據(jù)庫ScoreDB的實例數(shù)據(jù)(P56)

關(guān)系Student、Course和Score可分別描述為:Student(學號,姓名,性別,出生日期,所學專業(yè))Course(課程號,課程名稱,學時,學分)Score(學號,課程號,學期,成績)關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿足一定的規(guī)范條件。最基本的規(guī)范條件是:關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項,即不允許表中有表

Student關(guān)系StudentNoStudentNamesex

birthdaynativenationclassNo0701001 李小勇 男1990-12-21南昌漢族CS07010701008 王紅 男1992-04-26上海漢族CS0701

0703010 李宏冰 女1992-03-09太原蒙古族AC07030703045 王紅 男1992-04-26北京漢族AC07030802002 劉方晨 女1990-11-11南昌傣族ISO8020802005 王紅敏 女1990-10-01上海蒙古族ISO802Course關(guān)系CourseNo CourseNamecreditHourcourseHourpriorCourseAC001基礎(chǔ)會計483nullCN028 大學語文483nulCS012 操作系統(tǒng)805nullCS015數(shù)據(jù)庫系統(tǒng)644CS012Score關(guān)系StudentNo courseNo termscore0701001 CN028 07081 850701001 CS012 07082 880701001 CS015 08091 920701008 AC001 07081 760701008 CN028 07081 860701008 CS012 07082 930701008 CS015 08091 960703010 AC001 07081 920703010 CN028 07081 830703010 CS012 07082 730703045 AC001 07081 520703045 AC001 08091 940703045CN02807081800703045CS01508091820802002 AC001 08091 980802002 CN028 08091 720802002 CS015 09101 850802005 AC001 09101 880802005 CS012 08092 900802005 CS015 09101 87Class關(guān)系ClassNo ClassName

instiutegrade

ClassNumAC0703 會計學08(3)班會計學院200846CS0701 計算機07(1)班

信息學院200748 ISO802 信息系統(tǒng)08(2)班信息學院200843第二十六頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)傳統(tǒng)的集合運算對于數(shù)據(jù)庫ScoreDB,笛卡爾積Class×Course的結(jié)果關(guān)系為:

第二十七頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

選擇選擇操作是在關(guān)系r中查找滿足給定謂詞(即選擇條件)的所有元組,記作:

σP(r)={t∣tr∧P(t)}

P表示謂詞(即選擇條件),它是一個邏輯表達式,取值為“真”或“假”。第二十八頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

選擇例如,在數(shù)據(jù)庫ScoreDB中,查找2007級的所有班級情況

σgrade=2007(Class)

ClassNo ClassName

instiutegrade

ClassNumAC0703 會計學08(3)班會計學院200746CS0701 計算機07(1)班

信息學院200748

例如,在數(shù)據(jù)庫ScoreDB中,查找所有1992年及以后出生的女學生情況,σyear(birthday)>=1992∧sex='女'(Student)StudentNo StudentName

sexbirthdaynativenationclassNo0703010 李宏冰女1992-03-09太原蒙古族AC0703第二十九頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

投影關(guān)系是一個二維表,對它的操作可以從水平(行)的角度進行,即選擇操作;也可以從縱向(列)的角度進行,即投影操作。關(guān)系r上的投影是從r中選擇出若干屬性列組成新的關(guān)系。記作:

∏A(r)={t[A]∣tr}

A為關(guān)系r的屬性集合。第三十頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

投影

例如,在數(shù)據(jù)庫ScoreDB中,查找所有學生的姓名和民族

∏studentName,nation(Student)

例如,在數(shù)據(jù)庫ScoreDB中,查找所有“蒙古族”學生的姓名和籍貫StudentName

nation

李小勇漢族王紅漢族王宏冰蒙古族劉方晨傣族王紅敏蒙古族StudentName

native

王宏冰太原王紅敏上海∏studentName,native(σnation=‘蒙古族’(Student))第三十一頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

連接連接也稱為θ連接。記為AopB,其中A、B分別為關(guān)系r和s中的度數(shù)相等且可比的連接屬性集,op為比較運算符。θ連接是從兩個關(guān)系的笛卡爾積中選取連接屬性間滿足謂詞θ的所有元組。記作:r?θ

s={tr·ts∣trr∧tss∧(r.Aops.B)}θ連接運算就是從關(guān)系r和s的笛卡爾積r×s中,選取r關(guān)系在A屬性集上的值與s關(guān)系在B屬性集上的值滿足連接謂詞θ的所有元組,即r?θ

s=

第三十二頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

連接連接運算中有兩種最常用、最重要的連接,一種是等值連接(equijoin),另一種是自然連接(naturaljoin)。θ為等值比較謂詞的連接運算稱為等值連接。

自然連接是一種特殊的等值連接,它要求兩個參與連接的關(guān)系具有公共的屬性集,并在這個公共屬性集上進行等值連接;同時,還要求將連接結(jié)果中的重復屬性列去除掉,即在公共屬性集中的列只保留一次。

第三十三頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算例如,在數(shù)據(jù)庫ScoreDB中,查找所有2008級的“蒙古族”學生的姓名

StudentName

王紅敏

分析:

①σnation=‘蒙古族’(Student)可以找到所有蒙古族學生的情況,但關(guān)系Student中沒有年級的信息,因此必須將關(guān)系Student與關(guān)系Class關(guān)聯(lián)起來。②根據(jù)模式導航圖可知,關(guān)系Student與關(guān)系Class可通過外碼classNo關(guān)聯(lián)起來,這種外碼引用關(guān)系可通過自然連接表示

Student?Class=σStudent.classNo=Class.classNo(Student×Class)

③最后的查詢可表達為:

∏studentName(σnation='蒙古族'(Student)?σgrade=2008(Class))

第三十四頁,共四十七頁,2022年,8月28日∏studentName(σnation=‘蒙古族’(Student)?σgrade=2008(Class))

=∏studentName(σStudent.classNo=Class.classNo(σnation='蒙古族'(Student)×σgrade=2008(Class)))

=∏studentName(σStudent.classNo=Class.classNo(σnation='蒙古族'∧grade=2008(Student×Class)))=∏studentName(σnation='蒙古族'∧grade=2008∧Student.classNo=Class.classNo(Student×Class))

=∏studentName(σnation='蒙古族'∧grade=2008(σStudent.classNo=Class.classNo(Student×Class)))

=∏studentName(σnation='蒙古族'∧grade=2008(Student?Class))

關(guān)系代數(shù)第三十五頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)例如,在數(shù)據(jù)庫ScoreDB中,查找課程號為“AC001”課程的考試中比學號為“0703045”的學生考得更好的所有學生的姓名和成績。

分析:①找出學號為“0703045”的學生在課程號為“AC001”的課程中的成績元組

(結(jié)果關(guān)系記為r1),可表達為:σstudentNo='0703045'∧courseNo='AC001'(Score)

②找出選修了課程號為“AC001”課程的所有學生的成績元組(結(jié)果關(guān)系記為r2)

,其查詢可表達為:

σcourseNo='AC001'(Score)

③將關(guān)系r1與關(guān)系r2進行θ連接(結(jié)果關(guān)系記為r3),其查詢可表達為:

r1?r1.score<r2.score

r2=σr1.score<r2.score(r1×r2)

④將關(guān)系r3與學生關(guān)系Student按外碼studentNo進行自然連接,并對連接結(jié)果在屬性studentName和r2.score上進行投影,其查詢可表達為:

∏studentName,r2.score(r3?Student)

=∏studentName,r2.score(σr2.studentNo=Student.studentNo(r3×Student))

=∏studentName,r2.score(σr2.studentNo=Student.studentNo((σr1.score<r2.score(r1×r2))

×Student))第三十六頁,共四十七頁,2022年,8月28日studentNocourseNotermscore0701008 AC00107081760703010 AC001 07081920703045

AC001 07081520703045

AC001 08091940802002 AC001 08091980802005 AC001 0910188(b)關(guān)系r2studentNo courseNo termscore0703045 AC001 07081520703045 AC001 0809194(a)關(guān)系r1r1.studentNor1.courseNor1.termr1.scorer2.studentNor2.courseNor2.termr2.score

0703045 AC0010708152 0701008AC00107081 76 0703045 AC0010708152 0703010AC00107081 92 0703045 AC0010708152 0703045AC00108091 94 0703045 AC0010708152

0802002AC00108091 98 0703045 AC0010708152 0802005AC00109101 88 0703045 AC0010809194 0802002AC00108091 98 (c)關(guān)系r3studentNamescore王紅76 李宏冰 92 王紅 94 劉方晨 98 王紅敏 88 (d)最后結(jié)果圖2-19例2.16的θ連接的計算過程Score關(guān)系StudentNo courseNo termscore0701001 CN028 07081 850701001 CS012 07082 880701001 CS015 08091 920701008 AC001 07081 760701008 CN028 07081 860701008 CS012 07082 930701008 CS015 08091 960703010 AC001 07081 920703010 CN028 07081 830703010 CS012 07082 730703045 AC001 07081 520703045 AC001 08091 940703045CN02807081800703045CS01508091820802002 AC001 08091 980802002 CN028 08091 720802002 CS015 09101 850802005 AC001 09101 880802005 CS012 08092 900802005 CS015 09101 87關(guān)系代數(shù)第三十七頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算

除運算例如,需要查找修讀過信息學院開設(shè)的所有課程的學生學號,如何表達查詢?

分析:①查找出修讀過信息學院課程的所有學生

r1=∏studentNo,courseNo(σcourseNoLIKE'CS%'(Score))

②找出信息學院開設(shè)的所有課程

r2=∏courseNo(σcourseNoLIKE'CS%'(Course))

StudentNocourseNo0701001 CS012 0701001 CS015 0701008 CS012 0701008 CS015 0703010 CS012 0703045CS015

0802002 CS015 0802005 CS012 0802005 CS015CourseNo

CS012CS015第三十八頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算(象集的概念見P58)③

比較圖2-20(a)和(b)

,修讀過信息學院開設(shè)的所有課程的學生就是關(guān)系r1中滿足“courseNo列包含關(guān)系r2的所有行”的那些學生。第三十九頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算設(shè)關(guān)系r(R)和s(S),屬性集S是R的子集,即SR,則關(guān)系r÷s是關(guān)系r中滿足下列條件的元組在屬性集R-S上的投影:trr,記x=tr[R-S],則關(guān)系r中屬性集R-S的取值x的象集Sx包含關(guān)系s。記作

r÷s={tr[R-S]∣trr∧sSx}

第四十頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)專門的關(guān)系運算例如,關(guān)系數(shù)據(jù)庫ScoreDB中,求以下結(jié)果

Score÷(∏courseNo(σcourseNo=‘AC001’(Course)))的結(jié)果為:②Score÷(∏courseNo(σcourseNo=‘CN028’(Course)))的結(jié)果為:

StudentNo termscore0701008 07081 760703010 07081 920703045 07081 520703045 08091 940802002 08091 980802005 09101 88StudentNo termscore0701001 07081 850701008 07081 860703010 07081 830703045 07081 80080200208091 72Score關(guān)系StudentNo courseNo termscore0701001 CN028 07081 850701001 CS012 07082 880701001 CS015 08091 920701008 AC001 07081 760701008 CN028 07081 860701008 CS012 07082 930701008 CS015 08091 960703010 AC001 07081 920703010 CN028 07081 830703010 CS012 07082 730703045 AC001 07081 520703045 AC001 08091 940703045CN02807081800703045CS01508091820802002 AC001 08091 980802002 CN028 08091 720802002 CS015 09101 850802005 AC001 09101 880802005 CS012 08092 900802005 CS015 09101 87Score關(guān)系StudentNo courseNo termscore0701001 CN028 07081 850701001 CS012 07082 880701001 CS015 08091 920701008 AC001 07081 760701008 CN028 07081 860701008 CS012 07082 930701008 CS015 08091 960703010 AC001 07081 920703010 CN028 07081 830703010 CS012 07082 730703045 AC001 07081 520703045 AC001 08091 940703045CN02807081800703045CS01508091820802002 AC001 08091 980802002 CN028 08091 720802002 CS015 09101 850802005 AC001 09101 880802005 CS012 08092 900802005 CS015 09101 87第四十一頁,共四十七頁,2022年,8月28日關(guān)系代數(shù)查詢綜合舉例給定一個查詢需求,構(gòu)造其關(guān)系代數(shù)表達式的步驟

明確該查詢涉及到哪些屬性;明確該查詢涉及到哪些關(guān)系;根據(jù)數(shù)據(jù)庫模式導航圖,通過多對一聯(lián)系(或一對多聯(lián)系)把所有涉及的關(guān)系連接起來,每一個多對一聯(liá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

提交評論