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

下載本文檔

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

文檔簡介

數(shù)據(jù)庫原理與應(yīng)用(第二版)數(shù)學(xué)科學(xué)系第3章

關(guān)系數(shù)據(jù)庫3.1關(guān)系數(shù)據(jù)模型的組成3.2關(guān)系數(shù)據(jù)模型基本術(shù)語3.3關(guān)系模型的形式化定義3.4關(guān)系模型的完整性約束3.5關(guān)系代數(shù)3.1關(guān)系數(shù)據(jù)模型的組成3.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu)3.1.2關(guān)系操作3.1.3數(shù)據(jù)完整性約束3.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系數(shù)據(jù)模型源于數(shù)學(xué)。用二維表來組織數(shù)據(jù),這個二維表在關(guān)系數(shù)據(jù)庫中就稱為關(guān)系。關(guān)系數(shù)據(jù)庫就是表或者說是關(guān)系的集合。關(guān)系系統(tǒng)要求讓用戶所感覺的數(shù)據(jù)庫就是一張張表。在關(guān)系系統(tǒng)中,表是邏輯結(jié)構(gòu)而不是物理結(jié)構(gòu)。

關(guān)系操作傳統(tǒng)的關(guān)系運(yùn)算:并(Union)交(Intersection)差(Difference)廣義笛卡爾乘積(ExtendedCartesianProduct)專門的關(guān)系運(yùn)算:選擇(Select)投影(Project)連接(Join)除(Divide)關(guān)系操作(續(xù))查詢(Query)插入(Insert)刪除(Delete)修改(Update)關(guān)系模型的操作對象是集合,而不是行。集合處理能力是關(guān)系系統(tǒng)區(qū)別于其他系統(tǒng)的一個重要特征。關(guān)系操作與非關(guān)系操作的比較非關(guān)系模型各個數(shù)據(jù)記錄之間是通過指針等方式連接的,當(dāng)要定位到某條記錄時,需要用戶自己按指針的鏈接方向逐層查找。關(guān)系數(shù)據(jù)模型是按集合進(jìn)行操作,用戶只需指定數(shù)據(jù)的定位條件,數(shù)據(jù)庫管理系統(tǒng)就可以自動定位到該數(shù)據(jù)記錄。非關(guān)系模型查找示例查找計(jì)算機(jī)學(xué)院軟件工程教研室張海濤。關(guān)系模型查找示例學(xué)號姓名性別年齡所在系9512101李勇

男19計(jì)算機(jī)系

9512102劉晨

男20計(jì)算機(jī)系

9512103王敏

女20計(jì)算機(jī)系

9521101張立

男22信息系

9521102吳賓

女21信息系

查找:信息系學(xué)號為9521101的學(xué)生9521101張立

男22信息系

關(guān)系操作小結(jié)關(guān)系操作是通過關(guān)系語言實(shí)現(xiàn)的,關(guān)系語言的特點(diǎn)是高度非過程化的。非過程化是指:用戶不必關(guān)心數(shù)據(jù)的存取路徑和存取過程,用戶只需要提出數(shù)據(jù)請求,數(shù)據(jù)庫管理系統(tǒng)就會自動完成用戶請求的操作;用戶也沒有必要編寫程序代碼來實(shí)現(xiàn)對數(shù)據(jù)的重復(fù)操作。3.1.3數(shù)據(jù)完整性約束

數(shù)據(jù)完整性是指保證數(shù)據(jù)正確性的特征。包括兩個方面:與現(xiàn)實(shí)世界中應(yīng)用需求的數(shù)據(jù)的相容性和正確性;數(shù)據(jù)庫內(nèi)數(shù)據(jù)之間的相容性和正確性。如:學(xué)生的學(xué)號必須是惟一的。性別只能是‘男’和‘女。數(shù)據(jù)完整性由完整性規(guī)則定義,而關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件。在關(guān)系數(shù)據(jù)模型中一般將數(shù)據(jù)完整性分為三類實(shí)體完整性參照完整性用戶定義的完整性3.2關(guān)系數(shù)據(jù)模型的基本術(shù)語關(guān)系:關(guān)系就是二維表。并滿足如下性質(zhì):關(guān)系表中的每一列都是不可再分的基本屬性;表中的行、列次序并不重要。屬性:表中的每一列是一個屬性值集,列可以命名,稱為屬性名。值域:屬性的取值范圍。如,性別只能是‘男’和‘女’兩個值。關(guān)系數(shù)據(jù)模型的基本術(shù)語(續(xù))元組:表中的每一行稱作是一個元組,它相當(dāng)于一個記錄值。分量:元組中的每一個屬性值稱為元組的一個分量,n元關(guān)系的每個元組有n個分量。關(guān)系模式:關(guān)系模式是關(guān)系的“型”或元組的結(jié)構(gòu)共性的描述。關(guān)系模式實(shí)際上對應(yīng)關(guān)系表的表頭。設(shè)關(guān)系名為R,屬性分別為A1,A2,…,An,則關(guān)系模式可以表示為:

R(A1,A2,…,An)

關(guān)系數(shù)據(jù)模型的基本術(shù)語(續(xù))關(guān)系數(shù)據(jù)庫:對應(yīng)于一個關(guān)系模型的所有關(guān)系的集合稱為關(guān)系數(shù)據(jù)庫。候選碼:能夠惟一標(biāo)識關(guān)系中的一個元組的一個屬性或最小屬性組。主碼(也稱為主鍵或主關(guān)鍵字):當(dāng)一個關(guān)系中有多個候選碼時,可以從中選擇一個作為主碼。每個關(guān)系只能有一個主碼。主屬性:包含在任一候選碼中的屬性。非主屬性:不包含在任一候選碼中的屬性。主碼的確定主碼是表中的一個屬性或?qū)傩越M,用于惟一地確定一個元組。主碼可以由一個屬性組成。如學(xué)生基本信息關(guān)系中,主碼是:學(xué)號也可以由多個屬性共同組成。學(xué)生選課關(guān)系的主碼是(學(xué)號,課程號)。確定主碼時注意關(guān)系的主碼與其實(shí)際的應(yīng)用語義有關(guān)、與關(guān)系模式的設(shè)計(jì)者的意圖有關(guān)的。不能根據(jù)關(guān)系在某時刻所存儲的內(nèi)容來決定其主碼。例如:例如,“選課”關(guān)系中,用(學(xué)號,課程號)作主碼在一個學(xué)生對一門課程只能有一次考試的前提下是成立的,如果一個學(xué)生對一門課程可有多次考試,則用(學(xué)號,課程號)作主碼就不夠了。這時可在該關(guān)系中添加一個“考試次數(shù)”列,并用(學(xué)號,課程號,考試次數(shù))作為主碼。3.3關(guān)系模型的形式化定義

1.形式化定義

笛卡爾積:設(shè)D1,D2,…,Dn為任意集合,定義笛卡爾積D1,D2,…,Dn為:

D1×D2×

…×Dn=

{(d1,d2,…,dn)|di

∈Di,i=1,2,…,n}其中每一個元素(d1,d2,…,dn)稱為一個n元組,簡稱元組。元組中每一個di稱為是一個分量。

笛卡兒乘積示例設(shè):D1={計(jì)算機(jī)軟件專業(yè),信息科學(xué)專業(yè)}D2={張珊,李海,王宏}D3={男,女}則D1×D2×D3笛卡爾積為:D1×D2×D3={(計(jì)算機(jī)軟件專業(yè),張珊,男),(計(jì)算機(jī)軟件專業(yè),張珊,女),(計(jì)算機(jī)軟件專業(yè),李海,男),(計(jì)算機(jī)軟件專業(yè),李海,女),(計(jì)算機(jī)軟件專業(yè),王宏,男),(計(jì)算機(jī)軟件專業(yè),王宏,女),(信息科學(xué)專業(yè),張珊,男),(信息科學(xué)專業(yè),張珊,女),(信息科學(xué)專業(yè),李海,男),(信息科學(xué)專業(yè),李海,女),(信息科學(xué)專業(yè),王宏,男),(信息科學(xué)專業(yè),王宏,女)}笛卡爾積實(shí)際上就是一個二維表

笛卡爾積D1,D2,…,Dn的任意一個子集稱為D1,D2,…,Dn上的一個n元關(guān)系。形式化的關(guān)系定義同樣可以把關(guān)系看成二維表,給表的每個列取一個名字,稱為屬性。n元關(guān)系有n個屬性,一個關(guān)系中的屬性的名字必須是唯一的。屬性Di的取值范圍(i=1,2,…,n)稱為該屬性的值域(domain)。

從集合論的觀點(diǎn)也可以將關(guān)系定義為:關(guān)系是一個有K個屬性的元組的集合。

2.對關(guān)系的限定關(guān)系中的每個分量都必須是不可再分的最小數(shù)據(jù)項(xiàng)。表中列的數(shù)據(jù)類型是固定的,即每個列中的分量是同類項(xiàng)的數(shù)據(jù),來自相同的值域。不同的列的數(shù)據(jù)可以取自相同的值域,每個列稱為一個屬性,每個屬性有不同的屬性名。關(guān)系表中行、列的順序不重要。同一個關(guān)系中元組不能重復(fù)。3.3關(guān)系模型的完整性約束

3.3.1實(shí)體完整性3.3.2參照完整性3.3.3用戶定義的完整性實(shí)體完整性實(shí)體完整性是保證關(guān)系中的每個元組都是可識別的和惟一的。

而且表中不允許存在如下的記錄:無主碼值的記錄主碼值相同的記錄缺少主碼值數(shù)據(jù)示例學(xué)號姓名性別年齡所在系李勇

男19計(jì)算機(jī)系

9512102劉晨

男20計(jì)算機(jī)系

李勇

男19計(jì)算機(jī)系

9512103王敏

女20計(jì)算機(jī)系

9521101張立

男22信息系

9521102吳賓

女21信息系

?主碼值重復(fù)情況*26?學(xué)號姓名性別年齡所在系9512101李勇男19計(jì)算機(jī)系9512102劉晨男20計(jì)算機(jī)系9512101李勇男19計(jì)算機(jī)系9512103王敏女20計(jì)算機(jī)系9521101張立男22信息系9521102吳賓女21信息系參照完整性用于描述實(shí)體之間的聯(lián)系。參照完整性一般是指多個實(shí)體(表)之間的關(guān)聯(lián)關(guān)系。

一般用外碼實(shí)現(xiàn)。外碼:取作本表(子表)屬性之一的外表(父表,主表)主碼。主碼值先在主表中生成,后在子表中引用外碼引用例1學(xué)生班屬于(學(xué)號,姓名,班號,…)(班號,專業(yè),人數(shù),…)外碼引用例2學(xué)生課程修課(學(xué)號,姓名,…)(課程號,課程名,…)(學(xué)號,課程號,成績,…)外碼引用例3職工(職工號,姓名,性別,直接領(lǐng)導(dǎo))

外碼定義設(shè)F是關(guān)系R的一個或一組屬性,如果F與關(guān)系S的主碼相對應(yīng),則稱F是關(guān)系R的外碼(ForeignKey),并稱關(guān)系R為參照關(guān)系(ReferencingRelation),關(guān)系S為被參照關(guān)系(ReferencedRelation)或目的關(guān)系(TargetRelation)。關(guān)系R和關(guān)系S不一定是不同的關(guān)系。參照表示圖示例:參照完整性規(guī)則參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。對于外碼,一般應(yīng)符合如下要求:或者值為空;或者等于其所應(yīng)用的關(guān)系中的某個元組的主碼值。3.4.3用戶定義的完整性也稱為域完整性或語義完整性。按應(yīng)用語義,屬性數(shù)據(jù)有:類型與長度限制:方便計(jì)算機(jī)操作取值范圍限制:防止屬性值與應(yīng)用語義矛盾語義許可取值范圍約束例:

成績?nèi)0..100],{優(yōu)、良、中、及格、不及格}3.5關(guān)系代數(shù)

關(guān)系模型源于數(shù)學(xué),關(guān)系是由元組構(gòu)成的集合,可以通過關(guān)系的運(yùn)算來表達(dá)查詢要求,關(guān)系代數(shù)是關(guān)系操作語言的一種傳統(tǒng)的表示方式,它是一種抽象的查詢語言。關(guān)系代數(shù)的運(yùn)算可分為兩大類:傳統(tǒng)的集合運(yùn)算:廣義笛卡爾積運(yùn)算、并、交和差運(yùn)算。專門的關(guān)系運(yùn)算:選擇、投影、連接和除運(yùn)算。

關(guān)系運(yùn)算符運(yùn)算符含義傳統(tǒng)的集合運(yùn)算∪并∩交-差×廣義笛卡爾積專門的關(guān)系運(yùn)算∏選擇σ投影連接÷除關(guān)系運(yùn)算符(續(xù))運(yùn)算符含義比較運(yùn)算符>大于<小于=等于≠不等于≤小于等于≥大于等于邏輯運(yùn)算符

非∧與∨或﹁﹁3.5.1傳統(tǒng)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,設(shè)關(guān)系R和S均是n元關(guān)系,且相應(yīng)的屬性值取自同一個值域,則可以定義三種運(yùn)算:并運(yùn)算(∪)交運(yùn)算(∩)差運(yùn)算(―)并、交、差運(yùn)算示意圖*401.并運(yùn)算關(guān)系R與關(guān)系S的并記為:

R∪S={t|t∈R∨t∈S}其結(jié)果仍是n目關(guān)系,由屬于R或?qū)儆赟的元組組成。

顧客號姓名性別年齡S01張宏男45S02李麗女34S03王敏女28顧客號姓名性別年齡S02李麗女34S04錢景男50S06王平女24顧客號姓名性別年齡S01張宏男45S02李麗女34S03王敏女28S04錢景男50S06王平女242.交運(yùn)算關(guān)系R與關(guān)系S的交記為:

R∩S={t|t∈R∧t∈S}其結(jié)果仍是n目關(guān)系,由屬于R并且也屬于S的元組組成。

顧客號姓名性別年齡S01張宏男45S02李麗女34S03王敏女28顧客號姓名性別年齡S02李麗女34S04錢景男50S06王平女24顧客號姓名性別年齡S02李麗女343.差運(yùn)算關(guān)系R與關(guān)系S的差記為:R-S={t|t∈R∧tS}

其結(jié)果仍是n目關(guān)系,由屬于R并且也屬于S的元組組成。

顧客號姓名性別年齡S01張宏男45S02李麗女34S03王敏女28顧客號姓名性別年齡S02李麗女34S04錢景男50S06王平女24顧客號姓名性別年齡S01張宏男45S03王敏女284.廣義笛卡爾積兩個分別為n目和m目的關(guān)系R和關(guān)系S的廣義笛卡爾積是一個(m+n)列的元組的集合。元組的前n個列是關(guān)系R的一個元組,后m個列是關(guān)系S的一個元組。若R有K1個元組,S有K2個元組,則關(guān)系R和關(guān)系S的廣義笛卡爾積有K1×K2個元組,記做:R×S={tr^ts|trR∧tsS}tr^ts表示由兩個元組tr和ts前后有序連接而成的一個元組。廣義笛卡爾積示例ABa1b1a2b2CDEc1d1e1c2d2e2c3d3e3ABCDEa1b1c1d1e1a1b1c2d2e2a1b1c3d3e3a2b2c1d1e1a2b2c2d2e2a2b2c3d3e33.5.2專門的關(guān)系運(yùn)算專門的關(guān)系運(yùn)算包括:投影、選擇、連接和除等操作,其中前兩個為一元操作,后兩個為二元操作。

選擇:投影連接

除將相應(yīng)的運(yùn)算符作用在對應(yīng)的運(yùn)算對象上,得到預(yù)期的運(yùn)算結(jié)果,這就是運(yùn)算。雙目單目1.選擇(Selection)σF(R)={r|r∈R∧F(t)=‘真’

}其中:σ是選擇運(yùn)算符,R是關(guān)系名,r是元組,F(xiàn)是邏輯表達(dá)式,取邏輯“真”值或“假”值。RσF(R)……示例SnoSnameSsexSageSdept9512101李勇男19計(jì)算機(jī)系9512102劉晨男20計(jì)算機(jī)系9512103王敏女20計(jì)算機(jī)系9521101張立男22信息系9521102吳賓女21信息系9521103張海男20信息系例,選擇計(jì)算機(jī)系的學(xué)生信息:σSdept=‘計(jì)算機(jī)系’(Student)2.投影(Projection)∏A(R)={r.A|r∈R}其中:∏是投影運(yùn)算符,R是關(guān)系名,A是被投影的屬性或?qū)傩越M。r.A表示r這個元組中相應(yīng)于屬性(集)A的分量,也可以表示為r[A]。投影運(yùn)算示意圖RΠA(R)投影*50示例SnoSnameSsexSageSdept9512101李勇男19計(jì)算機(jī)系9512102劉晨男20計(jì)算機(jī)系9512103王敏女20計(jì)算機(jī)系9521101張立男22信息系9521102吳賓女21信息系9521103張海男20信息系例,選擇sname,sdept兩個列構(gòu)成新關(guān)系:

∏sname,sdept(Student)3.連接其中:A和B分別是關(guān)系R和S上可比的屬性組,θ是比較運(yùn)算符,連接運(yùn)算從R和S的廣義笛卡爾積R×S中選擇(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較運(yùn)算符θ的元組。

等值連接

當(dāng)θ為“=”時的連接為等值連接,是從關(guān)系R與關(guān)系S的廣義笛卡爾積中選取A,B屬性值相等的那些元組。

自然連接自然連接去掉結(jié)果中的重復(fù)列。自然連接與等值連接的差別為:自然連接要求相等的分量必須有共同的屬性名,等值連接則不要求;自然連接要求把重復(fù)的屬性名去掉,等值連接卻不這樣做。

等值連接示例snosnameSsexSageSdeptsnocnograde9512101李勇男19計(jì)算機(jī)系9512101c01909512101李勇男19計(jì)算機(jī)系9512101c02869512102劉晨男20計(jì)算機(jī)系9512102c02789512102劉晨男20計(jì)算機(jī)系9512102c04669521102吳賓女21信息系9521102c01829521102吳賓女21信息系9521102c02759521102吳賓女21信息系9521102c04929521102吳賓女21信息系9521102c0550自然連接示例snosnameSsexSageSdeptcnograde9512101李勇男19計(jì)算機(jī)系c01909512101李勇男19計(jì)算機(jī)系c02869512102劉晨男20計(jì)算機(jī)系c02789512102劉晨男20計(jì)算機(jī)系c04669521102吳賓女21信息系c01829521102吳賓女21信息系c02759521102吳賓女21信息系c04929521102吳賓女21信息系c05504.除(Division)(1)除法的簡單形式設(shè)關(guān)系S的屬性是關(guān)系R的屬性的一部分,則R÷S為這樣一個關(guān)系:此關(guān)系的屬性是由屬于R但不屬于S的所有屬性組成;R÷S的任一元組都是R中某元組的一部分。但必須符合下列要求,即任取屬于R÷S的一個元組t,則t與S的任一元組連接后,都為R中原有的一個元組。除運(yùn)算示意圖*584.除(續(xù))(2)除法的一般形式設(shè)有關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為關(guān)系的屬性組,則:

R(X,Y)÷S(Y,Z)=R(X,Y)÷∏Y(S)4.除(續(xù))象集:給定一個關(guān)系R(X,Y),X和Y為屬性組。定義,當(dāng)t[X]=x時,x在R中的象集為:Yx={t[Y]|t∈R∧t[X]=x}上式中:t[Y]和t[X]分別表示R中的元組t在屬性組Y和X上的分量的集合。

象集示例1*61有元組:(9521101,張立,男,20,信息系)設(shè)X={Sdept,Ssex},Y={Sno,Sname,Sage},t[X]的一個值:x=(信息系,男)

則Yx為t[X]=x=(信息系,男)時所有t[Y]的值:

Yx={(9521101,張立,22),(9521103,張海,20)}SnoSnameSsexSageSdept9512101李勇男19計(jì)算機(jī)系9512102劉晨男20計(jì)算機(jī)系9512103王敏女20計(jì)算機(jī)系9521101張立男22信息系9521102吳賓女21信息系9521103張海男20信息系象集示例2*62設(shè)X={Sno},Y={Cno,Grade},則當(dāng)X取“9512102”時,Y的象集為:Yx={(C02,78),

(C04,66)}SnoCnoGrade9512101C01909512101C02869512102C02789512102C04669521102C01829521102C02759521102C04929521102C05504.除(續(xù))除法的一般形式:設(shè)有關(guān)系R(X,Y)和S(Y,Z),其中X、Y、Z為關(guān)系的屬性組,則:R÷S={tr[X]|trR∧∏Y(S)

Yx}

除示例÷=至少選了“C01”和“C02”課程的學(xué)生查詢修c02號課程的學(xué)生的學(xué)號和成績?!莝no,grade(σcno=‘c02’(SC))查詢信息系修c04號課程的學(xué)生的姓名和成績?!莝name,grade(σcno=‘c04’(SC)σsdept=‘信息系’(Student))查詢修了第2學(xué)期課程的學(xué)生的姓名、所在系和所選的課程號?!莝name,sdept,cno(σsemester=2(Course)SCStudent)查詢修了全部課程的學(xué)生的學(xué)號和姓名?!莝no,sname(Student(SC÷∏cno(Course)))示例示例(續(xù))查詢選了“VB”課程且考試成績大于等于80的學(xué)生姓名、所在系和成績?!荢name,Sdept,Grade(σCname=‘VB’∧Grade>=80(CourseSC

溫馨提示

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

評論

0/150

提交評論