版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第三章關系數據庫2.1關系數據模型2.2關系模型的基本術語與形式化定義3.3完整性約束3.4關系代數3.5關系演算1/12/202413.1關系數據模型關系數據模型源于數學。1970年IBM研究員E.F.Codd博士在美國計算機學會會刊(《CommunicationoftheACM》)上發(fā)表了題為“ARelationalModelofDataforSharedDataBanks”的論文,開創(chuàng)了數據庫系統(tǒng)的新紀元。1970之后,提出了關系代數和關系演算的概念1972年提出了關系的第一、第二、第三范式1974年提出了關系的BC范式1/12/202423.1關系數據模型關系數據模型的數據結構:二維表關系數據模型用二維表來組織數據。這個二維表在關系數據庫中就稱為關系。關系數據庫就是表或者說是關系的集合。關系數據模型的數據操作:傳統(tǒng)的關系運算:并、交、差、廣義笛卡爾乘積;專門的關系運算:選擇、投影、連接、除;數據更新操作:插入、刪除、更改。查詢的表達能力是其中最主要的部分查詢1/12/202433.1關系數據模型選擇、投影、并、差、笛卡爾積是5種基本操作關系操作的特點集合操作方式(一次一集合的方式):操作的對象和結果都是集合,這些集合可以只包含一行數據,也可以是不包含任何數據的空集合。集合處理能力是關系數據庫系統(tǒng)區(qū)別于其他系統(tǒng)的重要特征。1/12/202443.1關系數據模型關系模型與非關系模型區(qū)別:操作方式不同(非關系模型數據庫中典型的操作是一次一行或一次一條記錄)表達聯(lián)系的方式不同在非關系模型中,各個數據記錄之間是通過指針等方式連接的,當要定位到某條記錄時,需要用戶自己按指針的鏈接方向逐層查找——導航。在關系模型中,用戶只需指定數據的定位條件,數據庫管理系統(tǒng)就可以自動定位到該數據記錄——非導航。1/12/20245層次模型查找示例61/12/20246關系模型查找示例7學
號姓
名年
齡性
別所
在
系0811101李勇21男計算機系0811102劉晨20男計算機系0811103王敏20女計算機系0821101張立20男信息管理系0821102吳賓19女信息管理系0821101張立20男信息管理系1/12/202473.1關系數據模型注:關系數據庫在物理層也使用指針,但這些物理層的存儲細節(jié)對用戶來說都是不可見的,用戶所看到的物理層實際上就是存放數據的數據庫文件:文件名存放位置1/12/202483.1關系數據模型關系操作是通過關系語言實現(xiàn)的,關系語言的特點是高度非過程化:用戶不必關心數據的存取路徑和存取過程,只需要提出數據請求,DBMS會自動完成用戶請求的操作;用戶沒有必要編寫程序代碼來實現(xiàn)對數據的重復操作。1/12/202493.1關系數據模型關系數據模型的數據完整性約束:數據的完整性是指保證數據正確性的特征。數據完整性是一種語義概念,包括:與現(xiàn)實世界中應用需求的數據的相容性和正確性;數據庫內數據之間的相容性、有效性和正確性1/12/2024103.1關系數據模型數據完整性由一組完整性規(guī)則定義,關系模型的完整性規(guī)則是對關系的某種約束條件。在關系數據模型中將數據完整性分為三類:實體完整性參照完整性(引用完整性)用戶定義的完整性關系的兩個不變性1/12/2024113.2關系模型的基本術語與形式化定義關系模型的基本術語及形式化定義域:域是一組具有相同數據類型的值的集合,又稱為值域。(用D表示)例如整數、實數、字符串的集合。域中所包含的值的個數稱為域的基數(用m表示)。關系中用域表示屬性的取值范圍。例如:D1={李力,王平,劉偉} m1=3 D2={男,女} m2=2 D3={47,28,30} m3=3 其中,D1,D2,D3為域名,分別表示某一關系中姓名、性別、年齡的集合。域無排列次序,如D2={男,女}={女,男}1/12/202412笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Dn(它們可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡爾積為D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}3.2關系模型的基本術語與形式化定義1/12/2024133.2關系模型的基本術語與形式化定義
元組(Tuple)笛卡爾積中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組(Tuple)分量(Component)笛卡爾積元素(d1,d2,…,dn)中的每一個值di叫作一個分量元組不是di的集合,元組的每個分量(di)是按序排列的。如:(1,2,3)≠(2,3,1)≠(1,3,2);而集合中的元素是沒有排列次序的,如:{1,2,3}={2,3,1}={1,3,2}
1/12/2024143.2關系模型的基本術語與形式化定義笛卡爾積基數(Cardinalnumber)若Di(i=1,2,…,n)為有限集,其基數為mi(i=1,2,…,n),則D1×D2×…×Dn的基數M為:笛卡爾積的表示方法笛卡爾積可表示為一個二維表表中的每行對應一個元組,表中的每列對應一個域1/12/202415笛卡爾積可用二維表的形式表示:
姓名性別李力男李力女王平男王平女劉偉男劉偉女元組同一域3.2關系模型的基本術語與形式化定義1/12/202416關系(Relation) 笛卡爾積D1×D2×…×Dn的任一子集稱為定義在域D1,D2,…,Dn上的n元關系(Relation)
R(D1,D2…,Dn)關系的名字n是關系的目或度姓名性別李力男王平女劉偉男如,上例D1×D2笛卡爾積的某個子集可以構成教師關系T1,如表2.2所示D1×D2笛卡爾積的子集(關系T1)3.2關系模型的基本術語與形式化定義1/12/202417在關系R中,當n=1時,稱為單元關系。當n=2時,稱為二元關系,以此類推。關系中的每個元素是關系中的元組,通常用t表示,關系中元組個數是關系的基數由于關系是笛卡爾積的子集,因此,也可以把關系看成一個二維表。具有相同關系框架的關系稱為同類關系。姓名性別李力男王平女劉偉男元組域屬性屬性的名字惟一
1/12/202418姓名性別李力男李力女不符合實際意義的關系在關系模型中,關系可進一步定義為:
關系頭(Heading)+關系體(Body)
由屬性名的集合組成關系結構中的內容或者數據不變可變1/12/202419屬性關系中不同列可以對應相同的域,為了加以區(qū)分,必須對每列起一個名字,稱為屬性(Attribute)n目關系必有n個屬性候選碼(Candidatekey)若關系中的某一屬性或屬性組的值能唯一地標識一個元組,則稱該屬性或屬性組為候選碼簡單的情況:候選碼只包含一個屬性全碼(All-key)最極端的情況:關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼(All-key)3.2關系模型的基本術語與形式化定義1/12/2024203.2關系模型的基本術語與形式化定義主碼若一個關系有多個候選碼,則選定其中一個為主碼(Primarykey)主屬性包含在任何候選碼中的諸屬性稱為主屬性(Primeattribute)非主屬性不包含在任何侯選碼中的屬性稱為非主屬性(Non-Primeattribute)或非碼屬性(Non-keyattribute)1/12/2024213.2關系模型的基本術語與形式化定義三類關系基本關系(基本表或基表)實際存在的表,是實際存儲數據的邏輯表示查詢表查詢結果對應的表視圖表由基本表或其他視圖表導出的表,是虛表,不對應實際存儲的數據1/12/202422關系模式一個關系的屬性名的集合R(A1,A2,……An)叫做關系模式。其中:
R為關系名,A1,A2,…,An為屬性名(i=1,2,……n)。由定義可以看出,關系模式是關系的框架,或者稱為表框架,指出了關系由哪些屬性構成,是對關系結構的描述。一組關系模式的集合叫做關系數據庫模式。3.2關系模型的基本術語與形式化定義1/12/2024233.2關系模型的基本術語與形式化定義關系模式可以形式化地表示為:
R(U,D,DOM,F(xiàn))
R關系名
U
組成該關系的屬性名集合
D
屬性組U中屬性所來自的域
DOM屬性向域的映象集合
F
屬性間的數據依賴關系集合關系模式通??梢院営洖?/p>
R(U)或R(A1,A2,…,An)注:域名及屬性向域的映象常常直接說明為屬性的類型、長度1/12/202424關系模式是對關系結構的描述,是靜態(tài)的、穩(wěn)定的關系是關系模式在某一時刻的狀態(tài)或內容,是動態(tài)的、隨時間不斷變化的關系模式和關系往往統(tǒng)稱為關系,通過上下文加以區(qū)別。關系數據庫在一個給定的應用領域中,所有關系的集合構成一個關系數據庫3.2關系模型的基本術語與形式化定義1/12/202425基本關系的性質(對關系的限定)列是同質的(Homogeneous)不同的列可出自同一個域其中的每一列稱為一個屬性不同的屬性要給予不同的屬性名列的順序無所謂,,列的次序可以任意交換任意兩個元組的值不能完全相同行的順序無所謂,行的次序可以任意交換分量必須取原子值(對關系最基本的限定)3.2關系模型的基本術語與形式化定義1/12/2024263.3完整性約束實體完整性和參照完整性:關系模型必須滿足的完整性約束條件稱為關系的兩個不變性,應該由關系系統(tǒng)自動支持用戶定義的完整性:應用領域需要遵循的約束條件,體現(xiàn)了具體領域中的語義約束1/12/2024273.3完整性約束實體完整性規(guī)則(EntityIntegrity)若屬性A是基本關系R的主屬性,則屬性A不能取空值例:學生(學號,姓名,年齡,性別,專業(yè))主碼:學號不能取空值1/12/2024283.3完整性約束實體完整性規(guī)則的說明實體完整性規(guī)則是針對基本關系而言的。一個基本表通常對應現(xiàn)實世界的一個實體集?,F(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。關系模型中以主碼作為唯一性標識。碼中的屬性即主屬性不能取空值。主屬性取空值,就說明存在某個不可標識的實體,即存在不可區(qū)分的實體,這與實體的定義相矛盾,因此這個規(guī)則稱為實體完整性1/12/2024293.3完整性約束關系間的引用在關系模型中實體及實體間的聯(lián)系都是用關系來描述的,因此可能存在著關系與關系間的引用。例1學生實體、專業(yè)實體學生(學號,姓名,性別,專業(yè)號,年齡)專業(yè)(專業(yè)號,專業(yè)名)主碼主碼學生關系引用了專業(yè)關系的主碼“專業(yè)號”。學生關系中的“專業(yè)號”值必須是確實存在的專業(yè)的專業(yè)號,即專業(yè)關系中有該專業(yè)的記錄。1/12/2024303.3完整性約束例2:學生、課程、學生與課程之間的多對多聯(lián)系學生(學號,姓名,性別,專業(yè)號,年齡)課程(課程號,課程名,學分)選修(學號,課程號,成績)1/12/2024313.3完整性約束例3學生實體及其內部的一對多聯(lián)系學生(學號,姓名,性別,專業(yè)號,年齡,班長)“學號”是主碼,“班長”是外碼,它引用了本關系的“學號”“班長”必須是確實存在的學生的學號1/12/2024323.3完整性約束外碼設F是基本關系R的一個或一組屬性,但不是關系R的碼。如果F與基本關系S的主碼Ks相對應,則稱F是基本關系R的外碼基本關系R稱為參照關系(ReferencingRelation)基本關系S稱為被參照關系(ReferencedRelation)或目標關系(TargetRelation)1/12/202433[例1]:學生關系的“專業(yè)號與專業(yè)關系的主碼“專業(yè)號”相對應“專業(yè)號”屬性是學生關系的外碼專業(yè)關系是被參照關系,學生關系為參照關系3.3完整性約束1/12/202434[例2]:選修關系的“學號”與學生關系的主碼“學號”相對應選修關系的“課程號”與課程關系的主碼“課程號”相對應“學號”和“課程號”是選修關系的外碼學生關系和課程關系均為被參照關系選修關系為參照關系3.3完整性約束1/12/202435[例3]:“班長”與本身的主碼“學號”相對應“班長”是外碼學生關系既是參照關系也是被參照關系3.3完整性約束1/12/202436幾點說明:關系R和S不一定是不同的關系目標關系S的主碼Ks和參照關系的外碼F必須定義在同一個(或一組)域上外碼并不一定要與相應的主碼同名當外碼與相應的主碼屬于不同關系時,往往取相同的名字,以便于識別3.3完整性約束1/12/202437參照完整性規(guī)則若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值)或者等于S中某個元組的主碼值3.3完整性約束1/12/202438[例1]:學生關系中每個元組的“專業(yè)號”屬性只取兩類值:(1)空值,表示尚未給該學生分配專業(yè)(2)非空值,這時該值必須是專業(yè)關系中某個元組的“專業(yè)號”值,表示該學生不可能分配一個不存在的專業(yè)3.3完整性約束1/12/202439〔例2〕:選修(學號,課程號,成績)“學號”和“課程號”可能的取值:(1)選修關系中的主屬性,不能取空值(2)只能取相應被參照關系中已經存在的主碼值3.3完整性約束1/12/202440例3〕:學生(學號,姓名,性別,專業(yè)號,年齡,班長)“班長”屬性值可以取兩類值:(1)空值,表示該學生所在班級尚未選出班長(2)非空值,該值必須是本關系中某個元組的學號值3.3完整性約束1/12/202441用戶自定義的完整性約束針對某一具體關系數據庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求關系模型應提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應用程序承擔這一功能。例:
課程(課程號,課程名,學分)“課程號”屬性必須取唯一值非主屬性“課程名”也不能取空值“學分”屬性只能取值{1,2,3,4}3.3完整性約束1/12/2024423.4關系代數
關系代數語言用對關系的運算來表達查詢要求代表:ISBL關系演算語言:用謂詞來表達查詢要求元組關系演算語言謂詞變元的基本對象是元組變量代表:ALPHA,QUEL域關系演算語言謂詞變元的基本對象是域變量代表:QBE具有關系代數和關系演算雙重特點的語言代表:SQL(StructuredQueryLanguage)1/12/2024433.4關系代數關系代數是關系操作語言的一種傳統(tǒng)表示方式,是一種抽象的查詢語言。是一種純理論語言,它定義了一些操作,運用這些操作可以從一個或多個關系中得到另一個關系,而不改變源關系。關系代數的操作數和操作結果都是關系,而且一個操作的輸出可以是另一個操作的輸入。1/12/20248:41AM441/12/202444關系代數的運算對象是關系,運算結果也是關系。與一般的運算一樣,運算對象、運算符和運算結果是關系代數的三大要素。關系代數的運算按運算符的不同主要分為兩類:傳統(tǒng)的集合運算專門的關系運算1/12/20248:41AM453.4關系代數1/12/202445傳統(tǒng)的集合運算:把關系看成元組的集合,以元組作為集合中元素來進行運算,其運算是從關系的“水平”方向即行的角度進行的。包括并、差、交和笛卡爾積等運算。專門的關系運算:不僅涉及行運算,也涉及列運算,這種運算是為數據庫的應用而引進的特殊運算。包括選取、投影、連接和除法等運算。3.4關系代數1/12/2024461/12/20248:41AM473.4關系代數選擇投影選擇投影選擇投影1/12/2024471/12/20248:41AM483.4關系代數1/12/2024481.傳統(tǒng)的集合運算設給定兩個關系R、S,若滿足:(1)
具有相同的度n;(2)
R中第i個屬性和S中第i個屬性必須來自同一個域。則說關系R、S是相容的。除笛卡爾積外,其他的集合運算要求參加運算的關系必須滿足上述的相容性定義。3.4關系代數1/12/202449R∪S
仍為n目關系,由屬于R或屬于S的元組組成
R∪S={t|t
R∨t
S}3.4關系代數1/12/202450R-S
仍為n目關系,由屬于R而不屬于S的所有元組組成
R-S={t|t
R∧t
S}3.4關系代數1/12/202451R∩S仍為n目關系,由既屬于R又屬于S的元組組成
R∩S={t|t
R∧t
S}
R∩S=R–(R-S)=S-(S-R)3.4關系代數1/12/202452廣義的笛卡爾積(ExtendedCartesianProduct)R:n目關系,k1個元組S:m目關系,k2個元組R×S
列:(n+m)列元組的集合元組的前n列是關系R的一個元組后m列是關系S的一個元組行:k1×k2個元組R×S={tr
ts|tr
R∧ts
S}3.4關系代數1/12/2024533.4關系代數1/12/2024543.4關系代數專門的關系運算先引入幾個記號(1)R,t
R,t[Ai]
設關系模式為R(A1,A2,…,An)
它的一個關系設為R
t
R表示t是R的一個元組
t[Ai]則表示元組t中相應于屬性Ai的一個分量1/12/202455(2)A,t[A],A
若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,則A稱為屬性列或屬性組。
t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元組t在屬性列A上諸分量的集合。
A則表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的屬性組。3.4關系代數1/12/202456(3)tr
tsR為n目關系,S為m目關系。
tr
R,ts
S,tr
ts稱為元組的連接。
tr
ts是一個n+m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。3.4關系代數1/12/202457(4)象集Zx
給定一個關系R(X,Z),X和Z為屬性組。當t[X]=x時,x在R中的象集(ImagesSet)為:
Zx={t[Z]|t
R,t[X]=x}
它表示R中屬性組X上值為x的諸元組在Z上分量的集合3.4關系代數1/12/202458x1在R中的象集
Zx1
={Z1,Z2,Z3},x2在R中的象集
Zx2
={Z2,Z3},x3在R中的象集
Zx3={Z1,Z3}象集舉例
3.4關系代數1/12/202459專門的關系運算選擇投影連接除3.4關系代數1/12/202460(a)
Student學生-課程數據庫:
學生關系Student、課程關系Course和選修關系SC學號Sno姓名Sname性別Ssex年齡Sage所在系Sdept200215121李勇男20CS200215122劉晨女19IS200215123王敏女18MA200215125張立男19IS3.4關系代數1/12/202461課程號Cno課程名Cname先行課Pcno學分Ccredit1數據庫542數學23信息系統(tǒng)144操作系統(tǒng)635數據結構746數據處理27PASCAL語言64Course(b)3.4關系代數1/12/202462
(c)SC學號Sno課程號Cno成績Grade2002151211922002151212852002151213882002151222902002151223803.4關系代數1/12/202463選擇(Selection)選擇又稱為限制(Restriction)選擇運算符的含義在關系R中選擇滿足給定條件的諸元組
σF(R)={t|t
R∧F(t)='真'}F:選擇條件,是一個邏輯表達式,基本形式為:
X1θY13.4關系代數1/12/202464選擇運算是從關系R中選取使邏輯表達式F為真的元組,是從行的角度進行的運算σ3.4關系代數1/12/202465[例1]查詢信息系(IS系)全體學生
σSdept
='IS'(Student)
或σ5='IS'(Student)結果:SnoSnameSsexSageSdept200215122劉晨女19IS200215125張立男19IS3.4關系代數1/12/202466[例2]查詢年齡小于20歲的學生
σSage<20(Student)
或σ4<20(Student)
結果:
SnoSnameSsexSageSdept200215122劉晨女19IS200215123王敏女18MA200215125張立男19IS3.4關系代數1/12/202467投影(Projection)投影運算符的含義從R中選擇出若干屬性列組成新的關系
πA(R)={t[A]|t
R} A:R中的屬性列投影操作主要是從列的角度進行運算但投影之后不僅取消了原關系中的某些列,而且還可能取消某些元組(避免重復行)3.4關系代數π1/12/2024683.4關系代數[例3]查詢學生的姓名和所在系即求Student關系上學生姓名和所在系兩個屬性上的投影
∏Sname,Sdept(Student)
或∏2,5(Student)結果:SnameSdept李勇CS劉晨IS王敏MA張立IS1/12/202469[例4]查詢學生關系Student中都有哪些系
∏Sdept(Student)
結果:SdeptCSISMA3.4關系代數1/12/2024703.4關系代數連接(Join)連接也稱為θ連接連接運算的含義從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組
RS={|tr
R∧ts
S∧tr[A]θts[B]}A和B:分別為R和S上度數相等且可比的屬性組θ:比較運算符
AθBtr
ts1/12/202471連接運算是從R和S的廣義笛卡爾積R×S中選?。≧關系)在A屬性組上的值與(S關系)在B屬性組上值滿足比較關系θ的元組組成的新關系3.4關系代數1/12/202472兩類常用連接運算等值連接(equijoin)什么是等值連接θ為“=”的連接運算稱為等值連接等值連接的含義從關系R與S的廣義笛卡爾積中選取A、B屬性值相等的元組,即等值連接為:
RS={|tr
R∧ts
S∧tr[A]=ts[B]}A=Btr
ts3.4關系代數1/12/202473自然連接(Naturaljoin)
自然連接是一種特殊的等值連接兩個關系中進行比較的分量必須是相同的屬性組在結果中把重復的屬性列去掉自然連接的含義
R和S具有相同的屬性組B
R
S={|tr
R∧ts
S∧tr[B]=ts[B]}tr
ts3.4關系代數1/12/202474一般的連接操作是從行的角度進行運算。
自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。
AθBRS3.4關系代數1/12/202475[例5]關系R和關系S
如下所示:3.4關系代數1/12/202476一般連接RS的結果如下:
C<E3.4關系代數1/12/202477
等值連接R
S的結果如下:R.B=S.B
3.4關系代數1/12/202478
自然連接R
S的結果如下:
3.4關系代數1/12/202479等值連接與自然連接的區(qū)別:等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關系只有在同名屬性才能進行自然連接。等值連接不將重復屬性去掉,而自然連接去掉重復屬性,也可以說,自然連接是去掉重復列的等值連接。如上例R中的B列和S中的B列進行等值連接時,結果有兩個重復的屬性列B,而進行自然連接時,結果只有一個屬性列B。3.4關系代數1/12/202480外連接如果把舍棄的元組也保存在結果關系中,而在其他屬性上填空值(Null),這種連接就叫做外連接(OUTERJOIN)。左外連接(R*∞S)如果只把左邊關系R中要舍棄的元組保留就叫做左外連接(LEFTOUTERJOIN或LEFTJOIN)右外連接(R∞*S)如果只把右邊關系S中要舍棄的元組保留就叫做右外連接(RIGHTOUTERJOIN或RIGHTJOIN)。全外連接(R*∞*S)3.4關系代數1/12/202481下圖是例5中關系R和關系S的全外連接3.4關系代數1/12/202482圖(b)是例5中關系R和關系S的左外連接,圖(c)是右外連接3.4關系代數1/12/202483例6:查詢選修“數據庫”課程的學生姓名。
ΠSname(
Cname='數據庫'(C∞SC∞S))或ΠSname
(
Cname='數據庫'(C)∞SC∞ΠSNo,Sname(S))
或ΠSname(ΠSno(
Cname='數據庫'(C)∞SC)∞
ΠSNo,Sname(S))3.4關系代數1/12/202484例7:查詢全體學生的選課情況(含未選課的學生信息)
S*SC例8:(P50例4)Π商品號,商品名,進貨價格(
銷售價格>5000(商品銷售))3.4關系代數
1/12/202485除(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]3.4關系代數1/12/202486除操作是同時從行和列角度進行運算
÷RS3.4關系代數1/12/2024873.4關系代數關系的除法分下面4步進行:1)將被除關系分為象集屬性和結果屬性兩部分:與除關系相同的屬性為象集屬性,不同的屬性為結果屬性。2)在除關系中,對與被除關系相同的屬性(象集屬性)進行投影,得到除目標數據集。3)將被除關系分組,分組原則:結果屬性值一樣的元組分成一組。4)逐一考察每個組,若它的象集屬性值中包括除目標數據集,則對應的結果屬性值應屬于該除法運算結果集。1/12/202488例:已知關系R和S,如圖
(a),(b)所示,則R÷S如圖(c)所示。與除法的定義相對應,本題中X={A,B}={(a1,b2),(a2,b4),(a3,b5)},Y={C,D}={(c3,d5),(c4,d6)},Z={F}={f3,f4}。其中,元組在X上各個分量值的象集分別為:(a1,b2)的象集為{(c3,d5),(c4,d6)}(a2,b4)的象集為{(c1,d3)}(a3,b5)的象集為{(c2,d8)}S在Y上的投影為{(c3,d5),(c4,d6)}顯然只有(a1,b2)的象集包含S在Y上的投影,所以R÷S={(a1,b2)}1/12/202489
RSR÷S(a)(b)(c)
圖ABCD
CDF
ABa1b2c3d5
c3d5f3
a1b2a1b2c4d6
c4d6f4
a2b4c1d3
a3b5c2d8
象集屬性結果屬性除目標數據集1231/12/202490除(續(xù))[例6]設關系R、S分別為下圖的(a)和(b),R÷S的結果為圖(c)1/12/202491分析在關系R中,A可以取四個值{a1,a2,a3,a4}a1的象集為{(b1,c2),(b2,c3),(b2,c1)}a2的象集為{(b3,c7),(b2,c3)}a3的象集為{(b4,c6)}a4的象集為{(b6,c6)}S在(B,C)上的投影為
{(b1,c2),(b2,c1),(b2,c3)}只有a1的象集包含了S在(B,C)屬性組上的投影所以R÷S={a1}1/12/202492除法運算同時從行和列的角度進行運算,適合于包含“全部”之類的短語的查詢。例:查詢選修了全部課程的學生學號和姓名。ΠSNO,CNO(SC)÷ΠCNO(C)*ΠSNO,SN(S)1/12/202493綜合舉例設某教學管理數據庫由以下關系模式構成:學生(學號,姓名,性別,年齡,所在系)課程(課程號,課程名,先行課程,學分)教師(教師號,教師名,職稱)選修(學號,課程號,成績)授課(教師號,課程號)1/12/202494綜合舉例(續(xù))例1:查詢學號為95001學生所選修的課程號、課程名?!钦n程號,課程名(σ學號=“95001”(課程選修))或:∏課程號(σ學號=“95001”(選修))∏課程號,課程名(課程)
1/12/202495綜合舉例(續(xù))例2:查詢年齡大于19歲的男生的學號,姓名,所在系?!菍W號,姓名,所在系(σ
年齡>19∧性別=“男”(學生))例3:查詢劉晨同學所選修的課程名及成績?!钦n程名,成績(σ姓名=“劉晨”(課程選修學生))或:∏課程名,成績(∏學號(σ姓名=“劉晨”(學生))選修
∏課程號,課程名(課程))
1/12/202496綜合舉例(續(xù))例4:查詢劉晨同學未選修的課程號、課程名∏課程號,課程名(課程)-∏課程號,課程名(σ姓名=“劉晨”(課程選修學生))
1/12/202497綜合舉例
例5:查詢至少(同時)選修1號課程和3號課程的學生的學號。
∏學號
(σ課程號=“1”(選修))∩∏學號
(σ課程號=“3”(選修)或:
∏學號,課程號
(選修)÷∏課程號
(σ課程號=“1”∨課程號=“3”
(課程))或:∏學號
(σ課程號=“1”(選修))∏學號
(σ課程號=“3”(選修))
1/12/202498綜合舉例(續(xù))例6:查詢至少選修了一門其直接先行課為5號課程的學生姓名
∏姓名(σ先行課程=‘5’(課程選修學生))或
∏姓名(σ先行課程=‘5’(課程)選修∏學號,姓名(學生))或∏姓名(∏學號(σ先行課程=‘5’(課程)選修)∏學號,姓名(學生))
1/12/202499綜合舉例例7:查詢至少選修了劉偉老師所授全部課程的學生姓名?!切彰n程號(選修學生)÷∏課程號(σ教師名=“劉偉”(授課教師))或:∏姓名,課程號(∏姓名,學號(學生)∏課程號,學號(選修))÷∏課程號(∏教師號(σ教師名=“劉偉”(教師))授課)
1/12/2024100綜合舉例(續(xù))例8:查詢選修了全部課程的學生學號和姓名。
∏學號,課程號(選修)÷∏課程號(課程)∏學號,姓名(學生)或:
∏學號,姓名,課程號(選修學生)÷∏課程號(課程)
1/12/2024101綜合舉例(續(xù))例9:查詢哪些課程被所有的學生選修,列出這些課程的課程號,課程名?!菍W號,課程號(選修)÷∏學號(學生)∏課程號,課程名(課程)或:
∏學號,課程號,課程名(選修課程)÷∏學號(學生)
1/12/2024102關系代數操作小結1/12/20248:41AM1031/12/2024103關系代數操作小結1/12/20248:41AM1041/12/20241043.5關系演算
關系演算以數理邏輯中的謂詞演算為基礎按謂詞變元不同進行分類1.元組關系演算:以元組變量作為謂詞變元的基本對象元組關系演算語言ALPHA2.域關系演算:以域變量作為謂詞變元的基本對象域關系演算語言QBE1/12/20241053.5關系演算元組關系演算語言ALPHA語句檢索語句GET更新語句PUT,HOLD,UPDATE,DELETE,DROP1/12/20241063.5關系演算
檢索操作語句格式:
GET
工作空間名[(定額)](表達式1)
[:操作條件][DOWN/UP表達式2]
定額:規(guī)定檢索的元組個數格式:數字表達式1:指定語句的操作對象格式:關系名|關系名.屬性名|元組變量.屬性名|集函數[,…]1/12/20241073.5關系演算操作條件:將操作結果限定在滿足條件的元組中格式:邏輯表達式表達式2:指定排序方式格式:關系名.屬性名|元組變量.屬性名[,…]1/12/20241083.5關系演算
(1)簡單檢索
GET
工作空間名(表達式1)[例1]查詢所有被選修的課程號碼。
GETW(SC.Cno)
[例2]查詢所有學生的數據。
GETW(Student)1/12/2024109(2)限定的檢索格式:GET
工作空間名(表達式1):操作條件[例3]查詢信息系(IS)中年齡小于20歲的學生的學號和年齡
GETW(Student.Sno,Student.Sage):
Student.Sdept='IS'∧Student.Sage<203.5關系演算1/12/2024110(3)帶排序的檢索格式
GET
工作空間名(表達式1)[:操作條件]DOWN/UP表達式2[例4]查詢計算機科學系(CS)學生的學號、年齡,結果按年齡降序排序GETW(Student.Sno,Student.Sage):
Student.Sdept='CS‘
DOWNStudent.Sage3.5關系演算1/12/20241113.5關系演算(4)帶定額的檢索格式
GET
工作空間名(定額)(表達式1)
[:操作條件][DOWN/UP
表達式2][例5]取出一個信息系學生的學號。
GETW(1)(Student.Sno):
Student.Sdept='IS'
[例6]查詢信息系年齡最大的三個學生的學號及其年齡,結果按年齡降序排序。
GETW(3)(Student.Sno,Student.Sage):
Student.Sdept='IS'DOWNStudent.Sage1/12/20241123.5關系演算(5)用元組變量的檢索元組變量的含義表示可以在某一關系范圍內變化(也稱為范圍變量RangeVariable)元組變量的用途①簡化關系名:設一個較短名字的元組變量來代替較長的關系名。②操作條件中使用量詞時必須用元組變量。定義元組變量格式:RANGE關系名變量名一個關系可以設多個元組變量1/12/20241133.5關系演算(6)用存在量詞的檢索操作條件中使用量詞時必須用元組變量[例8]查詢選修2號課程的學生名字。
RANGESCX
GETW(Student.Sname):
X(X.Sno=Student.Sno∧X.Cno='2')[例9]查詢選修了這樣課程的學生學號,其直接先行課是6號課程。
RANGECourseCXGETW(SC.Sno):
CX(CX.Cno=SC.Cno∧CX.Pcno='6')1/12/2024114
3.5關系演算[例10]查詢至少選修一門其先行課為6號課程的學生名字
RANGECourseCXSCSCX GETW(Student.Sname):
SCX(SCX.Sno=Student.Sno∧
CX(CX.Cno=SCX.Cno∧CX.Pcno='6'))
前束范式形式:
GETW(Student.Sname):
SCX
CX(SCX.Sno=Student.Sno∧CX.Cno=SCX.Cno∧CX.Pcno='6')1/12/2024115
3.5關系演算(7)帶有多個關系的表達式的檢索[例11]查詢成績?yōu)?0分以上的學生名字與課程名字。
RANGESCSCXGETW(Student.Sname,Course.Cname):
SCX(SCX.Grade≥90∧
SCX.Sno=Student.Sno∧
Course.Cno=SCX.Cno)1/12/2024116
3.5關系演算(8)用全稱量詞的檢索
[例12]查詢不選1號課程的學生名字
RANGESCSCXGETW(Student.Sname):SCX(SCX.Sno≠Student.Sno∨SCX.Cno≠'1')用存在量詞表示:
RANGESCSCXGETW(Student.Sname):
SCX(SCX.Sno=Student.Sno∧SCX.Cno='1')1/12/2024117(9)用兩種量詞的檢索[例13]查詢選修了全部課程的學生姓名。
RANGECourseCXSCSCXGETW(Student.Sname):CX
SCX(SCX.Sno=Student.Sno∧
SCX.Cno=CX.Cno)
3.5關系演算1/12/20241183.5關系演算(10)用蘊函(Implication)的檢索
[例14]查詢最少選修了200215122學生所選課程的學生學號
RANGECouseCXSCSCXSCSCYGETW(Student.Sno):CX(
SCX(SCX.Sno=‘200215122'∧SCX.Cno=CX.Cno)
SCY(SCY.Sno=Student.Sno∧ SCY.Cno=CX.Cno))1/12/20241193.5關系演算(11)聚集函數常用聚集函數(Aggregationfunction)或內部函數(Build-infunction)關系演算中的聚集函數
函數名功能COUNT對元組計數TOTAL求總和MAX求最大值MIN求最小值AVG求平均值1/12/20241203.5關系演算[例15]查詢學生所在系的數目。
GETW(COUNT(Student.Sdept))
COUNT函數在計數時會自動排除重復值。
[例16]查詢信息系學生的平均年齡
GETW(AVG(Student.Sage):
Student.Sdept='IS’)1/12/20241213.5關系演算更新操作(1)修改操作(2)插入操作(3)刪除操作1/12/20241223.5關系演算(1)修改操作步驟①用HOLD語句將要修改的元組從數據庫中讀到工作空間中HOLD
工作空間名(表達式1)[:操作條件]HOLD語句是帶上并發(fā)控制的GET語句②用宿主語言修改工作空間中元組的屬性③用UPDATE語句將修改后的元組送回數據庫中
UPDATE
工作空間名1/12/20241233.5關系演算
[例17]把95007學生從計算機科學系轉到信息系。
HOLDW(Student.Sno,Student.Sdetp):Student.Sno=‘95007'
(從Student關系中讀出95007學生的數據)
MOVE'IS'TOW.Sdept
(用宿主語言進行修改)
UPDATEW
(把修改后的元組送回Student關系)1/12/20241243.5關系演算(2)插入操作步驟①用宿主語言在工作空間中建立新元組②用PUT語句把該元組存入指定關系中
PUT
工作空間名(關系名)
PUT語句只對一個關系操作,即關系表達式必須為單個關系名.1/12/20241253.5關系演算[例18]學校新開設了一門2學分的課程“計算機組織與結構”,其課程號為8,直接先行課為6號課程。插入該課程元組
MOVE'8'TOW.CnoMOVE'計算機組織與結構'TOW.CnameMOVE'6'TOW.CpnoMOVE'2'TOW.Ccredit
PUTW(Course)1/12/20241263.5關系演算(3)刪除操作步驟①用HOLD語句把要刪除的元組從數據庫中讀到工作空間中②用DELETE語句刪除該元組
DELETE
工作空間名1/12/20241273.5關系演算[例19]95110學生因故退學,刪除該學生元組
HOLDW(Student):student.Sno=‘95110'DELETEW
1/12/20241283.5關系演算[例20]將學號200715121改為200715126HOLDW(Student):Student.Sno=‘200715121'
DELETEWMOVE‘200715126'TOW.SnoMOVE'李勇'TOW.SnameMOVE'男'TOW.SsexMOVE'20‘TOW.SageMOVE'CS'TOW.Sdept
PUTW(Student)
修改主碼的操作一般要分解為先刪除、再插入的方法完成操作。1/12/20241293.5關系演算[例21]刪除全部學生
HOLDW(Student)DELETEW
為保證參照完整性,刪除Student中元組時相應地要刪除SC中的元組
HOLDW(SC)DELETEW
1/12/20241303.5關系演算域關系演算語言QBE以元組變量的分量即域變量作為謂詞變元的基本對象QBE:QueryByExample基于屏幕表格的查詢語言查詢要求:以填寫表格的方式構造查詢用示例元素(域變量)來表示查詢結果可能的情況查詢結果:以表格形式顯示1/12/20241313.5關系演算QBE操作框架關系名屬性名操作命令元組屬性值或查詢條件或操作命令1/12/20241323.5關系演算1.簡單查詢[例1]求信息系全體學生的姓名操作步驟為:(1)用戶提出要求;(2)屏幕顯示空白表格;1/12/20241333.5關系演算(3)用戶在最左邊一欄輸入要查詢的關系名Student;(4)系統(tǒng)顯示該關系的屬性名
StudentStudentSnoSnameSsexSageSdept1/12/20241343.5關系演算(5)用戶在上面構造查詢要求李勇是示例元素,即域變量(6)屏幕顯示查詢結果StudentSnoSnameSsexSageSdeptP.李勇ISStudentSnoSnameSsexSageSdept李勇張立IS1/12/20241353.5關系演算構造查詢的幾個要素:示例元素即域變量一定要加下劃線示例元素是這個域中可能的一個值,它不必是查詢結果中的元素打印操作符P.
實際上是顯示查詢條件可使用比較運算符>,≥,<,≤,=和≠其中=可以省略1/12/20241363.5關系演算[例2]查詢全體學生的全部數據StudentSnoSnameSsexSageSdeptP.200215121P.李勇P.男P.20P.CS1/12/20241373.5關系演算顯示全部數據也可以簡單地把P.操作符作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版南京大學與京東集團電商人才培養(yǎng)合作合同4篇
- 2025年度鋼管行業(yè)市場調研與分析服務合同
- 二零二五年度企業(yè)廢棄包裝物清運合同模板
- 二零二五年度農莊農業(yè)保險合同模板
- 2025年度農業(yè)科技創(chuàng)新實驗基地租賃合同范本3篇
- 二零二五版內參內容策劃與制作合同4篇
- 2025年度個人反擔保合同模板(保險業(yè)務風險防范)
- 二零二五年度泥水工施工技術創(chuàng)新與推廣合同4篇
- 二零二五年度現(xiàn)代農業(yè)科技項目質押擔保合同3篇
- 二零二五年度瓷磚電商平臺銷售代理合同2篇
- ppr管件注塑工藝
- 液化氣站其他危險和有害因素辨識及分析
- 建筑工程施工安全管理思路及措施
- 高中語文教學課例《勸學》課程思政核心素養(yǎng)教學設計及總結反思
- 中國農業(yè)銀行小微企業(yè)信貸業(yè)務貸后管理辦法規(guī)定
- 初中英語-Unit2 My dream job(writing)教學課件設計
- 市政道路建設工程竣工驗收質量自評報告
- 優(yōu)秀支行行長推薦材料
- 中國版梅尼埃病診斷指南解讀
- 暨南大學《經濟學》考博歷年真題詳解(宏觀經濟學部分)
- 藥店員工教育培訓資料
評論
0/150
提交評論