第二部分關系數(shù)據(jù)庫_第1頁
第二部分關系數(shù)據(jù)庫_第2頁
第二部分關系數(shù)據(jù)庫_第3頁
第二部分關系數(shù)據(jù)庫_第4頁
第二部分關系數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第二部分關系數(shù)據(jù)庫學習要點關系數(shù)據(jù)結構的形式化定義關系完整性2023/3/202序言值得記住的1970年,提出關系數(shù)據(jù)庫理論基礎關系數(shù)據(jù)庫試驗系統(tǒng)SystemR,INGRES目前流行的RDBMSDB2,Oracle,Ingres,Sybase,Informix等2023/3/2032.1關系模型概述關系模型由以下三部分組成關系數(shù)據(jù)結構關系(一張二維表)關系操作:查詢操作選擇(Select)、投影(Project)、連接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)更新操作增加(Insert)、刪除(Delete)、修改(Update)關系完整性約束實體完整性、參照完整性、用戶定義完整性關系的兩個不變性,由系統(tǒng)自動支持由應用語義約束2023/3/204關系語言關系操作特點:操作對象和結果都是集合高度非過程化的語言,不必借助循環(huán)結構就可以完成數(shù)據(jù)操作,能嵌入高級語言中使用關系數(shù)據(jù)語言關系代數(shù)語言關系演算語言具有關系代數(shù)和關系演算雙重特點的語言元組關系演算語言域關系演算語言例如ISBL例如APLHA,QUEL例如QBE例如SQL三種語言在表達能力上完全等價2023/3/205關系模型語言關系代數(shù)語言把關系當作集合,用集合運算和特殊的關系運算來表達查詢要求和條件是一種抽象的查詢語言關系演算語言用謂詞來表達查詢要求和條件謂詞變元的基本對象可以是元組變量或域變量,故可分為元組關系演算和域關系演算兩類是一種抽象的查詢語言SQL介于關系代數(shù)和關系演算之間集DDL、DML和DCL一身的關系數(shù)據(jù)語言2023/3/2062.2關系數(shù)據(jù)結構的形式化定義關系模型建立在集合代數(shù)基礎上,從集合論角度討論關系的形式化定義定義1:域(Domain)一組具有相同數(shù)據(jù)類型的值的集合,如整數(shù)、實數(shù)等。形式化表示為D定義2:笛卡爾積(CartesianProduct)P47一組域D1,D2,…Dn的笛卡爾積(d1,d2,d3,…dn)稱為一個元組,di稱為一個分量若Di的基數(shù)(值的個數(shù))為Mi,則笛卡爾集的基數(shù)M為2023/3/207笛卡爾積計算實例例1:D1={甲,乙},D2={1,2},D3={a,b,c}1)D1,D2,D3基數(shù)分別是多少?2)D1×D2=?(基數(shù)?)3)D1×D2×D3=?(基數(shù)?)笛卡爾集可表示為一個二維表表中的每行對應一個元組,表中的每列對應一個域請將例子表示為二維表2023/3/208例2.已知三個域D1=導師集合={張清正,劉逸}D2=專業(yè)集合={計算機,信息}D3=學生集合={李勇,劉晨,王敏}導師專業(yè)研究生張清正計算機李勇張清正計算機劉晨張清正計算機王敏張清正信息李勇張清正信息劉晨張清正信息王敏劉逸計算機李勇劉逸計算機劉晨劉逸計算機王敏劉逸信息李勇劉逸信息劉晨劉逸信息王敏D1,D2,D3的笛卡爾積(上圖)計算思考1)每個域的基數(shù)?2)計算D1×D2×D3=?基數(shù)?3)計算結果中的元組有無實際意義?2023/3/209關系數(shù)據(jù)結構的形式化定義

定義3:關系D1×D2×···×Dn的子集叫做在D1,D2,…,Dn上的關系,表示為R(D1,D2,…,Dn)相關術語候選碼:能夠唯一標識一個元組的屬性組(一個關系可以有多個候選碼)主碼:一個關系中選定的一個候選碼主屬性:包含在任何候選碼中的屬性非主屬性:不包含在任何候選碼中的屬性全碼:若關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼(請舉例)三種關系類型:基本關系(又稱基表)、視圖表、查詢表n:關系的度或目,表的列數(shù),一般稱n元關系2023/3/2010例.已知三個域D1=導師集合S={張清正,劉逸}D2=專業(yè)集合SP={計算機,信息}D3=學生集合P={李勇,劉晨,王敏}計算思考從笛卡爾集中取出一個子集,選擇有意義的結果組成關系R=(導師,專業(yè),研究生)一個研究生只能有一個專業(yè),如李勇和王敏是計算機專業(yè)、劉晨是信息專業(yè)導師S專業(yè)SP研究生P張清正計算機李勇張清正計算機劉晨張清正計算機王敏張清正信息李勇張清正信息劉晨張清正信息王敏劉逸計算機李勇劉逸計算機劉晨劉逸計算機王敏劉逸信息李勇劉逸信息劉晨劉逸信息王敏D1,D2,D3的笛卡爾積(上圖)現(xiàn)在導師與研究生是什么關系?限定一個學生只能有一個導師,如張是計算機導師,劉是信息專業(yè)導師現(xiàn)在導師與研究生是什么關系?2023/3/2011關系關系的限定及擴充關系數(shù)據(jù)中的關系是有限集合為關系的每一列附以屬性名以取消關系元組的有序性關系的性質列同質,即每一列是同一類型的數(shù)據(jù)不同的列可出自同一個域,每一列為一個屬性,不同的屬性被賦予不同的屬性名列的次序可以任意交換任意兩個元組不能完全相同行的次序可以任意交換分量必須取原子值,即不可再分在許多實際關系數(shù)據(jù)庫產(chǎn)品中,基本表并不完全具有這六條性質。思考:描述關系需要那些方面的信息呢?2023/3/2012關系模式關系模式是對關系的描述,形式化表示為R(U,D,dom,F)U:組成該關系的屬性名集合D:屬性組U中屬性所來自的域dom:屬性向域的映象集合,如屬性的類型、長度F:屬性間數(shù)據(jù)的依賴關系集合★可簡記為R(U)或R(A1,A2,…,An),其中Ai為屬性名關系模式與關系關系模式是型,是對關系的描述,是靜態(tài)的,穩(wěn)定的。關系是值,由賦予它的元組語義來確定的,是動態(tài)的,不斷變化的關系是關系模式在某一時刻的狀態(tài)或內(nèi)容★實際應用中常常將關系模式和關系都稱為關系2023/3/2013關系數(shù)據(jù)庫在給定應用領域中,所有表示實體及實體之間聯(lián)系的關系的集合構成一個關系數(shù)據(jù)庫關系數(shù)據(jù)庫也有型和值之分思考:給出導師、學生、專業(yè)三個實體可能組成的關系數(shù)據(jù)庫及其概念模型(E-R圖)2023/3/20142.3關系的完整性實體完整性參照完整性用戶定義完整性

實體完整性和參照完整性是關系模型必須滿足的,被稱作關系的不變性,由關系數(shù)據(jù)庫系統(tǒng)自動支持★2023/3/2015實體完整性規(guī)則:若屬性A是基本關系R的主屬性,則屬性A不能取空值說明:基本關系的主碼中的任何屬性都不能取空值,而不僅是主碼整體不能取空值依據(jù):現(xiàn)實世界的實體是唯一可分的例:學生(學號,姓名,性別,專業(yè)號,年齡)課程(課程號,課程名,學分)選修(學號,課程號,成績)2023/3/2016例1:學生實體與專業(yè)實體間的關系:學生(學號,姓名,性別,專業(yè)號,年齡)專業(yè)(專業(yè)號,專業(yè)名)關系參照圖外碼參照關系被參照關系例2:學生,課程,學生與課程之間的多對多聯(lián)系:學生(學號,姓名,性別,專業(yè)號,年齡)課程(課程號,課程名,學分)選修(學號,課程號,成績)關系參照圖

被參照關系參照關系學生關系專業(yè)關系專業(yè)號學生關系選修關系課程關系學號課程號參照完整性主碼?外碼?2023/3/2017參照完整性定義:外碼設F是參照關系R的一個或一組屬性,但不是R的碼,若F與被參照關系S的主碼相對應,則稱F是R的外碼(詳細定義見教材P54)規(guī)則:參照關系R中每個元組在外碼F上的值必須為:或者取空值(F的每個屬性值均為空值)或者等于S中某個元組的主碼值例3:學生(學號,姓名,性別,專業(yè)號,年齡,班長)參照關系被參照關系外碼2023/3/2018用戶定義完整性用戶定義的、具體應用中的數(shù)據(jù)必須滿足的約束條件成績:0-100之間身份證、身份證和生日對應關系

2023/3/20192.4關系代數(shù)關系代數(shù)語言用傳統(tǒng)的集合運算和專門的關系運算來表達查詢的抽象語言關系代數(shù)運算符關系代數(shù)表達式關系代數(shù)中有限次運算復合后形成的式子運算符含義運算符含義集合運算符并差交廣義笛卡爾積比較運算符>>=<<==大于大于等于小于小于等于等于不等于專門的關系運算符選擇投影連接除邏輯運算符非與或2023/3/2020表示記號R,tR,t[Ai],A,t[A],A設關系模式為R(A1,A2,…,An),它的一個關系設為RtR表示t是R的一個元組t[Ai]則表示元組t中相應于屬性Ai的一個分量若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}后剩余的屬性組2023/3/2021傳統(tǒng)的集合運算若R和S是同類關系(即它們都具有n個屬性且相應屬性取自同一個域),則可進行并、差、交運算。對兩者進行集合運算之前,要對兩者的屬性列進行排序,保證兩個關系的屬性順序相同。由屬于R或屬于S的元組組成由屬于R而不屬于S的元組組成由既屬于R又屬于S的元組組成2023/3/2022表示記號trtsR為n目關系,S為m目關系trR,tsS,trts稱為元組的連接。它是一個n+m列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組2023/3/2023傳統(tǒng)的集合運算廣義笛卡爾積RXS,其關系模式是R和S的模式的并集,是R和S的元組以所有可能的方式組合起來。當R和S有同名的屬性,至少要為其中一個屬性重新命名。數(shù)學描述:若關系R有k1個元組n個屬性,關系S有k2個元組m個屬性,則兩個關系的廣義笛卡爾積有k1*k2個元組n+m個屬性(前n個屬性來自于R,后m個屬性來自于S)廣義笛卡爾積和笛卡爾積的關系?面向關系的運算?面向域的運算?2023/3/2024RSABCa1b1c1a1b2c2a2b2c1a1b3c2RSABCa1b2c2a2b2c1R-SABCa1b1c1RS

ABCABC

a1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2a1b2c2a1b2c2a1b3c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a1b3c2a2b2c1a2b2c1ABCa1b1c1a1b2c2a2b2c1RABCa1b2c2a1b3c2a2b2c1S2023/3/2025例:包括Student,Course,SC三個關系

Student(Sno,Sname,Sex,Sage,Sdept)

Course(Cno,Cname,Cpno,Ccredit)

SC(Sno,Cno,Grade)用此例講解專門的關系運算例子:學生—課程數(shù)據(jù)庫2023/3/2026例:學生—課程數(shù)據(jù)庫,包括Student,Course,SC三個關系

SnoSnameSsexSageSdept95001李勇男20

CS

95002劉晨女19IS95003王敏女18MA95004張立男19IS

StudentCnoCnameCpqoCcredit1數(shù)據(jù)庫542數(shù)學2信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結構746數(shù)據(jù)處理27

Pascal語言64CourseSnoCnoGrade9500119295001285950013889500229095002380SC2023/3/2027專門的關系運算:選擇記號:tR表示t是R的一個元組選擇從關系R中選取使邏輯表達式F為真的元組,行選。記作邏輯表達式F由邏輯運算符連接算術表達式,算術表達式基本形式為X1Y1

其中表示比較運算符,X1,Y1是屬性名或常量或簡單函數(shù),屬性名可以用它的序號來代替2023/3/2028.查詢信息系全體學生:

Sdept=‘IS’(Student)或

5=‘IS’(Student).查詢年齡小于20歲的學生:

Sdept<20(Student)或

4<20(Student)結果如下:SnoSnameSsexSageSdept95002劉晨女19IS95004張立男19ISSnoSnameSsexSageSdept95002劉晨女19IS95003王敏女18MA95004張立男19IS1)選擇運算例課堂練習:1)查詢CS系的所有女生2)查詢先行課代號為6的所有課程σ2023/3/2029關系代數(shù):投影定義:從關系R中選擇出滿足條件F的若干屬性列并組成新的關系,列選其中

表示元組t中相應于屬性Ai的一個分量。注意:運算結果要去掉重復元組。2023/3/20302)投影運算例.查詢學生的姓名和所在系:

Sname,Sdept(Student)或2,5(Student).查詢學生關系S中有哪些系:

Sdept(Student)或5(Student)結果如下:

SnameSdept

李勇CS劉晨IS王敏MA張立ISSdeptCSISMAπ2023/3/2031關系代數(shù):連接連接從關系R和S的笛卡爾積中選取屬性間滿足條件的元組其中A和B分別是關系R和S上可比的屬性組,是比較運算符等值連接從關系R和S的笛卡爾積中選取A,B屬性值相等的元組自然連接特殊的等值連接,R和S具有相同的屬性組B,在結果中去掉重復的屬性列2023/3/2032連接θ連接(包含等值連接):先將R和S做笛卡積,然后從R×S的元組中選擇滿足條件C的元組集合。自然連接:假設A1、A2、……An是R和S的模式中的公共屬性,那么如果R的元組r和S的元組s在這些屬性上取值都相同,r和s組合而成的元組就歸入該自然連接中。一般的連接操作是從行的角度進行運算,自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。

AθBRS2023/3/20333)連接運算例.設有如圖的關系R和關系SABCa1b15a1b26a2b38a2b412RBEb13b27b310b32b52SAR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310R

C<E

SAR.BCS.BEa1b15b13a1b26b27a2b38b310a2b38b32等值連接

ABCE

a1b153a1b267a2b3810a2b382自然連接R

R.B=S.B

SR

S2023/3/2034表示記號:象集Zx給定一個關系R(X,Z),X和Z為屬性組當t[X]=x時,x在R中的象集(ImagesSet)為:

Zx={t[Z]|tR,t[X]=x}

ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1R它表示R中屬性組X上值為x的諸元組在Z上分量的集合。例子:a1的象集為{(b1,c2),(b2,c3),(b2,c1)}2023/3/2035關系代數(shù):除除R與S的除運算得到一個新的關系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:關系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組(R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集)元組在X上分量值x的象集Yx包含S在Y上的投影2023/3/2036除除操作是同時從行和列角度進行運算÷RS2023/3/20374)除運算例設有如圖的關系R和SABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2Aa1RSRS則RS結果如下.

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)屬性組上的投影,故RS={a1}2023/3/2038思考選擇、投影、除、連接等關系運算能做什么事情?能解決什么樣的查詢問題?請舉例說明。在實際問題中,是否需要復合使用?2023/3/2039關系代數(shù):綜合應用1)查詢選修了2號課程的學生的學號2)查詢至少選修了一門其直接先行課為5號課程的學生姓名3)查詢選修了全部課程的學生號碼和姓名請給出對應含義和查詢答案:2023/3/2040關系代數(shù):綜合應用1)在以上S-C數(shù)據(jù)庫中,查詢選修了1號課程的學生號碼.2)在以上S-C數(shù)據(jù)庫中,查詢選修了1號課程或3號課程的學生號碼.Sno(

Cno=‘1’(SC))Sno(

Cno=‘1’vCno=‘3’(SC))Sno(

Cno=‘1’(SC))USno(

Cno=‘1’(SC))2023/3/20413)在以上S-C數(shù)據(jù)庫中,查詢(至少)選修1號課程和3號課程的學生號碼.

關系代數(shù)為:Sno,Cno(SC)K運算結果為:{95001}關系代數(shù):綜合應用解:先建一臨時關系K:

Cno132023/3/20422)查詢選修了2號課程的學生的學號解:Sno(

Cno=‘2’(SC))3)查詢至少選修了一門其直接先行課為5號課程的學生姓名4)查詢選修了全部課程的學生號碼和姓名解:Sname(

Cpno=‘5’(Course)SCSno,Sname(Student))解:Sno,Cno(SC)Cno(Course)Sno,Sname(Student)關系代數(shù):綜合應用2023/3/2043思考已知學生選課數(shù)據(jù)庫模式:Student(Sno,Sname,Sage,Sdept)Course(Cno,Cname)SC(Sno,Cno,Score)用關系代數(shù)進行如下查詢:選修了2號課程的學生的姓名?計算機系有不及格課程的學生名單學生張林的“數(shù)據(jù)庫原理”成績2023/3/2044關系代數(shù)小結總結關系代數(shù)運算五種基本運算:并、差、笛卡爾積、選擇、投影其余運算可有以上五種基本運算來表達2023/3/2045練習圖書館管理數(shù)據(jù)庫讀者(讀者編號,姓名,單位)圖書(書號,書名,作者,出版社,單價,類型)借閱記錄(讀者編號,書號,借閱日期,應還日期)還書記錄(讀者編號,書號,歸還日期)用關系代數(shù)描述以下查詢要求查詢“人民郵電出版社”出版的所有圖書的相關信息查詢單價在15元以上的書名和作者查詢8號讀者2003年3月10日所借圖書的相關信息查詢超期歸還圖書的讀者姓名和單位查詢借閱過《天龍八部》的讀者的信息查詢借閱過“金庸”所有著作的讀者的姓名查詢沒有借閱過任何圖書的讀者的姓名2023/3/20462.5關系演算關系演算語言以元組變量或域(屬性)變量作為謂詞變元的基本對象來表達查詢的語言分類:元組關系演算語言域關系演算語言2023/3/2047

以元組變量作為謂詞變元的基本對象基本格式:操作語句工作空間名(表達式):操作條件其中:表達式用于指定操作的對象,可以為關系名或屬性名.

操作條件為一個邏輯表達式

操作語句為GET(查詢),PUT(插入),HOLD(讀取),UPDATE(修改),DELETE(刪除),DROP(刪除視圖)等例:以學生-選課數(shù)據(jù)庫為例.檢索:查詢信息系中年齡小于20歲的學生的學號及年齡

GETW(Student.Sno,Student.Sage):Student.Sdept=‘IS’Student.Sage<20工作空間名2.5.1元組關系演算語言ALPHA2023/3/2048查詢信息系年齡最大的三個學生的學號及年齡,結果按年齡降序排列

GETW(3)(Student.Sno,Student.Sage):Student.Sdept=‘IS’DOWNStudent.Sage定額:用以規(guī)定檢索出的元組個數(shù).用元組變量的檢索:查詢信息系中年齡小于20歲的學生的學號及年齡

RANGESCXGETW(X.Sno,X.Sage):X.Sdept=‘IS’X.Sage<20可簡化關系名操作條件有量詞時必用

查詢成績?yōu)?0分以上的學生名字與課程名字

RANGESCSCXGETW(Student.Sname,Course.Cname):SCX(SCX.Grade90

SCX.Sno=Student.SnoCourse.Cno=SCX.Cno)2023/3/2049.用集函數(shù)的查詢:用標準函數(shù)庫提供的函數(shù)如:COUNT,TOTAL,MAX,MIN,AVG

查詢信息系學生的平均年齡

GetW(AVG(Student.Sage):Student.Sdept=‘IS’).修改操作:

步驟:先用HOLD將要修改的元組從數(shù)據(jù)庫讀入工作空間用宿主語言修改其屬性用UPDATE將修改后的元組送回數(shù)據(jù)庫中

注:涉及多個關系,則多次重復以上三步

示例:把95007學生從計算機科學系轉到信息系

HOLDW(Student.Sno,Student.Sdept):Student.Sno=‘95007’MOVE‘IS’TOW.SdeptUPDATEW2023/3/2050.插入操作:

步驟:用宿主語句在工作空間中建立新的元組用PUT將該元組存入指定的關系中

注:PUT只對一個關系操作,即PUT后的表達式必為單個關系

示例:新開設一門2個學分的課程“系統(tǒng)結構”,課程號為8,先行課程號為6,插入該元組

MOVE‘8’TOW.CnoMOVE‘系統(tǒng)結構’TOW.Cname MOVE‘6’TOW.CpnoMOVE‘2’TOW.CcreditPUTW(Course)2023/3/2051.刪除操作:步驟:先用HOLD將要修改的元組從數(shù)據(jù)庫讀入工作空間用DELETE將該元組刪除

注:要注意保證參照完整性

示例:95001學生因故退學,刪除該學生元組

HOLDW(Student):Student.Sno=‘95001’DELETE2023/3/2052以元組變量的分量域變量作為謂詞變元的基本對象,是一種高度非過程化的基于屏幕表格的查詢語言,查詢要求及結果均以表格的形式顯示。例:以學生-選課數(shù)據(jù)庫為例.檢索:查詢信息系中年齡大于19歲的學生的學號StudentSnoSnameSsexSageSdeptP.95001>19IS查詢選修1號課程的學生的姓名StudentSno

SnameSsexSag

溫馨提示

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

評論

0/150

提交評論