第二章關(guān)系數(shù)據(jù)庫基本原理(2010)_第1頁
第二章關(guān)系數(shù)據(jù)庫基本原理(2010)_第2頁
第二章關(guān)系數(shù)據(jù)庫基本原理(2010)_第3頁
第二章關(guān)系數(shù)據(jù)庫基本原理(2010)_第4頁
第二章關(guān)系數(shù)據(jù)庫基本原理(2010)_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、韓華韓華信息科學(xué)與工程系信息科學(xué)與工程系 2009 .08第二章 關(guān)系數(shù)據(jù)庫n19701970年,年,IBMIBM公司的公司的E.F.CoddE.F.Codd 第一次系統(tǒng)地嚴(yán)第一次系統(tǒng)地嚴(yán)格地提出了以格地提出了以為基礎(chǔ)的為基礎(chǔ)的, ,奠定了關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)。奠定了關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)。n9090年代,關(guān)系模型數(shù)據(jù)庫系統(tǒng)已成為商用主流年代,關(guān)系模型數(shù)據(jù)庫系統(tǒng)已成為商用主流數(shù)據(jù)庫系統(tǒng),廣泛應(yīng)用于各個(gè)領(lǐng)域數(shù)據(jù)庫系統(tǒng),廣泛應(yīng)用于各個(gè)領(lǐng)域: 、 和和 等等等等2.12.22.32.1 2.1 關(guān)系模型關(guān)系模型n關(guān)系模型關(guān)系模型是一種數(shù)據(jù)模型數(shù)據(jù)模型,它和一般的 數(shù)據(jù)模型一樣,由如下三部分組成:n關(guān)系

2、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)n關(guān)系操作集合操作集合n關(guān)系完整性約束完整性約束2.1.1 關(guān)系數(shù)據(jù)結(jié)構(gòu)n單一的數(shù)據(jù)結(jié)構(gòu)單一的數(shù)據(jù)結(jié)構(gòu)-關(guān)系關(guān)系n在關(guān)系模型中,無論是實(shí)體還是實(shí)體間的各種聯(lián)系均用關(guān)系來表示n數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)-n從用戶角度,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表。 1. 二維表n下圖所示的二維表表示的是某個(gè)班級的學(xué)生名單列名列名出自相同的域出自相同的域代表一個(gè)學(xué)生的信息代表一個(gè)學(xué)生的信息1. 二維表(續(xù))n對一張二維表可以做以下操作:填表填表修改修改刪除刪除 查詢查詢2. 關(guān)系 關(guān)系數(shù)據(jù)庫是關(guān)系數(shù)據(jù)庫是的集合,每個(gè)表有的集合,每個(gè)表有唯一的名字唯一的名字,表中的,表中的一行一行代表的是

3、一系代表的是一系列值之間的列值之間的。 由于由于一個(gè)表就是這種聯(lián)系的集合一個(gè)表就是這種聯(lián)系的集合,因此表這個(gè)概念和數(shù)學(xué)上的因此表這個(gè)概念和數(shù)學(xué)上的這個(gè)概這個(gè)概念密切相關(guān),這也正是念密切相關(guān),這也正是關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫名稱名稱的由來的由來。2. 關(guān)系(續(xù))屬性屬性 列列字段字段關(guān)系名關(guān)系名 表名表名文件名文件名元組元組行行記錄記錄返回域域分量分量關(guān)系模式關(guān)系模式關(guān)鍵字(碼)(關(guān)鍵字(碼)(KEYKEY)n二維表對應(yīng)成關(guān)系如下圖所示 A關(guān)系的邏輯結(jié)構(gòu)A簡言之,一張二維表。也稱表、關(guān)系表、數(shù)據(jù)表。屬性:字段行:元組B屬性的原子性屬性的同質(zhì)性記錄的唯一性屬性次序的無關(guān)性元組次序的無關(guān)性關(guān)系的動(dòng)態(tài)性關(guān)

4、系的有限性不同的列可出自同一個(gè)域,但要給予不同的屬性名。C關(guān)鍵詞由本關(guān)系中的字段組成(一個(gè)字段或幾個(gè)字段的組合)關(guān)鍵詞的作用是標(biāo)識表中記錄,以便于記錄查找和操作關(guān)系可能有4種關(guān)鍵詞2. 關(guān)系(續(xù))B關(guān)系的性質(zhì)C關(guān)鍵詞n在數(shù)據(jù)庫中要區(qū)分型型和值值。n關(guān)系數(shù)據(jù)庫中,關(guān)系模式關(guān)系模式是型是型,關(guān)系實(shí)例關(guān)系實(shí)例是值是值。 2. 關(guān)系(續(xù))n關(guān)鍵詞關(guān)鍵詞n(1 1)超關(guān)鍵字)超關(guān)鍵字n(2 2)候選關(guān)鍵字)候選關(guān)鍵字n(3 3)主關(guān)鍵字)主關(guān)鍵字n(4 4)外關(guān)鍵字)外關(guān)鍵字關(guān)系中能唯一確定一個(gè)元組(或記錄) 的一個(gè)或幾個(gè)屬性的組合如,如, 學(xué)生表中,(學(xué)號,姓名)學(xué)生表中,(學(xué)號,姓名)課程表中,(課

5、程代號,學(xué)分,學(xué)時(shí))課程表中,(課程代號,學(xué)分,學(xué)時(shí))如果 K 是某關(guān)系的超關(guān)鍵字,若從K中減少一個(gè)屬性就不能唯一確定一個(gè)元組,則 K 是候選關(guān)鍵字如,如, 學(xué)生表中,(學(xué)號)學(xué)生表中,(學(xué)號) 課程表中,(課程代號)課程表中,(課程代號)從關(guān)系的所有候選關(guān)鍵字中選定一個(gè)候選關(guān)鍵字確定為這個(gè)關(guān)系的先行關(guān)鍵字,稱為關(guān)鍵字。設(shè)有關(guān)系A(chǔ)和B,若屬性組合K是A的主關(guān)鍵字,但不是B的關(guān)鍵字,則稱K是B相對于A的外關(guān)鍵字。如有關(guān)系,學(xué)生(學(xué)號,姓名,性別,)成績(學(xué)號,課程號,分?jǐn)?shù)) (學(xué)號)是“學(xué)生”的主關(guān)鍵字,但不是“成績”的主關(guān)鍵字,則稱(學(xué)號)是“成績”的外關(guān)鍵字。2. 關(guān)系(續(xù))2. 關(guān)系(續(xù))

6、n關(guān)系可以有三種類型:n基本關(guān)系基本關(guān)系(通常又稱為基本表或基表),基本表是實(shí)際存在的表,是實(shí)際存儲(chǔ)數(shù)據(jù)的邏輯表示。n查詢表查詢表,是查詢結(jié)果對應(yīng)的表。n視圖表視圖表,是由基本表或其他視圖表導(dǎo)出的表,是虛表,不對應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù)。2. 關(guān)系(續(xù))n在關(guān)系模型中,實(shí)體實(shí)體以及實(shí)體之間的聯(lián)系都是用關(guān)系關(guān)系來表示的。n例如雇員、部門、雇員與部門之間的工作關(guān)系在關(guān)系模型中可以表示如下:n雇員(雇員號、姓名、部門、性別、年齡、工作崗位)n部門(部門號,部門名)n工作關(guān)系(雇員號,部門號,工作年限)工作關(guān)系(雇員號,部門號,工作年限)2.1.2關(guān)系操作1) 關(guān)系操作的特點(diǎn)n集合操作方式,即操作的對象和結(jié)果

7、都是集合。n非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作方式:一次一記錄2.1.2 關(guān)系操作(續(xù))n2) 常用的關(guān)系操作關(guān)系操作n數(shù)據(jù)庫操作只實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的“存存”和“取取”n主要有4 4種種不同類型的操作 :n1.數(shù)據(jù)查詢n2.數(shù)據(jù)插入n3.數(shù)據(jù)刪除n4.數(shù)據(jù)更新根據(jù)用戶給出的查詢條件從數(shù)據(jù)庫中提取數(shù)據(jù)作為結(jié)果的操作 插入是向數(shù)據(jù)庫中添加一個(gè)或多個(gè)元組的操作從數(shù)據(jù)庫中去除一個(gè)或多個(gè)無須繼續(xù)在數(shù)據(jù)庫中存儲(chǔ)的元組修改數(shù)據(jù)庫中數(shù)據(jù),使其具有新值的操作2.1.2 關(guān)系操作(續(xù))n3) 關(guān)系數(shù)據(jù)語言的種類n關(guān)系數(shù)據(jù)庫操作需要關(guān)系數(shù)據(jù)語言支持關(guān)系數(shù)據(jù)庫操作需要關(guān)系數(shù)據(jù)語言支持n關(guān)系模型給出了關(guān)系操作的能力和特點(diǎn),但不

8、但不對對DBMSDBMS的語言給出具體的語法要求。的語言給出具體的語法要求。:用對關(guān)系的運(yùn)算來表達(dá)查詢要求:用謂詞來表達(dá)查詢要求2.1.3 關(guān)系的完整性關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件。關(guān)系模型中三類完整性約束:實(shí)體完整性實(shí)體完整性參照完整性參照完整性用戶定義的完整性用戶定義的完整性實(shí)體完整性實(shí)體完整性和參照完整性參照完整性是關(guān)系模型必須滿足的完整性約束條件,被稱作是關(guān)系的兩個(gè)不變性不變性,應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持。1 實(shí)體完整性實(shí)體完整性規(guī)則(實(shí)體完整性規(guī)則(Entity IntegrityEntity Integrity)若屬性A是基本關(guān)系關(guān)系R R的主屬性主屬性,則任何一個(gè)元組在

9、任何一個(gè)元組在屬性屬性A A上不能取空值(上不能取空值(NullNull)。例如,學(xué)生(學(xué)號學(xué)號,姓名,性別,出生年月,籍貫,身高)學(xué)生關(guān)系中,學(xué)號是主碼,則任何一個(gè)元組在屬性任何一個(gè)元組在屬性“學(xué)號學(xué)號”上上不能取空值不能取空值。1 實(shí)體完整性(續(xù))關(guān)系模型必須遵守實(shí)體完整性規(guī)則的原因(1)一個(gè)基本關(guān)系基本關(guān)系對應(yīng)現(xiàn)實(shí)世界中的一個(gè)實(shí)體集實(shí)體集。例如,雇員關(guān)系對應(yīng)全體雇員的集合。(2)現(xiàn)實(shí)世界中的實(shí)體是可區(qū)分的,即它們具有某種唯一唯一性標(biāo)識性標(biāo)識(3)相應(yīng)地,關(guān)系模型中以主碼主碼作為唯一性標(biāo)識。(4)主碼中的屬性即主屬性主屬性不能取空值不能取空值。1 實(shí)體完整性(續(xù))例:選修(學(xué)號,課程號學(xué)號

10、,課程號,成績)“學(xué)號、課程號學(xué)號、課程號”為主碼,則兩個(gè)屬性都不兩個(gè)屬性都不能取空值能取空值。2 參照完整性l關(guān)系間的引用關(guān)系間的引用l外碼外碼l參照完整性規(guī)則參照完整性規(guī)則關(guān)系間的引用例子例子,假設(shè)我們具有如下兩個(gè)關(guān)系: 學(xué)生學(xué)生( (學(xué)號學(xué)號,姓名,性別,系別,年齡,姓名,性別,系別,年齡) )選課選課( (學(xué)號學(xué)號,課程號,課程號,成績,成績) )這兩個(gè)關(guān)系的屬性之間存在著下圖所示的引用關(guān)系,即選課關(guān)系選課關(guān)系引用了引用了學(xué)生關(guān)系的主碼學(xué)生關(guān)系的主碼“學(xué)號學(xué)號”。外碼(Foreign Key)如果基本關(guān)系R中某屬性集F是基本關(guān)系S的主碼,則對基本關(guān)系R而言,F(xiàn)叫做外碼(Foreign

11、Key),并稱基本關(guān)系R為參照關(guān)系(Referencing Relation),基本關(guān)系S為被參照關(guān)系被參照關(guān)系(Referenced Relation)或目標(biāo)關(guān)系(Target Relation)。 studentsnosnamesagessexsdeptcoursecnocnamecreditscmngrade參照完整性和外鍵參照完整性和外鍵聲明聲明邏輯模型邏輯模型 基本關(guān)系R的任何一個(gè)元組在外碼F上的取值要么要么是空值是空值,要么是要么是被參照關(guān)系被參照關(guān)系S S中一中一個(gè)元組的主碼值個(gè)元組的主碼值顯然,參照關(guān)系R的外碼和目標(biāo)關(guān)系S S的主碼的主碼,但是,外碼外碼并不一定要與相應(yīng)并不一定

12、要與相應(yīng)的主碼同名的主碼同名。從表從表主表主表參照完整性規(guī)則(續(xù))。n例如在關(guān)系:nn學(xué)生學(xué)生2(2(學(xué)號學(xué)號,姓名,性別,系別,年齡,班長,姓名,性別,系別,年齡,班長) ) n“班長”屬性可以取兩類值:n空值,表示該學(xué)生所在班級尚未選出班長;n非空值,這時(shí)該值必須是本關(guān)系中本關(guān)系中某個(gè)元組的某個(gè)元組的學(xué)號值學(xué)號值。n該例中學(xué)生中學(xué)生2 2關(guān)系既是參照關(guān)系也是被參照關(guān)系。關(guān)系既是參照關(guān)系也是被參照關(guān)系。主碼主碼外碼外碼保持參照完整性保持參照完整性n參照完整性的違例參照完整性的違例從表從表 插入從表元組,且外鍵不為插入從表元組,且外鍵不為NullNull 修改從表外鍵,且不為修改從表外鍵,且不

13、為NullNull主表主表 刪除主表元組,其已被參照刪除主表元組,其已被參照 修改主表主鍵,其已被參照修改主表主鍵,其已被參照 Drop TableDrop Table保持參照完整性保持參照完整性策略策略nRESTRICTRESTRICTn前述違例的情況均不能操作前述違例的情況均不能操作n這是所有這是所有DBMSDBMS產(chǎn)品均支持的方式產(chǎn)品均支持的方式n安全的默認(rèn)方式安全的默認(rèn)方式nCASCADECASCADEn對主表的違例操作對主表的違例操作n所有從表中的相關(guān)元組被級聯(lián)刪除或更新所有從表中的相關(guān)元組被級聯(lián)刪除或更新nSET NULLSET NULL對主表的違例操作對主表的違例操作從表中相關(guān)外

14、鍵的值均被置為從表中相關(guān)外鍵的值均被置為NullNull(前提是(前提是允許為允許為NullNull)nSET DEFAULT對主表的違例操作對主表的違例操作從表中相關(guān)外鍵的值均被置為相應(yīng)的從表中相關(guān)外鍵的值均被置為相應(yīng)的Default Value屬性級屬性級sno char(10) References student(sno)On Delete Set NullOn Update Cascade,.表級表級Foreign Key sno References student(sno)On Delete Set NullOn Update Cascade,.3 用戶定義的完整性n用戶定義的完

15、整性用戶定義的完整性是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,反映某一具體應(yīng)用某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求必須滿足的語義要求。n關(guān)系模型應(yīng)提供定義和檢驗(yàn)這類完整性的機(jī)制,以便,而不要由而不要由應(yīng)用程序承擔(dān)這一功能應(yīng)用程序承擔(dān)這一功能。(如觸發(fā)器或存儲(chǔ)過如觸發(fā)器或存儲(chǔ)過程程)用戶定義的完整性(續(xù))例: 課程(課程號,課程名,學(xué)分)n“課程名”屬性必須取唯一值n非主屬性“課程名”也不能取空值不能取空值n“學(xué)分學(xué)分”屬性只能取值取值11,2 2,3 3,44 當(dāng)談?wù)摂?shù)據(jù)庫時(shí),必須區(qū)分當(dāng)談?wù)摂?shù)據(jù)庫時(shí),必須區(qū)分和和。 數(shù)據(jù)庫模式數(shù)據(jù)庫模式是是,而,而是給定時(shí)刻數(shù)據(jù)庫中數(shù)據(jù)的一個(gè)是給定時(shí)刻數(shù)據(jù)庫中

16、數(shù)據(jù)的一個(gè)。 針對關(guān)系模型來說,數(shù)據(jù)庫模式和數(shù)據(jù)庫針對關(guān)系模型來說,數(shù)據(jù)庫模式和數(shù)據(jù)庫實(shí)例就是實(shí)例就是和和。 2.2 關(guān)系數(shù)據(jù)庫模式與關(guān)系數(shù)據(jù)庫那么什么是關(guān)系那么什么是關(guān)系模式呢?模式呢?程序設(shè)計(jì)語言程序設(shè)計(jì)語言關(guān)系模型關(guān)系模型數(shù)據(jù)類型數(shù)據(jù)類型變量變量值值關(guān)系模式關(guān)系模式關(guān)系關(guān)系關(guān)系實(shí)例關(guān)系實(shí)例account-numberaccount-numberassetsassetscustomer-namecustomer-name圖圖2-12-1balancebalanceaccountaccountaccount-branchaccount-branchbranch-namebranch-name

17、branchbranchcustomercustomerloanloanborrowerborrowerloan-numberloan-numbercustomer-streetcustomer-streetloan-branchloan-branchcustomer-citycustomer-cityamountamountbranch-citybranch-citydepositorCustomer-schema=(Customer-schema=(customer-namecustomer-name, customer-, customer-street, customer-city)s

18、treet, customer-city)Account-schema=(Account-schema=(branch-namebranch-name, , account-numberaccount-number, , balance)balance)Depositor-schema=(Depositor-schema=(customer-namecustomer-name, , account-account-numbernumber) )Branch-schema=(Branch-schema=(branch-namebranch-name, branch-city, , branch-

19、city, assets)assets)Loan-schema=(Loan-schema=(branch-namebranch-name, , loan-numberloan-number, , amount)amount)Borrower-schema=(Borrower-schema=(customer-namecustomer-name, , loan-numberloan-number) )是是的的查詢語言查詢語言,它包括一個(gè),它包括一個(gè)運(yùn)算集合。這些運(yùn)算以一個(gè)或兩個(gè)關(guān)系為輸運(yùn)算集合。這些運(yùn)算以一個(gè)或兩個(gè)關(guān)系為輸入,產(chǎn)生一個(gè)新的關(guān)系為結(jié)果。入,產(chǎn)生一個(gè)新的關(guān)系為結(jié)果。關(guān)系關(guān)系代數(shù)包代數(shù)

20、包含兩類運(yùn)算:含兩類運(yùn)算:n傳統(tǒng)的集合運(yùn)算,如傳統(tǒng)的集合運(yùn)算,如并、交、差、廣義笛卡兒并、交、差、廣義笛卡兒積積,這類運(yùn)算將關(guān)系看成元組的集合,其運(yùn)算,這類運(yùn)算將關(guān)系看成元組的集合,其運(yùn)算是從關(guān)系的是從關(guān)系的的角度來進(jìn)行的。的角度來進(jìn)行的。n專門的關(guān)系運(yùn)算,如專門的關(guān)系運(yùn)算,如,這類運(yùn)算不僅涉及行,而且涉及列。這類運(yùn)算不僅涉及行,而且涉及列。2.3 關(guān)系代數(shù)n關(guān)系代數(shù)是一個(gè)完備的代數(shù)系統(tǒng)n是一個(gè)數(shù)學(xué)分支 - 集合運(yùn)算n組成元素:n集合n運(yùn)算符n條件n屬性列表集集合合運(yùn)運(yùn)算算符符-并差交廣義笛卡爾積比較運(yùn)算符 大于大于等于小于小于等于等于不等于運(yùn)算符含義運(yùn)算符含義關(guān)系代數(shù)運(yùn)算符關(guān)系代數(shù)運(yùn)算符 專

21、門的專門的關(guān)系關(guān)系運(yùn)算符運(yùn)算符 選擇投影連接除邏輯運(yùn)算符 非與或運(yùn)算符含義運(yùn)算符含義關(guān)系代數(shù)運(yùn)算符(續(xù))關(guān)系代數(shù)運(yùn)算符(續(xù)) 1 1、關(guān)系代數(shù)、關(guān)系代數(shù) 并并Union ()Union ()和和 的的,是在,是在R R或或S S或兩者中的元素的或兩者中的元素的集合集合和和 必須同類型(屬性集相同、次序相同,但必須同類型(屬性集相同、次序相同,但屬性名可以不同)屬性名可以不同) 運(yùn)算規(guī)則運(yùn)算規(guī)則: “: “并并”運(yùn)算運(yùn)算T1 = R ST1 = R S關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系T1T1包含包含 R R 和和 S S 的所有元組的所有元組2、關(guān)系代數(shù) 交Intersect ()和和 的的交交, ,是

22、在,是在 和和 中都存在的元素中都存在的元素的集合的集合n一個(gè)元素在交集中只出現(xiàn)一次一個(gè)元素在交集中只出現(xiàn)一次nR R和和S S必須同類型(屬性集相同、次序相同,但必須同類型(屬性集相同、次序相同,但屬性名可以不同)屬性名可以不同) 運(yùn)算規(guī)則運(yùn)算規(guī)則: : “交交”運(yùn)算運(yùn)算T3 = R ST3 = R S關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系T3T3包含包含R R和和S S共共有的元組有的元組 3 3、關(guān)系代數(shù)、關(guān)系代數(shù) 差差Minus (-Minus (-) )和和 的的差差, ,是在,是在 中而不在中而不在 中的元素中的元素的集合的集合和和 必須同類型(屬性集相同、次序相同,但必須同類型(屬性集相同、次

23、序相同,但屬性名可以不同)屬性名可以不同) 4.4.關(guān)系代數(shù)關(guān)系代數(shù)笛卡爾積笛卡爾積( () )n關(guān)系關(guān)系R R、S S的笛卡爾積是兩個(gè)關(guān)系的元組對的集的笛卡爾積是兩個(gè)關(guān)系的元組對的集合所組成的新關(guān)系合所組成的新關(guān)系nR RS S:屬性屬性是是R R和和S S的組合(有重復(fù))的組合(有重復(fù))元組元組是是R R和和S S所有元組的可能組合所有元組的可能組合使使R R、S S的無條件連接,使任意兩個(gè)關(guān)系的的無條件連接,使任意兩個(gè)關(guān)系的信息能組合在一起信息能組合在一起n例例: student : student sc sc ( (注意注意 的命名的命名) ) 運(yùn)算規(guī)則運(yùn)算規(guī)則: : “笛卡爾積笛卡爾

24、積”運(yùn)算運(yùn)算T4 = R T4 = R V V關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系T4T4包含包含R R和和V V的的元組所有可能元組所有可能的配對的配對兩個(gè)分別為兩個(gè)分別為n n、m m目關(guān)系目關(guān)系 和和 的廣義笛卡兒積是的廣義笛卡兒積是一個(gè)(一個(gè)()元組的集合,記作:)元組的集合,記作:R RS S廣義笛卡爾積 (續(xù))ABCa1 b1 c1a1 b2 c2a2 b2 c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1 b2 c2a1 b3 c2a2 b2 c1RSR S ABCa1b2c2a1b3c2a2b2c1a1b2c2

25、a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1 小結(jié):對于傳統(tǒng)的集合運(yùn)算小結(jié):對于傳統(tǒng)的集合運(yùn)算n它是二目元算,其中它是二目元算,其中R R和和S S要求是要求是(除(除廣義笛卡爾積運(yùn)算)廣義笛卡爾積運(yùn)算)n它能實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫的許多基本操作它能實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫的許多基本操作n并運(yùn)算并運(yùn)算實(shí)現(xiàn)數(shù)據(jù)記錄的實(shí)現(xiàn)數(shù)據(jù)記錄的添加添加n差運(yùn)算差運(yùn)算實(shí)現(xiàn)數(shù)據(jù)記錄的實(shí)現(xiàn)數(shù)據(jù)記錄的刪除刪除n數(shù)據(jù)記錄的數(shù)據(jù)記錄的修改修改則是通過則是通過先刪除先刪除,后插入后插入這這兩步完成的兩步完成的n對關(guān)系R的選擇操作記作:其中F 表示選擇條件選擇條件,它是一個(gè),取邏輯值“真”或“假”。選擇運(yùn)算實(shí)際上是從關(guān)系R中選

26、取使邏輯表達(dá)式F為真的元組為真的元組。 n1.選擇(SELECT) | tRF)()(TruetFRtT5 =T5 =F F (R)(R)邏輯邏輯表達(dá)式表達(dá)式T5T5包含包含R R的滿的滿足條件的元組足條件的元組關(guān)系關(guān)系1. 選擇(續(xù))n例: sage = 23 AND sdep = CSsage = 23 AND sdep = CS(student(student) ) n例:列出CS系的學(xué)號及姓名sno,snamesno,sname(sdep = CSsdep = CS(student(student) ) )例如,給出loan關(guān)系中分支機(jī)構(gòu)名稱為Downtown的元組,就應(yīng)該寫作: br

27、anch-namebranch-name=“Downtown”=“Downtown”( (loanloan) )圖圖2-62-6例如,找出在Downtown分支機(jī)構(gòu)的貸款金額大于1200元的元組,就可以表示為: branch-namebranch-name=“Downtown”=“Downtown”amountamount12001200( (loanloan) )n投影(投影(projection):一目運(yùn)算一目運(yùn)算n tRA是屬性或?qū)傩越M,投影運(yùn)算的結(jié)果是在R中選取某些屬性列(A)構(gòu)成新的關(guān)系,注意:投影運(yùn)算不僅會(huì)取消某些列,而且還可能因重復(fù)行的存在而取消某些元組(行)。n從關(guān)系從關(guān)系R

28、R中選擇若干屬性組成新的關(guān)系中選擇若干屬性組成新的關(guān)系nA A1,1,A A2,2, ,A An n(R),(R),表示從表示從R R中選擇屬性集中選擇屬性集A1,A2,An組成新的關(guān)系組成新的關(guān)系n列的運(yùn)算列的運(yùn)算n例例: : ssex,sagessex,sage(student(student) ?) ?)(AtRA2. 投影-Projection()2. 投影(續(xù)) T6 =T6 =L L (R)(R)屬性屬性列表列表T6T6包含包含R R的滿的滿足條件的元組足條件的元組關(guān)系關(guān)系2. 投影 (續(xù)) 例如,上述投影運(yùn)算就應(yīng)該寫作: loan-numberloan-number, ,amou

29、ntamount( (loanloan) )產(chǎn)生的結(jié)果如圖2-4所示:圖圖2-72-7n連接(連接(jion): 連接和連接和連接。二目運(yùn)算。連接。二目運(yùn)算。n1) 連接連接:設(shè)有關(guān)系:設(shè)有關(guān)系R和和S,從,從RS(廣義笛卡(廣義笛卡爾積)中選取屬性間滿足一定條件的元組。爾積)中選取屬性間滿足一定條件的元組。n2)等值連接等值連接:A,B應(yīng)出自相同的域,也就是說,應(yīng)出自相同的域,也就是說,A,B應(yīng)應(yīng)可比較,當(dāng)可比較,當(dāng) 取取“=”時(shí),等值運(yùn)算時(shí),等值運(yùn)算|ABrsrsrsRSt ttRtStAtB,|BtAtStRtttSRsrsrsrBA3. 連接 (Jion)關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系T7T

30、7包含包含R R和和V V的所的所有屬性有屬性A B若若 為為“C D” C D” A BT7 = R VT7 = R VA B3)3)關(guān)系代數(shù)關(guān)系代數(shù)自然連接自然連接( ( ) )n從RS的結(jié)果集中,選取在某些公共屬性上具有相同值的元組,組成新的關(guān)系nR R、S S的公共屬性的公共屬性屬性集的交集(名稱及類型相同)n公共屬性在結(jié)果中只出現(xiàn)一次n一種特殊的等值連接關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系關(guān)系T8T8包含包含R R的所有的所有屬性和屬性和V V同屬性同屬性中外的所有屬性中外的所有屬性T8 = R VT8 = R V盡管自然連接的定義很復(fù)雜,但使用起來卻很方便。例如,“找出所有在銀行中有貸款的客戶的姓

31、名、貸款號和貸款金額”。用關(guān)系代數(shù)的基本運(yùn)算可以表示如下:customer-name,customer-name,loan-numberloan-number, ,amountamount( ( borrower.loan-borrower.loan-numbernumber= =loan.loan-numberloan.loan-number( (borrowerborrower loanloan) ) ) ?而用自然連接運(yùn)算就可以簡單地表示如下:customer-namecustomer-name, ,loan-numberloan-number, ,amountamount( (borr

32、ower loanborrower loan) )customer-name,loan-number,amountcustomer-name,loan-number,amount( (borrowerborrowerloanloan) )由于關(guān)系borrower和loan的模式中都有相同的屬性loan-number,自然連接運(yùn)算只考慮在loan-number上值相同的元組對。而自然連接的結(jié)果模式為兩個(gè)模式的并自然連接的結(jié)果模式為兩個(gè)模式的并,即:( (customer-name,branch-name,customer-name,branch-name,loan-numberloan-numb

33、er,amount,amount) )4)關(guān)系代數(shù)改名()n對關(guān)系R實(shí)施改名運(yùn)算改名運(yùn)算,可顯式地改變關(guān)系名改變關(guān)系名及屬性名及屬性名n將關(guān)系關(guān)系R R改名為S S:n將關(guān)系R(B1,B2,Bn)改名S S(A A1 1,A,A2 2, ,A,An n): S S(A1,A2,A1,A2,An,An)(R)(R)S#SNSDSAS1ACS20S2BCS21S3CMA19S4DC119S5EMA20S6FCS22S#C#GS1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C3BS4C5DS5C2CS5C3BS5C5BS6C4AS6C5AC#C

34、NPC#C1G-C2HC1C3IC1C4JC2C5KC4SCSCn 例:學(xué)生、課程、選課關(guān)系即例:學(xué)生、課程、選課關(guān)系即S、C、SC關(guān)系分別如下所示:關(guān)系分別如下所示:5)關(guān)系代數(shù)查詢中的復(fù)合運(yùn)算n例:找出比例:找出比9500195001年齡大的學(xué)生的學(xué)號和年齡大的學(xué)生的學(xué)號和姓名、年齡姓名、年齡s.sno,s.sname,s.sage(s(student) s.sage stu.sage (stu.sno=95001(stu(student)n給定一個(gè)關(guān)系給定一個(gè)關(guān)系為屬性組,為屬性組,定義當(dāng)定義當(dāng)時(shí),時(shí),x在在R中的象集(中的象集(Image Set)為為 =tZ tR,tX=x,表示表示

35、R中屬性組中屬性組X上值上值 為為 的諸元組在的諸元組在 上的集合,上的集合,即:對即:對R進(jìn)進(jìn)行選擇運(yùn)算行選擇運(yùn)算 ,再進(jìn)行投影,再進(jìn)行投影運(yùn)算運(yùn)算 。xZ1( )XxRR)(1Rz象集的概念象集的概念S#C#GS1C1AS1C2AS1C3AS1C5BS2C1BS2C2CS2C4CS3C2BS3C3CS3C4BS4C3BS4C5DS5C2CS5C3BS5C5BS6C4AS6C5ASCS#C#S1C1S1C2S1C3S1C5S2C1S2C2S2C4S3C2S3C3S3C4S4C3S4C5S5C2S5C3S5C5S6C4S6C5投影投影4. 除法:除法: 給定關(guān)系給定關(guān)系R(X,Y)和)和S(Y

36、,Z),),X,Y,Z是屬性組,是屬性組,R中的中的Y和和S中中Y可以有不同的屬性名可以有不同的屬性名(對應(yīng)的屬性要出自相同的域?qū)?yīng)的屬性要出自相同的域) 記商為記商為QX則則 除法的結(jié)果是除法的結(jié)果是R中滿足下列條件的元組在中滿足下列條件的元組在X屬性列屬性列上的投影:上的投影:元組在元組在X上上分量值分量值x的的象集象集Yx 包含在包含在Y上的投影上的投影的集合的集合。 rrxYRStXtR YS),()(QXYYXRS什么是什么是Yx ? 即:它使用除數(shù)關(guān)系即:它使用除數(shù)關(guān)系S(Y)在被除數(shù)關(guān)系在被除數(shù)關(guān)系R(X,Y)中取商關(guān)系,記作:中取商關(guān)系,記作:RSY和和Y具有相同的屬性數(shù)目具有

37、相同的屬性數(shù)目,且對應(yīng)屬性出自且對應(yīng)屬性出自相同的域相同的域商關(guān)系商關(guān)系是關(guān)系是關(guān)系R在屬性在屬性X上投影的上投影的一個(gè)子集一個(gè)子集舉例:舉例:n關(guān)系代數(shù)表達(dá)式的運(yùn)算結(jié)果是一個(gè)關(guān)系關(guān)系代數(shù)表達(dá)式的運(yùn)算結(jié)果是一個(gè)關(guān)系n關(guān)系數(shù)據(jù)庫的關(guān)系數(shù)據(jù)庫的DML語言語言至少支持至少支持選擇選擇、投影投影和和連接連接三種運(yùn)算三種運(yùn)算Customer-schema=(Customer-schema=(customer-namecustomer-name, customer-, customer-street, customer-city)street, customer-city)Account-schema=(

38、Account-schema=(branch-namebranch-name, , account-numberaccount-number, , balance)balance)Depositor-schema=(Depositor-schema=(customer-namecustomer-name, , account-account-numbernumber) )Branch-schema=(Branch-schema=(branch-namebranch-name, branch-city, , branch-city, assets)assets)Loan-schema=(Loan

39、-schema=(branch-namebranch-name, , loan-numberloan-number, , amount)amount)Borrower-schema=(Borrower-schema=(customer-namecustomer-name, , loan-numberloan-number) )除運(yùn)算用符號除運(yùn)算用符號“ ”表示,適合于包含諸如表示,適合于包含諸如“對對所有的所有的”此類短語此類短語的查詢的查詢。假設(shè)希望找出在假設(shè)希望找出在BrooklynBrooklyn市的所有分支機(jī)構(gòu)中市的所有分支機(jī)構(gòu)中都都有帳戶的客戶姓名有帳戶的客戶姓名,可以分步求解如下:

40、,可以分步求解如下:位于位于BrooklynBrooklyn市的所有分支機(jī)構(gòu)的名稱:市的所有分支機(jī)構(gòu)的名稱:r r1 1= =branch-namebranch-name( ( branch-citybranch-city=“Brooklyn”=“Brooklyn”( (branchbranch)客戶在分支機(jī)構(gòu)中有帳戶的所有客戶在分支機(jī)構(gòu)中有帳戶的所有( (customer-name,branch-namecustomer-name,branch-name) )對:對:r r2 2= =customer-name,branch-namecustomer-name,branch-name( (depositordepositoraccountaccount) )現(xiàn)在需要找出這樣的客戶現(xiàn)在需要找出這樣的客戶:他與:他與r r1 1中每個(gè)分支中每個(gè)分支機(jī)構(gòu)名稱的結(jié)對都在機(jī)構(gòu)名稱的結(jié)對都在r r2 2中出現(xiàn)。而給出所有這樣中出現(xiàn)。而給出所有這樣的客戶的運(yùn)算是除運(yùn)算,即的客戶的運(yùn)算是除運(yùn)算,即r r2 2 r r1 1:customer-name,branch-namecustomer-name,branch-name( (depositordepositoraccountaccount) ) branch-namebran

溫馨提示

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

最新文檔

評論

0/150

提交評論