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

下載本文檔

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

文檔簡(jiǎn)介

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)而嚴(yán)格地提出關(guān)系模型的是美國(guó)系統(tǒng)而嚴(yán)格地提出關(guān)系模型的是美國(guó)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ù)庫(kù)系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫(kù)系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是支持關(guān)系數(shù)據(jù)模型的數(shù)據(jù)庫(kù)系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)是當(dāng)今的主流數(shù)

2、據(jù)庫(kù)管理系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)是當(dāng)今的主流數(shù)據(jù)庫(kù)管理系統(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)非常簡(jiǎn)單,它就是關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單,它就是二維表二維表,亦稱為,亦稱為關(guān)系關(guān)系 。 l關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)是表的集合,即關(guān)系的集合。是表的集合,即關(guān)系的集合。 l表是一個(gè)實(shí)體集,一行就是一個(gè)表是一個(gè)實(shí)體集,一行就是一個(gè)實(shí)體實(shí)體,它由共同表示一,它由共同表示一個(gè)實(shí)體的有個(gè)實(shí)體的有關(guān)聯(lián)關(guān)聯(lián)的若干的若干屬性屬性的值所構(gòu)成。的值所構(gòu)成。l由于

3、一個(gè)表是這種有由于一個(gè)表是這種有關(guān)聯(lián)關(guān)聯(lián)的值的集合的值的集合(即行的集合即行的集合),而,而表表這個(gè)概念和數(shù)學(xué)上的這個(gè)概念和數(shù)學(xué)上的關(guān)系關(guān)系概念密切相關(guān),因此稱為概念密切相關(guān),因此稱為關(guān)關(guān)系模型系模型。l關(guān)系模型中,現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(lián)系都關(guān)系模型中,現(xiàn)實(shí)世界的實(shí)體以及實(shí)體間的各種聯(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其中,集合中的每一個(gè)元素其中,集合中的每一個(gè)元素(d1, d2, , dn)稱為一個(gè)稱為一個(gè)n元組元組, 簡(jiǎn)稱為簡(jiǎn)稱為元組元組;元素中的每一個(gè)值;元素中的每一個(gè)值di稱為一個(gè)稱為一個(gè)分量分量。若若Di (i=1, 2, , n)為有限集,假設(shè)其為有限集,假設(shè)其基數(shù)基數(shù)為為mi (i=1, 2, , n),則,則D1D2Dn的基數(shù)的基數(shù)M為:為: niimM1舉例:舉例:給定兩個(gè)域:給定兩個(gè)域: 學(xué)生的姓名集合:學(xué)生的姓名集合:D1 = 李小勇李小勇,

5、劉方晨劉方晨, 王紅敏王紅敏 課程的名稱集合:課程的名稱集合:D2 = 數(shù)據(jù)庫(kù)系統(tǒng)概論數(shù)據(jù)庫(kù)系統(tǒng)概論, 操作系統(tǒng)操作系統(tǒng)則則D1, D2的笛卡爾積為:的笛卡爾積為: D1D2= (李小勇李小勇, 數(shù)據(jù)庫(kù)系統(tǒng)概論數(shù)據(jù)庫(kù)系統(tǒng)概論), (李小勇李小勇, 操作系統(tǒng)操作系統(tǒng)), (劉方晨劉方晨, 數(shù)據(jù)庫(kù)系統(tǒng)概論數(shù)據(jù)庫(kù)系統(tǒng)概論), (劉方晨劉方晨, 操作系統(tǒng)操作系統(tǒng)), (王紅敏王紅敏, 數(shù)據(jù)庫(kù)系統(tǒng)概論數(shù)據(jù)庫(kù)系統(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時(shí),該關(guān)系稱為時(shí),該關(guān)系稱為單元關(guān)系單元關(guān)系;當(dāng);當(dāng)n=2時(shí),稱為時(shí),稱為二元關(guān)系二元關(guān)系。l關(guān)系關(guān)系是笛卡爾積的是笛卡爾積的有限子集有限子集,所以關(guān)系也是一個(gè)二維表,所以關(guān)系也是一個(gè)二維表, 表的表的每行每行對(duì)應(yīng)于關(guān)系的一個(gè)對(duì)應(yīng)于關(guān)系的一個(gè)元組元組,表的,表的每列每列對(duì)應(yīng)于關(guān)系的對(duì)應(yīng)于關(guān)系的一個(gè)一個(gè)域域。由于域可以相同,為了區(qū)別就必須給每列起一個(gè)。由于域可以相同,為了區(qū)別就必須給每列起一個(gè)名字,稱為名字,稱為屬性屬性(attri

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

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

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

10、了一個(gè)元組由哪些屬性構(gòu)即定義了一個(gè)元組由哪些屬性構(gòu)成成(假設(shè)由假設(shè)由n個(gè)屬性構(gòu)成個(gè)屬性構(gòu)成),每個(gè)屬性的名字和來自的域等,每個(gè)屬性的名字和來自的域等.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)一個(gè)元組的各屬性取值體現(xiàn)一個(gè)元組的各屬性取值 之間的之間的“關(guān)聯(lián)關(guān)聯(lián)”性性)。l關(guān)系模式通常被簡(jiǎn)記為關(guān)系模式通常被簡(jiǎ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超碼超碼:對(duì)于關(guān)系對(duì)于關(guān)系r的一個(gè)或多個(gè)屬性的集合的一個(gè)或多個(gè)屬性的集合A,如果,如果屬性集屬性集A可以可以唯一地標(biāo)識(shí)唯一

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

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

14、dentName、studentNo, sex、speciality、 studentNo, studentName, speciality、sex?候選碼:候選碼:studentNo 和和 studentName, speciality 與語(yǔ)義有關(guān)與語(yǔ)義有關(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的一個(gè)屬性的一個(gè)屬性(或?qū)傩约驅(qū)傩约?,Ks是關(guān)是關(guān)系系s的的主碼主碼。如果。如果F與與Ks相對(duì)應(yīng)相對(duì)應(yīng)(即關(guān)系即關(guān)系r中屬性中屬性F的取的取值范圍對(duì)應(yīng)于關(guān)系值范圍對(duì)應(yīng)于關(guān)系s中主碼中主碼Ks的取值范圍的子集的取值范圍的子集),則則

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

16、些關(guān)系模式在某一時(shí)刻所對(duì)應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)式在某一時(shí)刻所對(duì)應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫(kù)據(jù)庫(kù)實(shí)例實(shí)例 。l在實(shí)際應(yīng)用中,人們經(jīng)常把在實(shí)際應(yīng)用中,人們經(jīng)常把關(guān)系數(shù)據(jù)庫(kù)模式關(guān)系數(shù)據(jù)庫(kù)模式和和關(guān)系數(shù)據(jù)關(guān)系數(shù)據(jù)庫(kù)實(shí)例庫(kù)實(shí)例都籠統(tǒng)地稱為都籠統(tǒng)地稱為關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)。 舉例:舉例:學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)學(xué)生成績(jī)管理數(shù)據(jù)庫(kù)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ù)類型請(qǐng)參見請(qǐng)參見3.8.2節(jié)。節(jié)。2.1.2 關(guān)系完整性約束條件關(guān)系完整性約束條件n 實(shí)體完整性實(shí)體完整性l若屬性集若屬性集A是關(guān)系是關(guān)系r的的主碼主碼,則,則A不能取不能取空值空值null。 例如,關(guān)系例如,關(guān)系Student,由于,由于studentNo是關(guān)系是關(guān)系Student的主的主碼,因此它在任何時(shí)候的取值都不能為空值碼,因此它在任何時(shí)候的取值都不能為空值null,但其,但其他屬性如他屬性如sex、birthday、s

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

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

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

22、關(guān)系Course中的中的priorCourse屬性用來存放先修課程的課程編號(hào)。屬性屬性用來存放先修課程的課程編號(hào)。屬性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 實(shí)現(xiàn)實(shí)現(xiàn)“多對(duì)一多對(duì)一”聯(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 實(shí)現(xiàn)實(shí)現(xiàn)“多對(duì)多多對(duì)多”聯(lián)系的聯(lián)系的聯(lián)系關(guān)系聯(lián)系關(guān)系及及外碼外碼mnCourse( courseNo, courseName, creditHour, courseHour, priorCourse )圖圖2-6 實(shí)現(xiàn)關(guān)系內(nèi)部多對(duì)一聯(lián)系的實(shí)現(xiàn)關(guān)系內(nèi)部多對(duì)一聯(lián)系的外碼外碼關(guān)系完整

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

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

26、條件關(guān)系完整性約束條件n 數(shù)據(jù)庫(kù)模式導(dǎo)航圖數(shù)據(jù)庫(kù)模式導(dǎo)航圖l 一個(gè)含有一個(gè)含有主碼和外碼依賴主碼和外碼依賴的數(shù)據(jù)庫(kù)模式可以通過的數(shù)據(jù)庫(kù)模式可以通過模式導(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之間都存在之間都存在多對(duì)一多對(duì)一的的“歸屬歸屬”聯(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之間存在之間存在多對(duì)一多對(duì)一的的“開

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

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

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

31、言。l關(guān)系演算關(guān)系演算是用是用邏輯邏輯方式方式表達(dá)的關(guān)系查詢語(yǔ)言。表達(dá)的關(guān)系查詢語(yǔ)言。l對(duì)于對(duì)于關(guān)系代數(shù)關(guān)系代數(shù)、關(guān)系演算關(guān)系演算均是抽象的查詢語(yǔ)言,均是抽象的查詢語(yǔ)言,在表達(dá)能在表達(dá)能力上是完全等價(jià)的力上是完全等價(jià)的。目目 錄錄 關(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ù)運(yùn)算關(guān)系代數(shù)運(yùn)算構(gòu)成的表達(dá)式來表達(dá)查詢。構(gòu)成的表達(dá)式來表達(dá)查詢。l基本的關(guān)系代數(shù)運(yùn)算有基本的關(guān)系代數(shù)運(yùn)算有選擇、投影、集合并、集合差、笛選擇、投影、集合并、集合差、笛卡爾積卡爾積和和更名更名等。等。 l關(guān)系代數(shù)運(yùn)算是以一個(gè)或兩個(gè)關(guān)系作為輸入關(guān)系代數(shù)運(yùn)

32、算是以一個(gè)或兩個(gè)關(guān)系作為輸入(即運(yùn)算對(duì)象即運(yùn)算對(duì)象)產(chǎn)生一個(gè)新的關(guān)系作為結(jié)果。產(chǎn)生一個(gè)新的關(guān)系作為結(jié)果。 l切記關(guān)系代數(shù)運(yùn)算也是集合運(yùn)算,下面分為傳統(tǒng)集合運(yùn)算切記關(guān)系代數(shù)運(yùn)算也是集合運(yùn)算,下面分為傳統(tǒng)集合運(yùn)算和專門的關(guān)系運(yùn)算和專門的關(guān)系運(yùn)算關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算l前提假設(shè):前提假設(shè):關(guān)系關(guān)系r和關(guān)系和關(guān)系s具有相同的具有相同的n個(gè)屬性,且相應(yīng)個(gè)屬性,且相應(yīng)的屬性取自同一個(gè)域,的屬性取自同一個(gè)域,即兩個(gè)關(guān)系的模式或結(jié)構(gòu)相同即兩個(gè)關(guān)系的模式或結(jié)構(gòu)相同。t是元組變量,是元組變量,tr表示表示t是是r的一個(gè)元組。的一個(gè)元組。 l 并運(yùn)算并運(yùn)算 關(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ū)儆趕的所有元組的所有元組 組成。組成。并運(yùn)算并運(yùn)算ABC367257723443RABC345723SABC367257723443345RS 關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算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)系的交可以通過差來表達(dá),即組成。關(guān)系的交可以通過差來表達(dá),即rs = r- -(r- -s)。 差運(yùn)算差運(yùn)算ABC367257723443RABC345723SABC367257443RS ABC345SR 關(guān)系代數(shù)關(guān)系代數(shù)n 傳統(tǒng)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算l 笛卡爾積笛卡爾積 兩個(gè)分別為兩個(gè)分別為n目和目和m目的關(guān)系目的關(guān)系r和和s的笛卡爾積是一個(gè)的笛卡爾積是一個(gè)n+m目元組的集合。目元組的集合。 元組的前元組的前n列是關(guān)系列是關(guān)系r的一個(gè)元組,后的一個(gè)元組,后m列是關(guān)系列是關(guān)系s的一個(gè)的一個(gè)元組元組若關(guān)系

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

36、號(hào)課程號(hào),課程名稱,學(xué)時(shí),學(xué)分,課程名稱,學(xué)時(shí),學(xué)分)Score(學(xué)號(hào)學(xué)號(hào),課程號(hào)課程號(hào),學(xué)期,成績(jī),學(xué)期,成績(jī))l關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿足一定的規(guī)范條件。足一定的規(guī)范條件。l最基本的規(guī)范條件是:最基本的規(guī)范條件是:關(guān)系的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng),即關(guān)系的每一個(gè)分量必須是一個(gè)不可分的數(shù)據(jù)項(xiàng),即不允許不允許表中有表表中有表 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ǔ)會(huì)計(jì)基礎(chǔ)會(huì)計(jì) 48 3 nullCN028大學(xué)語(yǔ)文大學(xué)語(yǔ)文 48 3 nulCS012操作系統(tǒng)操作系統(tǒng) 80 5 nullCS015 數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)系統(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會(huì)計(jì)學(xué)會(huì)計(jì)學(xué)07(3)班班 會(huì)

40、計(jì)學(xué)院會(huì)計(jì)學(xué)院 2007 46CS0701計(jì)算機(jī)計(jì)算機(jī)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)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算l 對(duì)于數(shù)據(jù)庫(kù)對(duì)于數(shù)據(jù)庫(kù)ScoreDB,笛卡爾積,笛卡爾積ClassCourse的結(jié)果關(guān)系為:的結(jié)果關(guān)系為: 什么用?什么用?RXS89數(shù)學(xué)張軍86數(shù)學(xué)王紅93物理張軍成績(jī)課程姓名R89數(shù)學(xué)張軍86數(shù)學(xué)王紅93物理張軍成績(jī)課程姓名S什么用?什么用?關(guān)系代數(shù)關(guān)系代數(shù)n 專門的關(guān)系運(yùn)算專門的關(guān)系運(yùn)算l 選擇選擇 選擇操作是在關(guān)系選擇操作是在關(guān)系r中查找滿足給定中查找滿足給定謂

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

42、機(jī)計(jì)算機(jī)07(1)班班 信息學(xué)院信息學(xué)院 2007 48u 例如,在數(shù)據(jù)庫(kù)例如,在數(shù)據(jù)庫(kù)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會(huì)計(jì)學(xué)會(huì)計(jì)學(xué)07(3)班班 會(huì)計(jì)學(xué)院會(huì)計(jì)學(xué)院 2007 4

43、6CS0701計(jì)算機(jī)計(jì)算機(jī)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)系運(yùn)算專門的關(guān)系運(yùn)算l 投影投影 關(guān)系是一個(gè)二維表,對(duì)它的操作可以從關(guān)系是一個(gè)二維表,對(duì)它的操作可以從水平水平(行行)的角度進(jìn)的角度進(jìn)行,即行,即選擇操作選擇操作;也可以從;也可以從縱向縱向(列列)的角度進(jìn)行,即的角度進(jì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)系運(yùn)算專門的關(guān)系運(yùn)算l 投影投影u 例如,在數(shù)據(jù)庫(kù)例如,在數(shù)據(jù)庫(kù)ScoreDB中,查找所有學(xué)生的中,查找所有學(xué)生的姓名姓名和和民族民族 studentName, nation(Student) u 例如,在數(shù)據(jù)庫(kù)例如,在數(shù)據(jù)庫(kù)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)系運(yùn)算專門的關(guān)系運(yùn)算l 連接連接u 連接也稱為連接也稱為連接連接。記為。記為A op B,其中,其中A、B分別為關(guān)系分別為關(guān)系r和和s中的度數(shù)相等且可比的連接屬性集,中的度數(shù)相等且可比的連接屬性集,op為比較運(yùn)算符。為比較運(yùn)算符。 連接連接是從兩個(gè)關(guān)系的笛卡爾積中選取是從兩個(gè)關(guān)系的笛卡爾積中選取連接屬性間滿足謂詞連接屬性間滿足謂詞的所有元組的所有元組。記作。記作 : r s = trts tr rt

47、s s(r.A op s.B) u連接連接運(yùn)算就是從關(guān)系運(yù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)系運(yùn)算專門的關(guān)系運(yùn)算l 連接連接u連接運(yùn)算中有兩種最常用、最重要的連接,一種是連接運(yùn)算中有兩種最常用、最重要的連接,一種是等值等值連接連接(equijoin),另一種是另一種是自然連接自然連接(natural join)。為為等等值比較謂詞值比較謂詞的連接運(yùn)算稱為的連接運(yùn)算稱為等值連接等

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

49、析: nation=蒙古族蒙古族(Student)可以找到所有可以找到所有蒙古族蒙古族學(xué)生的情況,但關(guān)系學(xué)生的情況,但關(guān)系Student中沒有年級(jí)的信息,因此中沒有年級(jí)的信息,因此必須必須將關(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) 最后的查詢可表達(dá)

50、為:最后的查詢可表達(dá)為: 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ù)庫(kù)例如,在數(shù)據(jù)庫(kù)ScoreDB中,查找課程號(hào)為中,查找課程號(hào)為“AC001”課程課程的考試的考試中比中比學(xué)號(hào)為學(xué)號(hào)為“0703045”的學(xué)生的學(xué)生考得更好考得更好

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

53、進(jìn)行進(jìn)行連接連接 (結(jié)果關(guān)系記為結(jié)果關(guān)系記為r3),其查詢可表達(dá)為:其查詢可表達(dá)為: r1 r1.scorer2.score r2 = r1.scorer2.score (r1r2) 將關(guān)系將關(guān)系r3與學(xué)生關(guān)系與學(xué)生關(guān)系Student按外碼按外碼studentNo進(jìn)行自然連接,并進(jìn)行自然連接,并對(duì)連接對(duì)連接 結(jié)果在屬性結(jié)果在屬性studentName和和r2.score上進(jìn)行投影,上進(jìn)行投影,其查詢可表達(dá)為:其查詢可表達(dá)為: 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的的連接的連接的計(jì)算過程計(jì)算過程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號(hào) 職

59、工 的 姓 名號(hào) 職 工 的 姓 名和 工 資 信 息 沒和 工 資 信 息 沒有顯示出來有顯示出來外連接外連接n 外連接外連接l為避免自然連接時(shí)因失配而發(fā)生的信息丟失,可以假定往為避免自然連接時(shí)因失配而發(fā)生的信息丟失,可以假定往參與連接的一方表中附加一個(gè)取值全為空值的行,它和參參與連接的一方表中附加一個(gè)取值全為空值的行,它和參與連接的另一方表中的任何一個(gè)未匹配上的元組都能匹配,與連接的另一方表中的任何一個(gè)未匹配上的元組都能匹配,稱之為稱之為外連接外連接外連接外連接 = 自然連接自然連接 + 失配的元組失配的元組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. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論