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

下載本文檔

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

文檔簡介

1、第第2章章 關(guān)系模型與關(guān)系代數(shù)關(guān)系模型與關(guān)系代數(shù)目目 錄錄 關(guān)系模型關(guān)系模型2.1關(guān)系代數(shù)關(guān)系代數(shù)2.22.1 關(guān)系模型關(guān)系模型n 系統(tǒng)而嚴格地提出關(guān)系模型的是美國系統(tǒng)而嚴格地提出關(guān)系模型的是美國IBM公司的公司的E.F.Coddl 1970年提出關(guān)系數(shù)據(jù)模型年提出關(guān)系數(shù)據(jù)模型 E.F.Codd, “A Relational Model of Data for Large SharedData Banks”, Communication of the ACM,1970n 關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫管理系統(tǒng)是當(dāng)今的主流數(shù)

2、據(jù)庫管理系統(tǒng)。關(guān)系數(shù)據(jù)庫管理系統(tǒng)是當(dāng)今的主流數(shù)據(jù)庫管理系統(tǒng)。n 關(guān)系模型由關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合關(guān)系操作集合和和關(guān)系完整關(guān)系完整性約束性約束三部分組成。三部分組成。2.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 關(guān)系關(guān)系l關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡單,它就是關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡單,它就是二維表二維表,亦稱為,亦稱為關(guān)系關(guān)系 。 l關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫是表的集合,即關(guān)系的集合。是表的集合,即關(guān)系的集合。 l表是一個實體集,一行就是一個表是一個實體集,一行就是一個實體實體,它由共同表示一,它由共同表示一個實體的有個實體的有關(guān)聯(lián)關(guān)聯(lián)的若干的若干屬性屬性的值所構(gòu)成。的值所構(gòu)成。l由于

3、一個表是這種有由于一個表是這種有關(guān)聯(lián)關(guān)聯(lián)的值的集合的值的集合(即行的集合即行的集合),而,而表表這個概念和數(shù)學(xué)上的這個概念和數(shù)學(xué)上的關(guān)系關(guān)系概念密切相關(guān),因此稱為概念密切相關(guān),因此稱為關(guān)關(guān)系模型系模型。l關(guān)系模型中,現(xiàn)實世界的實體以及實體間的各種聯(lián)系都關(guān)系模型中,現(xiàn)實世界的實體以及實體間的各種聯(lián)系都是用是用關(guān)系關(guān)系來表示。來表示。2.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義l域域是一組具有相同數(shù)據(jù)類型的值的集合。是一組具有相同數(shù)據(jù)類型的值的集合。 l笛卡爾積笛卡爾積給定一組域給定一組域D1, D2, , Dn,它們之中可以有相同的域。,它們之中可以有相

4、同的域。D1, D2, , Dn的笛卡爾積為:的笛卡爾積為: D1D2Dn = (d1, d2, , dn) diDi, i=1, 2, , n其中,集合中的每一個元素其中,集合中的每一個元素(d1, d2, , dn)稱為一個稱為一個n元組元組, 簡稱為簡稱為元組元組;元素中的每一個值;元素中的每一個值di稱為一個稱為一個分量分量。若若Di (i=1, 2, , n)為有限集,假設(shè)其為有限集,假設(shè)其基數(shù)基數(shù)為為mi (i=1, 2, , n),則,則D1D2Dn的基數(shù)的基數(shù)M為:為: niimM1舉例:舉例:給定兩個域:給定兩個域: 學(xué)生的姓名集合:學(xué)生的姓名集合:D1 = 李小勇李小勇,

5、劉方晨劉方晨, 王紅敏王紅敏 課程的名稱集合:課程的名稱集合:D2 = 數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論, 操作系統(tǒng)操作系統(tǒng)則則D1, D2的笛卡爾積為:的笛卡爾積為: D1D2= (李小勇李小勇, 數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論), (李小勇李小勇, 操作系統(tǒng)操作系統(tǒng)), (劉方晨劉方晨, 數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論), (劉方晨劉方晨, 操作系統(tǒng)操作系統(tǒng)), (王紅敏王紅敏, 數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論), (王紅敏王紅敏, 操作系統(tǒng)操作系統(tǒng)) 2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 關(guān)系的形式化定義關(guān)系的形式化定義lD1D2Dn的子集稱為在的子集稱為在域域D1, D2, , Dn上的上的關(guān)

6、系關(guān)系,表示為表示為 : r(D1, D2, , Dn) 其中,其中,r表示關(guān)系的名字,表示關(guān)系的名字,n是關(guān)系的是關(guān)系的目或度目或度(degree)。當(dāng)。當(dāng) n=1時,該關(guān)系稱為時,該關(guān)系稱為單元關(guān)系單元關(guān)系;當(dāng);當(dāng)n=2時,稱為時,稱為二元關(guān)系二元關(guān)系。l關(guān)系關(guān)系是笛卡爾積的是笛卡爾積的有限子集有限子集,所以關(guān)系也是一個二維表,所以關(guān)系也是一個二維表, 表的表的每行每行對應(yīng)于關(guān)系的一個對應(yīng)于關(guān)系的一個元組元組,表的,表的每列每列對應(yīng)于關(guān)系的對應(yīng)于關(guān)系的一個一個域域。由于域可以相同,為了區(qū)別就必須給每列起一個。由于域可以相同,為了區(qū)別就必須給每列起一個名字,稱為名字,稱為屬性屬性(attri

7、bute)。n目關(guān)系共有目關(guān)系共有n個屬性。個屬性。 2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)l空值空值(null)是所有可能的是所有可能的域域的一個取值,表明的一個取值,表明值未知值未知或或值不存在值不存在。對于對于學(xué)位學(xué)位的取值域,某員工的的取值域,某員工的學(xué)位學(xué)位為空值為空值null,表示,表示不知道不知道該員工所獲得的該員工所獲得的學(xué)位學(xué)位,或該員工,或該員工沒有獲得沒有獲得學(xué)位學(xué)位;對于對于成績成績的取值域,某學(xué)生的的取值域,某學(xué)生的成績成績?yōu)榭罩禐榭罩祅ull,表示,表示不知道不知道該學(xué)生的該學(xué)生的成績成績,或該學(xué)生,或該學(xué)生沒有沒有成績成績(如沒有參加考試就沒有如沒有參加考試就沒有獲

8、得獲得成績成績)。l關(guān)系關(guān)系的最基本要求:的最基本要求:關(guān)系中的每個屬性的關(guān)系中的每個屬性的域域必須是必須是原子的原子的,即域中的每個值都是,即域中的每個值都是不可再分不可再分的一個完整單元。的一個完整單元。 關(guān)系中的每個關(guān)系中的每個元組元組都是都是可區(qū)分的可區(qū)分的,即存在唯一標識不同元組,即存在唯一標識不同元組的的屬性屬性(集集)碼碼。2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 關(guān)系模式關(guān)系模式l對于一個二維表,有對于一個二維表,有表頭部分表頭部分和和表體部分表體部分:表頭部分表頭部分定義了該表的結(jié)構(gòu)定義了該表的結(jié)構(gòu),即定義了該表由哪些列構(gòu),即定義了該表由哪些列構(gòu)成成(假設(shè)由假設(shè)由n列構(gòu)成列構(gòu)成

9、),每個列的名字和取值范圍等;,每個列的名字和取值范圍等;表體部分表體部分就是所有數(shù)據(jù)行就是所有數(shù)據(jù)行(元組元組)的集合的集合,每一個數(shù)據(jù)行都,每一個數(shù)據(jù)行都是由表頭部分規(guī)定的是由表頭部分規(guī)定的n列有列有關(guān)聯(lián)關(guān)聯(lián)的取值的集合構(gòu)成。的取值的集合構(gòu)成。 l對應(yīng)于關(guān)系數(shù)據(jù)庫,對應(yīng)于關(guān)系數(shù)據(jù)庫,表的每一個數(shù)據(jù)表的每一個數(shù)據(jù)行行對應(yīng)于關(guān)系的一對應(yīng)于關(guān)系的一個個元組元組,表體表體對應(yīng)于對應(yīng)于關(guān)系關(guān)系,關(guān)系是元組的集合,關(guān)系是元組的集合,關(guān)系關(guān)系是是值值的概念;的概念;l表頭部分表頭部分對應(yīng)于對應(yīng)于關(guān)系模式關(guān)系模式,關(guān)系模式關(guān)系模式是是型型的概念,的概念,它定它定義了元組集合的義了元組集合的結(jié)構(gòu)結(jié)構(gòu),即定義

10、了一個元組由哪些屬性構(gòu)即定義了一個元組由哪些屬性構(gòu)成成(假設(shè)由假設(shè)由n個屬性構(gòu)成個屬性構(gòu)成),每個屬性的名字和來自的域等,每個屬性的名字和來自的域等.n本次作業(yè)本次作業(yè)n1:第一章:第一章 1.1, 1.6, 1.10 P43n2:第二章:第二章:2.1,2.3,2.9 P71n下周一課前交下周一課前交2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 關(guān)系模式關(guān)系模式l關(guān)系的描述關(guān)系的描述稱為稱為關(guān)系模式關(guān)系模式(relation schema)。l形式化地表示為:形式化地表示為:r(U, D, DOM, F) r為關(guān)系名,為關(guān)系名,U為組成該關(guān)系的屬性名的集合,為組成該關(guān)系的屬性名的集合,D為屬性集為

11、屬性集U中中 所有屬性所來自的域的集合,所有屬性所來自的域的集合,DOM為屬性向域的映像集合,為屬性向域的映像集合, F為屬性間為屬性間數(shù)據(jù)的依賴關(guān)系數(shù)據(jù)的依賴關(guān)系集合集合(即即體現(xiàn)一個元組的各屬性取值體現(xiàn)一個元組的各屬性取值 之間的之間的“關(guān)聯(lián)關(guān)聯(lián)”性性)。l關(guān)系模式通常被簡記為關(guān)系模式通常被簡記為 :r(U) 或或 r(A1, A2, , An) r為關(guān)系名,為關(guān)系名,U為屬性名的集合為屬性名的集合A1, A2, , An 2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 碼碼l超碼超碼:對于關(guān)系對于關(guān)系r的一個或多個屬性的集合的一個或多個屬性的集合A,如果,如果屬性集屬性集A可以可以唯一地標識唯一

12、地標識關(guān)系關(guān)系r中的一個元組,則稱中的一個元組,則稱屬性集屬性集A為關(guān)系為關(guān)系r的一個的一個超碼超碼 (superkey) 。 l候選碼候選碼:對于關(guān)系對于關(guān)系r的一個或多個屬性的集合的一個或多個屬性的集合A,如,如果屬性集果屬性集A是關(guān)系是關(guān)系r的的超碼超碼,且屬性集,且屬性集A的的任意真子任意真子集集都不能成為關(guān)系都不能成為關(guān)系r的超碼,則稱屬性集的超碼,則稱屬性集A為為候選碼候選碼 (candidate key) 。l主碼主碼:若一個關(guān)系有多個候選碼,則可以選定其中若一個關(guān)系有多個候選碼,則可以選定其中的一個候選碼作為該關(guān)系的的一個候選碼作為該關(guān)系的主碼主碼 。舉例:舉例:Student

13、關(guān)系關(guān)系 studentNo studentName sex birthday speciality 0701001 李小勇李小勇 男男 1990-12-21 計算機計算機 0701008 王王 紅紅 男男 1992-04-26 計算機計算機 0802002 劉方晨劉方晨 女女 1990-11-11 信息系統(tǒng)信息系統(tǒng) 0802005 王紅敏王紅敏 女女 1990-10-01 信息系統(tǒng)信息系統(tǒng) 0703045 王王 紅紅 男男 1992-04-26 會計學(xué)會計學(xué) 0703010 李宏冰李宏冰 女女 1992-03-09 會計學(xué)會計學(xué)超碼?:超碼?:studentNo,studentNo, stu

14、dentName、studentNo, sex、speciality、 studentNo, studentName, speciality、sex?候選碼:候選碼:studentNo 和和 studentName, speciality 與語義有關(guān)與語義有關(guān)主碼:主碼:studentNo2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 碼碼l外碼外碼:設(shè)設(shè)F是關(guān)系是關(guān)系r的一個屬性的一個屬性(或?qū)傩约驅(qū)傩约?,Ks是關(guān)是關(guān)系系s的的主碼主碼。如果。如果F與與Ks相對應(yīng)相對應(yīng)(即關(guān)系即關(guān)系r中屬性中屬性F的取的取值范圍對應(yīng)于關(guān)系值范圍對應(yīng)于關(guān)系s中主碼中主碼Ks的取值范圍的子集的取值范圍的子集),則則

15、稱稱F是關(guān)系是關(guān)系r參照關(guān)系參照關(guān)系s的的外碼外碼(foreign key),簡稱,簡稱F是關(guān)系是關(guān)系r的的外碼外碼。稱關(guān)系稱關(guān)系r為為參照關(guān)系參照關(guān)系,關(guān)系,關(guān)系s為為被參照關(guān)系被參照關(guān)系或或目標關(guān)系目標關(guān)系。r(Kr, F, ) s(Ks, )參照關(guān)系參照關(guān)系 被參照關(guān)系被參照關(guān)系( (目標關(guān)系目標關(guān)系) )圖圖2-3 外碼參照圖外碼參照圖2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)結(jié)構(gòu)n 關(guān)系數(shù)據(jù)庫模式關(guān)系數(shù)據(jù)庫模式l關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫也有也有型型和和值值之分,之分,型型就是關(guān)系數(shù)據(jù)庫模式,就是關(guān)系數(shù)據(jù)庫模式,即它所包含的所有關(guān)系模式的集合;即它所包含的所有關(guān)系模式的集合;值值就是這些關(guān)系模就是這

16、些關(guān)系模式在某一時刻所對應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)式在某一時刻所對應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫據(jù)庫實例實例 。l在實際應(yīng)用中,人們經(jīng)常把在實際應(yīng)用中,人們經(jīng)常把關(guān)系數(shù)據(jù)庫模式關(guān)系數(shù)據(jù)庫模式和和關(guān)系數(shù)據(jù)關(guān)系數(shù)據(jù)庫實例庫實例都籠統(tǒng)地稱為都籠統(tǒng)地稱為關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫。 舉例:舉例:學(xué)生成績管理數(shù)據(jù)庫學(xué)生成績管理數(shù)據(jù)庫ScoreDB的模式的模式 Class( classNo: char(6), className: varchar(30), institute: varchar(30), grade: smallint, classNum: tinyint )Student( stu

17、dentNo: 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:

18、 char(5), score: numeric )說明:說明: 帶帶下劃線下劃線的屬性的屬性(集集)為為主碼主碼,斜體斜體屬性為屬性為外碼外碼。 基本基本數(shù)據(jù)類型數(shù)據(jù)類型請參見請參見3.8.2節(jié)。節(jié)。2.1.2 關(guān)系完整性約束條件關(guān)系完整性約束條件n 實體完整性實體完整性l若屬性集若屬性集A是關(guān)系是關(guān)系r的的主碼主碼,則,則A不能取不能取空值空值null。 例如,關(guān)系例如,關(guān)系Student,由于,由于studentNo是關(guān)系是關(guān)系Student的主的主碼,因此它在任何時候的取值都不能為空值碼,因此它在任何時候的取值都不能為空值null,但其,但其他屬性如他屬性如sex、birthday、s

19、peciality等都可以取空值,表等都可以取空值,表示當(dāng)時該屬性的示當(dāng)時該屬性的值未知值未知或或不存在不存在。 l如果主碼是由若干個屬性的集合構(gòu)成,則要求構(gòu)成主碼如果主碼是由若干個屬性的集合構(gòu)成,則要求構(gòu)成主碼的每一個屬性的值都不能取空值。的每一個屬性的值都不能取空值。 例如,學(xué)生成績管理例如,學(xué)生成績管理數(shù)據(jù)庫數(shù)據(jù)庫ScoreDB中的關(guān)系中的關(guān)系Score,它的主碼是,它的主碼是studentNo, courseNo, term,因此這,因此這3個屬性都不能取空值。個屬性都不能取空值。 關(guān)系完整性約束條件關(guān)系完整性約束條件n 參照完整性參照完整性l若屬性若屬性(或?qū)傩约驅(qū)傩约?F是關(guān)系是

20、關(guān)系r的的外碼外碼,它與關(guān)系,它與關(guān)系s的主碼的主碼Ks相對應(yīng),則對于關(guān)系相對應(yīng),則對于關(guān)系r中的每一個元組在屬性中的每一個元組在屬性F上的取值上的取值要么為空值要么為空值null,要么等于關(guān)系,要么等于關(guān)系s中某個元組的主碼值。中某個元組的主碼值。 關(guān)系完整性約束條件關(guān)系完整性約束條件舉例:舉例:u 實現(xiàn)多對一聯(lián)系的實現(xiàn)多對一聯(lián)系的外碼外碼 學(xué)生成績管理數(shù)據(jù)庫學(xué)生成績管理數(shù)據(jù)庫ScoreDB中,學(xué)生關(guān)系中,學(xué)生關(guān)系Student與班級關(guān)系與班級關(guān)系Class之間存之間存在在多對一多對一的的“歸屬歸屬”聯(lián)系。聯(lián)系。 u實現(xiàn)多對多聯(lián)系的實現(xiàn)多對多聯(lián)系的聯(lián)系關(guān)系聯(lián)系關(guān)系及及外碼外碼 學(xué)生成績管理數(shù)

21、據(jù)庫學(xué)生成績管理數(shù)據(jù)庫ScoreDB中,假設(shè)每一個學(xué)生一個學(xué)期可以選修若干門中,假設(shè)每一個學(xué)生一個學(xué)期可以選修若干門課程,每一門課程同時有若干個學(xué)生選修,那么學(xué)生關(guān)系課程,每一門課程同時有若干個學(xué)生選修,那么學(xué)生關(guān)系Student與課程關(guān)系與課程關(guān)系Course之間存在之間存在多對多多對多的的“選修選修”聯(lián)系,且課程的聯(lián)系,且課程的開課學(xué)期開課學(xué)期term和和修讀成績修讀成績score為為聯(lián)系屬性聯(lián)系屬性。 u 實現(xiàn)關(guān)系內(nèi)部多對一聯(lián)系的實現(xiàn)關(guān)系內(nèi)部多對一聯(lián)系的外碼外碼 學(xué)生成績管理數(shù)據(jù)庫學(xué)生成績管理數(shù)據(jù)庫ScoreDB中,假設(shè)一門課程可能存在先修課程,且關(guān)系中,假設(shè)一門課程可能存在先修課程,且

22、關(guān)系Course中的中的priorCourse屬性用來存放先修課程的課程編號。屬性屬性用來存放先修課程的課程編號。屬性priorCourse是課程關(guān)系是課程關(guān)系Course參照課程關(guān)系參照課程關(guān)系Course的的外碼外碼。 Class( classNo, className, institute, grade, classNum ) Student( studentNo, studentName, sex, birthday, native, nation, classNo )圖圖2-4 實現(xiàn)實現(xiàn)“多對一多對一”聯(lián)系的聯(lián)系的外碼外碼1n Student( studentNo, studentN

23、ame, sex, birthday, native, nation, classNo ) Score( studentNo, courseNo, term, score ) Course( courseNo, courseName, creditHour, courseHour, priorCourse )圖圖2-5 實現(xiàn)實現(xiàn)“多對多多對多”聯(lián)系的聯(lián)系的聯(lián)系關(guān)系聯(lián)系關(guān)系及及外碼外碼mnCourse( courseNo, courseName, creditHour, courseHour, priorCourse )圖圖2-6 實現(xiàn)關(guān)系內(nèi)部多對一聯(lián)系的實現(xiàn)關(guān)系內(nèi)部多對一聯(lián)系的外碼外碼關(guān)系完整

24、性約束條件關(guān)系完整性約束條件n 數(shù)據(jù)庫模式導(dǎo)航圖數(shù)據(jù)庫模式導(dǎo)航圖l一個含有一個含有主碼和外碼依賴主碼和外碼依賴的數(shù)據(jù)庫模式可以通過的數(shù)據(jù)庫模式可以通過模式導(dǎo)模式導(dǎo)航圖航圖來表示。來表示。 關(guān)系完整性約束條件關(guān)系完整性約束條件n 數(shù)據(jù)庫模式導(dǎo)航圖數(shù)據(jù)庫模式導(dǎo)航圖l一個含有一個含有主碼和外碼依賴主碼和外碼依賴的數(shù)據(jù)庫模式可以通過的數(shù)據(jù)庫模式可以通過模式導(dǎo)模式導(dǎo)航圖航圖來表示。來表示。關(guān)系關(guān)系Student與關(guān)系與關(guān)系Class之間存在之間存在多對一多對一的的“歸屬歸屬”聯(lián)系聯(lián)系(一個班一個班由多個學(xué)生組成,一個學(xué)生只能歸屬于某個班由多個學(xué)生組成,一個學(xué)生只能歸屬于某個班),通過外碼,通過外碼cla

25、ssNo實現(xiàn)該聯(lián)系。實現(xiàn)該聯(lián)系。 關(guān)系關(guān)系Course與關(guān)系與關(guān)系Student之間存在之間存在多對多多對多的的“選修選修”聯(lián)系。聯(lián)系。 關(guān)系關(guān)系Score的主碼是的主碼是studentNo, courseNo, term,顯然同一個學(xué),顯然同一個學(xué)生在同一個學(xué)期不允許修讀同一門課程多次。生在同一個學(xué)期不允許修讀同一門課程多次。 關(guān)系關(guān)系Course的的外碼外碼priorCourse參照參照本關(guān)系的本關(guān)系的主碼主碼courseNo。關(guān)系完整性約束條件關(guān)系完整性約束條件n 數(shù)據(jù)庫模式導(dǎo)航圖數(shù)據(jù)庫模式導(dǎo)航圖 開課班號開課班號開課班號開課班號聘用日期聘用日期volumehireDate關(guān)系完整性約束

26、條件關(guān)系完整性約束條件n 數(shù)據(jù)庫模式導(dǎo)航圖數(shù)據(jù)庫模式導(dǎo)航圖l 一個含有一個含有主碼和外碼依賴主碼和外碼依賴的數(shù)據(jù)庫模式可以通過的數(shù)據(jù)庫模式可以通過模式導(dǎo)航圖模式導(dǎo)航圖來表示來表示關(guān)系關(guān)系Student與關(guān)系與關(guān)系Class之間、關(guān)系之間、關(guān)系Class與關(guān)系與關(guān)系Institute之間、關(guān)系之間、關(guān)系Teacher與關(guān)系與關(guān)系Institute之間都存在之間都存在多對一多對一的的“歸屬歸屬”聯(lián)系聯(lián)系 。關(guān)系關(guān)系Course的的外碼外碼priorCourse參照參照本關(guān)系的本關(guān)系的主碼主碼courseNo。關(guān)系關(guān)系CourseClass與關(guān)系與關(guān)系Course之間存在之間存在多對一多對一的的“開

27、課開課”聯(lián)系聯(lián)系(每個每個學(xué)期一門課程可能開設(shè)多個教學(xué)班,一個教學(xué)班只講授一門課程學(xué)期一門課程可能開設(shè)多個教學(xué)班,一個教學(xué)班只講授一門課程)。 關(guān)系關(guān)系CourseClass與關(guān)系與關(guān)系Classroom之間存在之間存在多對一多對一的的“上課上課”聯(lián)系聯(lián)系 關(guān)系關(guān)系CourseClass與關(guān)系與關(guān)系Teacher之間存在之間存在多對一多對一的的“授課授課”聯(lián)系聯(lián)系 關(guān)系關(guān)系CourseClass與關(guān)系與關(guān)系Student之間存在之間存在多對多多對多的的“選課選課”聯(lián)系聯(lián)系 。關(guān)系關(guān)系SC的主碼是的主碼是cClassNo, studentNo,顯然同一個學(xué)生不允許選修,顯然同一個學(xué)生不允許選修同

28、一個教學(xué)班的課程多次。同一個教學(xué)班的課程多次。開課開課班號班號開課開課班號班號聘用聘用日期日期volumehireDate關(guān)系完整性約束條件關(guān)系完整性約束條件n 用戶自定義完整性用戶自定義完整性l任何關(guān)系數(shù)據(jù)庫管理系統(tǒng)都應(yīng)該支持任何關(guān)系數(shù)據(jù)庫管理系統(tǒng)都應(yīng)該支持實體完整性實體完整性和和參照參照完整性完整性 。l用戶定義的完整性用戶定義的完整性就是針對某一具體應(yīng)用要求來定義的就是針對某一具體應(yīng)用要求來定義的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求的語義要求。例如,例如,限制關(guān)系中某些屬性的限制關(guān)系中某些屬性的取值取值要符合要符合業(yè)務(wù)

29、語義業(yè)務(wù)語義要求。要求。 限制關(guān)系中某些屬性的限制關(guān)系中某些屬性的取值之間取值之間需要滿足一定的需要滿足一定的邏輯關(guān)邏輯關(guān)系系。 限制關(guān)系中某屬性集上的限制關(guān)系中某屬性集上的取值必須唯一取值必須唯一。 關(guān)系操作關(guān)系操作n 關(guān)系操作關(guān)系操作l關(guān)系操作的特點是關(guān)系操作的特點是集合集合操作方式操作方式,即操作的對象和結(jié)果都,即操作的對象和結(jié)果都是集合。這種操作方式也稱為是集合。這種操作方式也稱為一次一個一次一個集合集合的方式的方式。相應(yīng)。相應(yīng)地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為地,非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式則為一次一個一次一個記錄記錄的的方式方式。l關(guān)系模型中的關(guān)系操作有關(guān)系模型中的關(guān)系操作有查詢

30、操作查詢操作和和更新操作更新操作(插入、刪除插入、刪除和修改和修改)兩大類兩大類 。l查詢操作是關(guān)系操作中最主要的部分。查詢操作又可以分查詢操作是關(guān)系操作中最主要的部分。查詢操作又可以分為為選擇選擇(select)、投影、投影(project)、連接、連接(join)、除、除(divide)、 并并(union)、交、交(intersection)、差、差(except)、笛卡爾積、笛卡爾積等。等。 關(guān)系操作關(guān)系操作n 關(guān)系操作能力可用兩種方式來表示關(guān)系操作能力可用兩種方式來表示 代數(shù)代數(shù)方式方式和和邏輯邏輯方式方式。l關(guān)系代數(shù)關(guān)系代數(shù)是用是用代數(shù)代數(shù)方式方式表達的關(guān)系查詢語言表達的關(guān)系查詢語

31、言。l關(guān)系演算關(guān)系演算是用是用邏輯邏輯方式方式表達的關(guān)系查詢語言。表達的關(guān)系查詢語言。l對于對于關(guān)系代數(shù)關(guān)系代數(shù)、關(guān)系演算關(guān)系演算均是抽象的查詢語言,均是抽象的查詢語言,在表達能在表達能力上是完全等價的力上是完全等價的。目目 錄錄 關(guān)系模型關(guān)系模型2.1關(guān)系代數(shù)關(guān)系代數(shù)2.2關(guān)系代數(shù)關(guān)系代數(shù)n 關(guān)系代數(shù)關(guān)系代數(shù)l關(guān)系代數(shù)是通過關(guān)系代數(shù)是通過關(guān)系代數(shù)運算關(guān)系代數(shù)運算構(gòu)成的表達式來表達查詢。構(gòu)成的表達式來表達查詢。l基本的關(guān)系代數(shù)運算有基本的關(guān)系代數(shù)運算有選擇、投影、集合并、集合差、笛選擇、投影、集合并、集合差、笛卡爾積卡爾積和和更名更名等。等。 l關(guān)系代數(shù)運算是以一個或兩個關(guān)系作為輸入關(guān)系代數(shù)運

32、算是以一個或兩個關(guān)系作為輸入(即運算對象即運算對象)產(chǎn)生一個新的關(guān)系作為結(jié)果。產(chǎn)生一個新的關(guān)系作為結(jié)果。 l切記關(guān)系代數(shù)運算也是集合運算,下面分為傳統(tǒng)集合運算切記關(guān)系代數(shù)運算也是集合運算,下面分為傳統(tǒng)集合運算和專門的關(guān)系運算和專門的關(guān)系運算關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運算傳統(tǒng)的集合運算l前提假設(shè):前提假設(shè):關(guān)系關(guān)系r和關(guān)系和關(guān)系s具有相同的具有相同的n個屬性,且相應(yīng)個屬性,且相應(yīng)的屬性取自同一個域,的屬性取自同一個域,即兩個關(guān)系的模式或結(jié)構(gòu)相同即兩個關(guān)系的模式或結(jié)構(gòu)相同。t是元組變量,是元組變量,tr表示表示t是是r的一個元組。的一個元組。 l 并運算并運算 關(guān)系關(guān)系r與關(guān)系與關(guān)系s的并記作

33、的并記作 :rs = t t rt s 其結(jié)果關(guān)系仍為其結(jié)果關(guān)系仍為n目關(guān)系,由屬于目關(guān)系,由屬于r或?qū)儆诨驅(qū)儆趕的所有元組的所有元組 組成。組成。并運算并運算ABC367257723443RABC345723SABC367257723443345RS 關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運算傳統(tǒng)的集合運算l 差差 關(guān)系關(guān)系r與關(guān)系與關(guān)系s的差記作的差記作 :r- -s = t t rt s 其結(jié)果關(guān)系仍為其結(jié)果關(guān)系仍為n目關(guān)系,由屬于目關(guān)系,由屬于r而不屬于而不屬于s的所有元組的所有元組組成。組成。l 交交 關(guān)系關(guān)系r與關(guān)系與關(guān)系s的交記作:的交記作:rs = t t rt s 其結(jié)果關(guān)系仍為其結(jié)

34、果關(guān)系仍為n目關(guān)系,由既屬于目關(guān)系,由既屬于r又屬于又屬于s的所有元組的所有元組組成。關(guān)系的交可以通過差來表達,即組成。關(guān)系的交可以通過差來表達,即rs = r- -(r- -s)。 差運算差運算ABC367257723443RABC345723SABC367257443RS ABC345SR 關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運算傳統(tǒng)的集合運算l 笛卡爾積笛卡爾積 兩個分別為兩個分別為n目和目和m目的關(guān)系目的關(guān)系r和和s的笛卡爾積是一個的笛卡爾積是一個n+m目元組的集合。目元組的集合。 元組的前元組的前n列是關(guān)系列是關(guān)系r的一個元組,后的一個元組,后m列是關(guān)系列是關(guān)系s的一個的一個元組元組若關(guān)系

35、若關(guān)系r有有kr個元組,關(guān)系個元組,關(guān)系s有有ks個元組,則關(guān)系個元組,則關(guān)系r和和s的笛的笛卡爾積有卡爾積有krks個元組。記作個元組。記作 : rs = trts tr rts s 笛卡爾積運算笛卡爾積運算AB12rCD10102010EaabbsAB11112222CD 1010201010102010Eaabbaabbr x s成績管理數(shù)據(jù)庫成績管理數(shù)據(jù)庫ScoreDB的實例數(shù)據(jù)的實例數(shù)據(jù)(P58) l關(guān)系關(guān)系Student、Course和和Score可分別描述為:可分別描述為:Student(學(xué)號學(xué)號,姓名,性別,出生日期,所學(xué)專業(yè),姓名,性別,出生日期,所學(xué)專業(yè))Course(課程

36、號課程號,課程名稱,學(xué)時,學(xué)分,課程名稱,學(xué)時,學(xué)分)Score(學(xué)號學(xué)號,課程號課程號,學(xué)期,成績,學(xué)期,成績)l關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿足一定的規(guī)范條件。足一定的規(guī)范條件。l最基本的規(guī)范條件是:最基本的規(guī)范條件是:關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項,即關(guān)系的每一個分量必須是一個不可分的數(shù)據(jù)項,即不允許不允許表中有表表中有表 Student關(guān)系關(guān)系StudentNo StudentName sex birthday native nation classNo 0701001 李小勇李小勇 男男 1990-12-21

37、 南昌南昌 漢族漢族 CS0701 0701008 王王 紅紅 男男 1992-04-26 上海上海 漢族漢族 CS0701 0703010 李宏冰李宏冰 女女 1992-03-09 太原太原 蒙古族蒙古族 AC0703 0703045 王王 紅紅 男男 1992-04-26 北京北京 漢族漢族 AC0703 0802002 劉方晨劉方晨 女女 1990-11-11 南昌南昌 傣族傣族 IS0802 0802005 王紅敏王紅敏 女女 1990-10-01 上海上海 蒙古族蒙古族 IS0802Course關(guān)系關(guān)系CourseNoCourseName creditHour courseHour

38、priorCourseAC001 基礎(chǔ)會計基礎(chǔ)會計 48 3 nullCN028大學(xué)語文大學(xué)語文 48 3 nulCS012操作系統(tǒng)操作系統(tǒng) 80 5 nullCS015 數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng) 64 4 CS012Score關(guān)系關(guān)系StudentNo courseNoterm score0701001CN02807081850701001CS01207082880701001CS01508091920701008AC00107081760701008CN02807081860701008CS01207082930701008CS01508091960703010AC00107081920703

39、010CN02807081830703010CS01207082730703045AC00107081520703045AC00108091940703045 CN028 07081 800703045 CS015 08091 820802002AC00108091980802002CN02808091720802002CS01509101850802005AC00109101880802005CS01208092900802005CS0150910187Class關(guān)系關(guān)系ClassNoClassName instiute grade ClassNumAC0703會計學(xué)會計學(xué)07(3)班班 會

40、計學(xué)院會計學(xué)院 2007 46CS0701計算機計算機07(1)班班 信息學(xué)院信息學(xué)院 2007 48IS0802信息系統(tǒng)信息系統(tǒng)08(2)班班 信息學(xué)院信息學(xué)院 2008 43關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運算傳統(tǒng)的集合運算l 對于數(shù)據(jù)庫對于數(shù)據(jù)庫ScoreDB,笛卡爾積,笛卡爾積ClassCourse的結(jié)果關(guān)系為:的結(jié)果關(guān)系為: 什么用?什么用?RXS89數(shù)學(xué)張軍86數(shù)學(xué)王紅93物理張軍成績課程姓名R89數(shù)學(xué)張軍86數(shù)學(xué)王紅93物理張軍成績課程姓名S什么用?什么用?關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l 選擇選擇 選擇操作是在關(guān)系選擇操作是在關(guān)系r中查找滿足給定中查找滿足給定謂

41、詞謂詞(即選擇條件即選擇條件)的的所有元組,記作:所有元組,記作: P (r) = t t rP(t) P表示謂詞表示謂詞(即選擇條件即選擇條件),它是一個邏輯表達式,取值為,它是一個邏輯表達式,取值為“真真”或或“假假”。 關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l 選擇選擇u 例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,查找中,查找2007級級的所有班級情況的所有班級情況 grade=2007(Class) ClassNo ClassName instiute grade ClassNumAC0703 會計學(xué)會計學(xué)08(3)班班 會計學(xué)院會計學(xué)院 2007 46CS0701 計算

42、機計算機07(1)班班 信息學(xué)院信息學(xué)院 2007 48u 例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,查找所有太原出生中,查找所有太原出生 的的女學(xué)生女學(xué)生情況情況 ? native太原太原sex=女女(Student)StudentNo StudentName sex birthday native nation classNo 0703010 李宏冰李宏冰 女女 1992-03-09 太原太原 蒙古族蒙古族 AC0703Class關(guān)系關(guān)系ClassNoClassName instiute grade ClassNumAC0703會計學(xué)會計學(xué)07(3)班班 會計學(xué)院會計學(xué)院 2007 4

43、6CS0701計算機計算機07(1)班班 信息學(xué)院信息學(xué)院 2007 48IS0802信息系統(tǒng)信息系統(tǒng)08(2)班班 信息學(xué)院信息學(xué)院 2008 43關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l 投影投影 關(guān)系是一個二維表,對它的操作可以從關(guān)系是一個二維表,對它的操作可以從水平水平(行行)的角度進的角度進行,即行,即選擇操作選擇操作;也可以從;也可以從縱向縱向(列列)的角度進行,即的角度進行,即投影投影操作操作。 關(guān)系關(guān)系r上的投影是從上的投影是從r中選擇出若干屬性列組成新的關(guān)系。中選擇出若干屬性列組成新的關(guān)系。記作:記作: A(r) = tA t r A為關(guān)系為關(guān)系r的屬性集合。的屬性

44、集合。 關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l 投影投影u 例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,查找所有學(xué)生的中,查找所有學(xué)生的姓名姓名和和民族民族 studentName, nation(Student) u 例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,中,查找所有查找所有“蒙古族蒙古族”學(xué)生的學(xué)生的 姓名姓名和和籍貫籍貫 StudentName nation 李小勇李小勇 漢族漢族 王紅王紅 漢族漢族 王宏冰王宏冰 蒙古族蒙古族 劉方晨劉方晨 傣族傣族 王紅敏王紅敏 蒙古族蒙古族StudentName native 王宏冰王宏冰 太原太原 王紅敏王紅敏 上海上海st

45、udentName, native(nation=蒙古族蒙古族(Student)Student關(guān)系關(guān)系StudentNo StudentName sex birthday native nation classNo 0701001 李小勇李小勇 男男 1990-12-21 南昌南昌 漢族漢族 CS0701 0701008 王王 紅紅 男男 1992-04-26 上海上海 漢族漢族 CS0701 0703010 李宏冰李宏冰 女女 1992-03-09 太原太原 蒙古族蒙古族 AC0703 0703045 王王 紅紅 男男 1992-04-26 北京北京 漢族漢族 AC0703 0802002

46、劉方晨劉方晨 女女 1990-11-11 南昌南昌 傣族傣族 IS0802 0802005 王紅敏王紅敏 女女 1990-10-01 上海上海 蒙古族蒙古族 IS0802關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l 連接連接u 連接也稱為連接也稱為連接連接。記為。記為A op B,其中,其中A、B分別為關(guān)系分別為關(guān)系r和和s中的度數(shù)相等且可比的連接屬性集,中的度數(shù)相等且可比的連接屬性集,op為比較運算符。為比較運算符。 連接連接是從兩個關(guān)系的笛卡爾積中選取是從兩個關(guān)系的笛卡爾積中選取連接屬性間滿足謂詞連接屬性間滿足謂詞的所有元組的所有元組。記作。記作 : r s = trts tr rt

47、s s(r.A op s.B) u連接連接運算就是從關(guān)系運算就是從關(guān)系r和和s的笛卡爾積的笛卡爾積rs中,選取中,選取r關(guān)系關(guān)系在在A屬性集上的值與屬性集上的值與s關(guān)系在關(guān)系在B屬性集上的值屬性集上的值滿足連接謂詞滿足連接謂詞的所有元組的所有元組,即,即 r s = )(sr)(sr關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l 連接連接u連接運算中有兩種最常用、最重要的連接,一種是連接運算中有兩種最常用、最重要的連接,一種是等值等值連接連接(equijoin),另一種是另一種是自然連接自然連接(natural join)。為為等等值比較謂詞值比較謂詞的連接運算稱為的連接運算稱為等值連接等

48、值連接。 u自然連接自然連接是一種是一種特殊的等值連接特殊的等值連接,它要求兩個參與連接,它要求兩個參與連接的關(guān)系具有的關(guān)系具有公共的屬性集公共的屬性集,并在這個公共屬性集上進行,并在這個公共屬性集上進行等值連接等值連接;同時,還要求將連接結(jié)果中的;同時,還要求將連接結(jié)果中的重復(fù)屬性列去重復(fù)屬性列去除掉除掉,即在公共屬性集中的列,即在公共屬性集中的列只保留一次只保留一次。 )(sr關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運算專門的關(guān)系運算l例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,查找所有中,查找所有2008級級的的“蒙蒙古族古族”學(xué)生的學(xué)生的姓名姓名 StudentName 王紅敏王紅敏 分析:分

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

50、為:最后的查詢可表達為: studentName(nation=蒙古族蒙古族(Student) grade=2008(Class) studentName(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(natio

51、n=蒙古族蒙古族grade=2008Student.classNo=Class.classNo(StudentClass) =studentName(nation=蒙古族蒙古族grade=2008(Student.classNo=Class.classNo(StudentClass) =studentName(nation=蒙古族蒙古族grade=2008(Student Class) 關(guān)系代數(shù)關(guān)系代數(shù)關(guān)系代數(shù)關(guān)系代數(shù)l 例如,在數(shù)據(jù)庫例如,在數(shù)據(jù)庫ScoreDB中,查找課程號為中,查找課程號為“AC001”課程課程的考試的考試中比中比學(xué)號為學(xué)號為“0703045”的學(xué)生的學(xué)生考得更好考得更好

52、的所有學(xué)生的的所有學(xué)生的姓名姓名和和成績成績。 分析:分析: 找出學(xué)號為找出學(xué)號為“0703045”的學(xué)生在課程號為的學(xué)生在課程號為“AC001”的課的課 程中的成程中的成績元組績元組 (結(jié)果關(guān)系記為結(jié)果關(guān)系記為r1),可表達為可表達為:(studentNo=0703045courseNo=AC001(Score) ) AS r1 找出選修了課程號為找出選修了課程號為“AC001”課程的所有學(xué)生的成績元課程的所有學(xué)生的成績元 組組 (結(jié)果關(guān)系結(jié)果關(guān)系 記為記為r2) ,其查詢可表達為:其查詢可表達為:(courseNo=AC001(Score) ) AS r2 將關(guān)系將關(guān)系r1與關(guān)系與關(guān)系r2

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

54、tNo(r3Student) = studentName, r2.score(r2.studentNo=Student.studentNo(r1.scorer2.score(r1r2) Student)studentNo courseNo term score0701008 AC001 07081 760703010 AC001 07081 920703045 AC001 07081 520703045 AC001 08091 940802002 AC001 08091 980802005 AC001 09101 88 (b) 關(guān)系關(guān)系r2studentNo courseNo term sco

55、re0703045 AC001 07081 520703045 AC001 08091 94 (a) 關(guān)系關(guān)系r1r1.studentNo r1.courseNo r1.term r1.score r2.studentNo r2.courseNo r2.term r2.score0703045 AC001 07081 52 0701008 AC001 07081760703045 AC001 07081 52 0703010 AC001 07081920703045 AC001 07081 52 0703045 AC001 08091940703045 AC001 07081 52 08020

56、02 AC001 08091980703045 AC001 07081 52 0802005 AC001 09101880703045 AC001 08091 94 0802002 AC001 0809198 (c) 關(guān)系關(guān)系r3studentName score王王 紅紅 76李宏冰李宏冰 92王王 紅紅 94劉方晨劉方晨 98王紅敏王紅敏 88 (d) 最后結(jié)果最后結(jié)果圖圖2-19 例例2.16的的連接的連接的計算過程計算過程Score關(guān)系關(guān)系StudentNo courseNoterm score0701001CN02807081850701001CS01207082880701001C

57、S01508091920701008AC00107081760701008CN02807081860701008CS01207082930701008CS01508091960703010AC00107081920703010CN02807081830703010CS01207082730703045AC00107081520703045AC00108091940703045 CN028 07081 800703045 CS015 08091 820802002AC00108091980802002CN02808091720802002CS01509101850802005AC00109101

58、880802005CS01208092900802005CS0150910187關(guān)系代數(shù)關(guān)系代數(shù)外連接外連接(outer join)l例:列出老師的有關(guān)信息,包括姓名、工資、所教授的課程例:列出老師的有關(guān)信息,包括姓名、工資、所教授的課程P# ,PN , SAL , C# , CN(PROF) PC C)500李三P04600700800SAL孫立P03錢廣P02趙明P01PNP#化學(xué)C03數(shù)學(xué)C02物理C01CNC#P04C02P02C02P01C01P#C#數(shù)學(xué)C02500李三P04數(shù)學(xué)C02700錢廣P02物理C01800趙明P01CNC#SALPNP#問題:有關(guān)問題:有關(guān)P03號 職

59、工 的 姓 名號 職 工 的 姓 名和 工 資 信 息 沒和 工 資 信 息 沒有顯示出來有顯示出來外連接外連接n 外連接外連接l為避免自然連接時因失配而發(fā)生的信息丟失,可以假定往為避免自然連接時因失配而發(fā)生的信息丟失,可以假定往參與連接的一方表中附加一個取值全為空值的行,它和參參與連接的一方表中附加一個取值全為空值的行,它和參與連接的另一方表中的任何一個未匹配上的元組都能匹配,與連接的另一方表中的任何一個未匹配上的元組都能匹配,稱之為稱之為外連接外連接外連接外連接 = 自然連接自然連接 + 失配的元組失配的元組l外連接的形式:左外連接、右外連接、全外連接外連接的形式:左外連接、右外連接、全外

60、連接 左外連接左外連接 = 自然連接自然連接 + 左側(cè)表中失配的元組左側(cè)表中失配的元組右外連接右外連接 = 自然連接自然連接 + 右側(cè)表中失配的元組右側(cè)表中失配的元組全外連接全外連接 = 自然連接自然連接 + 兩側(cè)表中失配的元組兩側(cè)表中失配的元組外連接外連接500李三P04600700800SAL孫立P03錢廣P02趙明P01PNP#化學(xué)C03數(shù)學(xué)C02物理C01CNC#P04C02P02C02P01C01P#C#數(shù)學(xué)C02500李三P04數(shù)學(xué)C02700錢廣P02物理C01800趙明P01CNC#SALPNP#所有老師的信息所有老師的信息P03 孫立 600nullnull外連接外連接500

溫馨提示

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

最新文檔

評論

0/150

提交評論