




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章關系數據庫
4.1關系模型及其定義4.1.1關系數據結構4.1.2關系操作概述
4.1.3關系的完整性
4.2關系代數4.2.1傳統的集合運算
4.2.2專門的關系運算
4.2.3用關系代數表示檢索的例子
4.1關系模型及其定義
4.1.1關系數據結構1.關系的數學定義1)域的定義:域是一組具有相同數據類型的值的集合。2)笛卡兒積(CartesianProduct)的定義:給定一組域D1,D2,…,Dn,這些域中可以有相同的部分,則笛卡兒積為:
D1×D2×…×Dn={(d1,d2,…dn)|di∈Di,i=1,2,…,n}.其中:每一個元素(d1,d2,…,dn
)稱為一個n元組,簡稱元組。元素中的每一個值di稱作一個分量)。
例如給出三個域:D1=姓名={王平,李麗,張曉剛};D2=性別={男,女};D3=年齡={19,20}.則D1,D2,D3的笛卡兒積為D1×D2×D3
姓名性別年齡王平男19王平男20王平女19王平女20李麗男19李麗男20李麗女19李麗女20張曉剛男19張曉剛男20張曉剛女19張曉剛女201.關系的數學定義3)關系(Relation)的定義:D1×D2×…×Dn的子集稱作在域D1,D2,…,Dn上的關系,表示為:R(D1,D2,…,Dn).
這里:R表示關系的名字,n是關系的目或度。從D1×D2×D3中取出有用的元組,所構造的學生關系如表所示姓名性別年齡王平男20李麗女20張曉剛男192.關系中的基本名詞
1)元組:關系表中的每一橫行稱作一個元組,組成元組的元素為分量。
2)屬性:關系中的每一列稱為一個屬性。
3)候選碼、主碼:若關系中的某一屬性組(或單個屬性)的值能惟一地標識一個元組,則稱該屬性組(或屬性)為候選碼。若關系的候選碼中只包含一個屬性,則稱它為單屬性碼;若候選碼是由多個屬性構成的,則稱為它為多屬性碼。當一個關系有多個候選碼時,應選定其中的一個候選碼為主碼。(如課程名,課程號在課程表中都是候選碼)4)全碼:若關系中只有一個候選碼,且這個候選碼中包括全部屬性,則這種候選碼為全碼。
5)主屬性和非主屬性:關系中,候選碼中的屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性。
3.數據庫中關系的類型
1)基本表:關系數據庫中實際存在的表,是實際存儲數據的邏輯表示。
2)視圖表:視圖表是由基本表或其他視圖表導出的表。
3)查詢表:查詢表是指查詢結果表或查詢中生成的臨時表。
4.數據庫中基本關系的性質
1)同一屬性的數據具有同質性.
2)同一關系的屬性名具有不能重復性。
3)關系中的列位置具有順序無關性。
4)關系具有元組無冗余性。
5)關系中的元組位置具有順序無關性。
6)關系中每一個分量都必須是不可分的數據項。5.關系模式的定義
形式化地表示為:R(U,D,Dom,F)
其中:R為關系名,它是關系的形式化表示;U為組成該關系的屬性集合;D為屬性組U中屬性所來自的域;Dom為屬性向域的映象的集合;F為屬性間數據的依賴關系集合。
關系模式通常可以簡單記為:
R(U)或R(A1,A2,…,An).
其中:R為關系名,A1,A2,…,An為屬性名。6.關系數據庫
在某一應用領域中,所有實體集及實體之間聯系所形成關系的集合就構成了一個關系數據庫。
4.1.2關系操作概述關系操作的基本內容
關系操作包括數據查詢、數據維護和數據控制三大功能.
關系操作的數據查詢和數據維護功能使用關系代數中的選擇(Select)、投影(Project)、連接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)以及廣義笛卡兒積(ExtendedCartesianProduct)8種操作。2.關系操作的特點(1)關系操作語言操作一體化關系語言具有數據定義、查詢、更新、控制一體化的特點。(2)關系操作的方式是一次一集合方式(3)關系操作語言是高度非過程化的語言
3.關系操作語言的種類(1)關系代數語言
用對關系的運算來表達查詢要求的語言。(2)關系演算語言
用查詢得到的元組應滿足的謂詞條件來表達查詢要求的語言。關系演算語言又可以分為元組演算語言和域演算語言兩種:元組演算語言的謂詞變元的基本對象是元組變量,例如APLHA語言;域演算語言的謂詞變元的基本對象是域變量,QBE(QueryByExample)是典型的域演算語言。(3)基于映象的語言
具有關系代數和關系演算雙重特點的語言。SQL是基于映象的語言。SQL包括數據定義、數據操作和數據控制三種功能,具有語言簡潔,易學易用的特點,它是關系數據庫的標準語言和主流語言。4.1.3關系的完整性1.關系模型的實體完整性(EntityIntegrity)
若屬性A是基本關系R的主屬性,則屬性A的值(各分量)不能為空值。
說明如下:
1)實體完整性能夠保證實體的唯一性。
2)實體完整性能夠保證實體的可區分性。現有如下關系S(學號,姓名,性別,專業號,年齡)C(課程號,課程名,學分);SC(學號,課程號,成績).
現有用戶向數據庫中輸入如下記錄,是否插入成功Insertintos(‘01’,’chen’,’女’,’07’,22)----successInsertintoc(‘’,’數據庫原理及應用’,3)Insertintosc(’01’,’’,68)Insertintosc(’02’,’01’,90)2.關系模型的參照完整性
1)外碼和參照關系
設F是基本關系R的一個或一組屬性,但不是關系R的主碼(或候選碼)。如果F與基本關系S的主碼相對應,則稱F是R的外碼,并稱R為參照關系,S為被參照關系或目標關系。例如,“基層單位數據庫”中有“職工”和“部門”兩個關系,其關系模式如下:
職工(職工號,姓名,工資,性別,部門號);
部門(部門號,名稱,領導人號).
其中:主碼用下劃線標出,外碼用紅色標出。再例,在學生課程庫中,關系模式表示為:
學生(學號,姓名,性別,專業號,年齡);
課程(課程號,課程名,學分);
選修(學號,課程號,成績).
其中:主碼用下劃線標出。2)參照完整性規則
若屬性(或屬性組)F是基本關系R的外碼,它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須取空值(F的每個屬性值均為空值)或者等于S中某個元組的主碼值。學生(學號,姓名,性別,專業號,年齡)專業(專業號,專業名)學生關系中每個元組的”專業號”屬性只能是下面的兩類型值:1)空值:該學生未分配專業2)非空值:該值必須是專業關系中某個元組的”專業號”值。表示該學生分配到一個存在的專業中參照完整性S(學號,姓名,姓名,專業號,年齡)C(課程號,課程名,學分)SC(學號,課程號,成績)INSERTINTOC(‘01’,’數據庫原理’,3)成功INSERTINTOSC(‘01’,’02’,68)失敗INSERTINTOSC(‘02’,’01’,90)失敗違背實體完整性,沒有違背參照完整性INSERTINTOSC(‘0’,’’,68)失敗假設數據庫中存在關系模式:Employee(職工號,領導者職工號,姓名)自參照完整性,Insertintoemployee(’01’,’01’,’chen’)insertintoemployee(’02’,’01’,’xia’)成功Insertintoemployee(’03’,’02’,’chen’)Insertintoemployee(’05’,’04’,’chen’)選修關系中成績在1—100之間某個屬性取值(如課程名)唯一值3用戶定義的完整性。
用戶定義的完整性就是針對某一具體關系數據庫的約束條件,它反映某一具體應用所涉及的數據必須滿足的語義要求。4.2關系代數1)集合運算符:∪(并運算),-(差運算),∩(交運算),×(廣義笛卡兒積)。2)專門的關系運算符:σ(選擇),π(投影),(連接),÷(除)。3)比較運算符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于)。4)邏輯運算符:(非),∧(與),∨(或)。
4.2.1傳統的集合運算
設關系R和S具有相同的目n(即兩個關系都有n個屬性),且相應的屬性取自同一個域。
1.并(Union)運算
R∪S={t|tR∨tS}.
R和S并的結果仍為n目關系,其數據由屬于R或屬于S的元組組成。
2.差(Difference)運算
R–S={t|tR∧tS}.
R和S差運算的結果關系仍為n目關系,其數據由屬于R而不屬于S的所有元組組成。
3.交(Intersection)運算
R∩S={t|tR∧tS}.
運算的結果關系仍為n目關系,其數據由既屬于R同時又屬于S的元組組成。交可用差來表示:
R∩S=R–(R–S)
.4.笛卡兒積運算
設n目和m目的關系R和S,它們的笛卡兒積是一個(n+m)目的元組集合。元組的前n列是關系R的一個元組,后m列是關系S的一個元組。若R有k1個元組,S有k2個元組,則關系R和關系S的廣義笛卡兒積應當有k1×k2個元組。R和S的笛卡兒積表示為:
R×S={trts|trR∧tsS}.傳統集合運算的實例
ABC
ABC
ABCa1b1c1a1b2c2a1b1c1a1b2c2a1b3c2a1b2c2a2b2c1
a2b2c1
a1b3c2RSR∪S
ABC
R.AR.BR.CS.AS.BS.Ca1b1C1a1b1c1a1b2c2a2b2C1a1b1c1a1b3c2
R∩Sa1b2c2a1b2c2a1b2c2a1b3c2ABCa2b2c1a1b2c2a1b2C2a2b2c1a1b3c2R-SR×S
ABabcdecABdbdaacRSR-SR∪S4.2.2專門的關系運算1.記號說明
(1)關系模式、關系、元組和分量
設關系模式為R(A1,A2,…,An),它的一個關系設為R,tR表示t是R的一個元組,t[Ai]則表示元組t中相對于屬性Ai的一個分量。
(2)域列和域列非
若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,則A稱為屬性列或域列,t[A]={t[Ai1],t[Ai2],…,t[Aik]}表示元組t在屬性列A上諸分量的集合。則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的屬性組,它稱為A的域列非。(3)元組連串(Concatenation)
設R為n目關系,S為m目關系,且trR,tSS,則trtS稱為元組的連串。連串是一個(n+m)列的元組,它的前n個分量是R中的一個n元組,后m個分量為S中的一個m元組。(4)屬性的象集(ImagesSet)
給定一個關系R(X,Z),X和Z為屬性組。定義當t[X]=x時,x在R中的象集為:
Zx={t[Z]|tR,t[X]=x}.
上式表示,x在R中的象集為R中Z屬性對應分量的集合,而這些分量所對應的元組中的屬性組X上的值應為x。2.專門關系運算的定義(1)選擇(Selection)運算
選擇運算又稱為限制運算。選擇運算指在關系R中選擇滿足給定條件的元組,記作:
σF(R)={t|tR∧F(t)=‘真’}.
其中:F表示選擇條件,是一個邏輯表達式,取值為“真”或“假”。F由邏輯運算符﹁(非)、∧(與)和∨(或)連接各條件表達式組成。
條件表達式的基本形式為:X1θY1.
其中:θ是比較運算符,它可以是>、≥、<、≤、=、≠中的一種;X1和Y1是屬性名、常量或簡單函數;屬性名也可以用它的序號來代替。選擇操作是根據某些條件對關系做水平分割,即選取符合條件的元組例如,σ2>ˊ3ˊ(R)表示從R中挑選第2個分量值大于3的元組所構成的關系。書寫時,為了與屬性序號區別起見,常量用引號括起來,而屬性序號或屬性名不要用引號括起來。用關系代數表示下列操作
設學生課程數據庫,其關系模式為:
學生(學生,姓名,年齡,所在系);
課程(課程號,課程名,學分);
選課(學號,課程號,成績).【例4-1】用關系代數表示在學生課程數據庫中查詢計算機系的全體學生的操作。
σ所在系='計算機系'(學生)【例4-2】用關系代數表示在學生課程數據庫中查詢年齡小于20歲的學生的操作。
σ年齡<20(學生)(2)投影(Projection)運算
這個操作是對一個關系進行垂直分割,消去某些列,并重新安排列的順序。
關系R上的投影是從R中選擇出若干屬性列組成新的關系,記作:
πA(R)={t[A]|tR}.【例4-3】在學生課程數據庫中,查詢學生的姓名和所在系。表示為:π姓名,所在系(學生)例如,π3,1(R)表示關系R中取第1、3列,組成新的關系,新關系中第1列為R的第3列,新關系的第2列為R的第1列。如果R的每列標上屬性名,那么操作符π的下標處也可以用屬性名表示。例如,關系R(A,B,C),那么πC,A(R)與π3,1(R)是等價的。(3)連接運算
連接是從兩個關系的笛卡兒積中選取屬性間滿足一定條件的元組。記作:
RS={trts|trR∧tsS∧tr[A]θts[B]}.
AθB
其中:A和B分別為R和S上度數相等且可比的屬性組,θ是比較運算符。等值連接表示為:
R
S={trts|trR∧tsS∧tr[A]=ts[B]}.
A=B
說明:1.
也可以寫成。2.≡σ2<4(R×S)自然連接是一種特殊的等值連接:
RS={trts|trR∧tsS∧tr[A]=ts[A]}自然連接(naturaljoin)
兩個關系R和S的自然連接操作具體計算過程如下:①計算R×S;②設R和S的公共屬性是A1,…,AK,挑選R×S中滿足R.A1=S.A1,…,R.AK=S.AK的那些元組;③去掉S.A1,…,S.AK這些列。定義:其中i1,…,im為R和S的全部屬性,但公共屬性只出現一次。
≡【例4-4】設學生和選課關系中的數據如下,學生與選課之間的笛卡兒積、等值連接和自然連接的結果如表所示。
學號姓名年齡所在系
學號課程名成績98001張三20計算機系98001數據庫6298005李四21數學系98001數據結構73
98005微積分80學生
選課學生.學號姓名年齡所在系選課.學號課名成績980019800198001980059800598005張三張三張三李四李四李四202020212121計算機系計算機系計算機系數學系數學系數學系980019800198005980019800198005數據庫數據結構微積分數據庫數據結構微積分627380627380學生×選課
學生.學號姓名年齡所在系選課.學號課名成績980019800198005張三張三李四202021計算機系計算機系數學系980019800198005數據庫數據結構微積分627380學生.學號姓名年齡所在系課名成績980019800198005張三張三李四202021計算機系計算機系數學系數據庫數據結構微積分627380學生選課
學生.學號=選課.學號學生選課
ABCA1A1A2A2B1B2B3B456812BEB1B2B3B3B5371022關系R關系SAR.BCS.BEA1A1A1A1A2B1B1
B2
B2
B355668B2B3
B2
B3
B371071010一般連接RSC<EABCEA1A1A2A2B1B2B3B3568837102自然連接RSABCA1A1A2A2B1B2B3B456812BEB1B2B3B3B5371022關系R關系S兩個關系R和S在做自然連接時,選擇兩個關系在公共屬性上值相等的元組構成新的關系。此時,關系R中某些元組有可能在S中不存在公共屬性上值相等的元組,從而造成R中這些元組在操作時被舍棄了,同樣,S中某些元組也可能被舍棄。如果把舍棄的元組也保存在結果關系中,而在其他屬性上填空值(Null),那么這種連接就叫做外連接(Outerjoin)。如果只把左邊關系R中要舍棄的元組保留就叫做左外連接(Leftouterjoin或Leftjoin),如果只把右邊關系S中要舍棄的元組保留就叫做右外連接(Rightouterjoin或Rightjoin)。ABCEa1a1a2a2a2NULLb1b2b3b3b4b5568812NULL37102NULL2ABCEa1a1a2a2a2b1b2b3b3b456881237102NULLABCEa1a1a2a2NULLb1b2b3b3b55688NULL371022ABCa1a1a2a2b1b2b3b456812BEb1b2b3b3b5371022關系R關系S外連接左外連接右外連接RSABCabcbafcbdABCbafdad
R1=R-S,R2=R∪S,R3=R∩S,R4=R×SRSABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1R1=R-S,R2=R∪S,R3=R∩S,R4=ПA,B(σB=‘b1’(R))RSTABadbeccABdabadcACbbccbdR1=R-S,R2=R∪S,R3=R∞T,R4=R∞T,R5=ПA(R),R6=σA=C(R×T)
A<C(4)除(Division)運算
給定關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上的分量值x的象集Yx包含S在Y上的投影,即:
R÷S={tr[X]|tr
R∧πY(S)Yx}.
其中的Yx為x在R中的象集,x=tr[X]。
關系除法運算分下面4步進行:
1)將被除關系的屬性分為象集屬性和結果屬性:與除關系相同的屬性屬于象集屬性,不相同的屬性屬于結果屬性。
2)在除關系中,對與被除關系相同的屬性(象集屬性)進行投影,得到除目標數據集。
3)將被除關系分組,原則是,結果屬性值一樣的元組分為一組。
4)逐一考察每個組,如果它的象集屬性值中包括除目標數據集,則對應的結果屬性值應屬于該除法運算結果集。例關系做除法的例子。【例4-5】給出選課、選修課和必修課3個關系,它們的關系模式為:選課(學號,課號,成績);選修課(課號,課名);必修課(課號,課名).選課選修課學號課號成績
課號課名S1C1AC2計算機圖形學S1C2B必修課S1C3BS2C1A課號科名S2C3BC1數據結構S3C1BC3操作系統S3C3B選課÷選修課S4C1AS4C2A學號成績S5C2BS1BS5C3BS4AS5C1AS5B學號成績
學號S3BS1
S2S3S5選課÷必修課π學號,課號(選課)÷必修課
4.2.3用關系代數表示檢索的例子學生選課庫的關系模式為:
學生(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氣管插管術的配合與護理
- 2025年醫藥企業研發外包(CRO)模式的研發數據管理與信息安全報告
- 數字化轉型背景下的2025年公路貨運行業效率提升的物流行業產業鏈研究報告
- T/AHEMA 25-2022餐飲油煙排放在線監控系統運維技術規范
- 神經內科老年人的護理
- K2教育中STEM課程實施現狀與2025年發展前景報告
- 分析2025年南非斯特蘭德產區葡萄酒品牌國際化進程報告
- 互聯網醫療平臺2025年在線問診服務質量提升策略研究
- 痛經的中醫保健養生
- 種植二期手術的護理常規
- 公司高速公路占道施工應急方案
- 公司安全考核試題及答案
- 2025年兵團職工考試試題及答案
- 雨污水管施工方案
- 2025美國急性冠脈綜合征(ACS)患者管理指南解讀課件
- 人教版語文二年級下冊全冊課件
- 印刷企業管理制度匯編
- 2026年版廣西高等職業教育考試(新職教高考)普高生專用升高職大專《職業適應性測試》模擬試卷(第5套)
- 格力年終總結報告
- 中心城區供熱更新改造項目風險分析與管理
- 寧夏新希望賀蘭山牧業有限公司良種奶牛繁育基地建設項目環境影響報告書
評論
0/150
提交評論