數(shù)據(jù)庫原理-2關系數(shù)據(jù)庫.ppt
《數(shù)據(jù)庫原理-2關系數(shù)據(jù)庫.ppt》由會員分享,可在線閱讀,更多相關《數(shù)據(jù)庫原理-2關系數(shù)據(jù)庫.ppt(99頁珍藏版)》請在裝配圖網上搜索。
1、數(shù)據(jù)庫系統(tǒng)原理(第2章),,第二章關系數(shù)據(jù)庫,2-5章為本課程重點與難點關系數(shù)據(jù)庫的理論基礎1970,E.F.Codd“ARelationalModelofDataforSharedDataBanks”現(xiàn)代主流數(shù)據(jù)庫幾乎全部支持關系模型Oracle(甲骨文),Sybase,IBMDB2,MSSQLServer,Ingres,2.1關系模型概述,關系模型由關系數(shù)據(jù)庫、關系操作集合和關系完整性約束三部分組成。單一的數(shù)據(jù)結構關系實體和實體之間的聯(lián)系都用關系描述,,二.關系操作就關系模型而言,僅僅給出了關系操作的能力,并不給定(限定)RDBMS語言的語法要求。關系操作的特點:一次一集合的操作方式Set
2、-at-a-Time操作的對象和結果都是關系。,三種具有相同表達能力的抽象查詢語言:關系代數(shù)ISBL元組關系演算語言ALPHA,QUEL域關系演算語言QBE,,SQL則是介于關系代數(shù)和關系演算之間的標準查詢語言。由IBM提出,是應用得最廣泛的關系數(shù)據(jù)庫標準語言。,三.關系的三類完整性約束條件關系模型必須滿足:實體完整性和參照完整性約束。應用領域中的大量語義約束則由DBMS實現(xiàn)的用戶定義完整性保證。注意:這是由DBMS來保證的,而非應用程序保證。,2.2關系數(shù)據(jù)結構及其形式化定義,從集合論的角度給出關系數(shù)據(jù)結構的形式化定義。(需要離散數(shù)學集合論的概念)2.2.1關系(Relation)1.域定義
3、2.1:域是具有相同數(shù)據(jù)類型的值的集合。如自然數(shù),全班同學的名字等。,2.2笛卡兒集(卡氏集)定義2.2給定一組域D1,D2,,Dn,這些域中可以有相同的,D1,D2,,Dn的笛卡兒集為:D1D2Dn(d1,d2,,dn)|diDi,i=1,2,n,其中每一個元素稱為一個n元組,元素中的每個值稱為一個分量。,,例:D1=大,中,小,D2=紅,綠,,例:D1=大,中,小,D2=紅,綠D1D2=(大,紅),(大,綠),(中,紅),(中,綠),(小,紅),(小,綠)共有326個2元組,注意:集合論中笛卡兒集不滿足交換率,即笛卡兒集的元組有序?;鶖?shù)的概念:若Di(i=1,2,,n)為有限集,其基數(shù)為|
4、Di|,則D1D2Dn的基數(shù)為:|D1||D2||Dn|,,3.關系定義2.3D1D2Dn的任意子集叫做在域D1,D2,,Dn上的關系,可記做:R(D1,D2,,Dn),R為關系名,n是關系的目或度(degree)。,注意:1.這里的“子集”是“任意子集”,包括空集。2.笛卡兒集不滿足交換率,而關系通過給關系的列附加屬性名的方式取消元組的有序性。3.按2.3的定義,關系可以是無限集。通常我們在關系數(shù)據(jù)模型中限定關系為有限關系。,候選碼若關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為該關系的一個候選碼(CandidateKey)。一個關系可能有多個候選碼,則選定其中一個作為主碼(Pr
5、imaryKey)。包含在任何候選碼中的屬性稱為主屬性,不包含在任何候選碼中的屬性稱為非主屬性。全碼(All-Key)關系模式的所有屬性組構成此關系模式的唯一候選碼。,基本關系六性質列是同質的;不同列可出自同一個域,每一列為一個屬性,不同屬性(列)給不同屬性名;列的順序可任意交換;任意兩個元組不能完全相同;行的順序可任意交換;每一分量是不可分的數(shù)據(jù)項。記憶方法:三列兩行一分量。,注意:在許多實際關系數(shù)據(jù)庫產品中,基本表并不完全具有這六條性質,例如,有的數(shù)據(jù)庫產品(如FoxPro)仍然區(qū)分了屬性順序和元組的順序;許多關系數(shù)據(jù)庫產品中,例如Oracle,F(xiàn)oxPro等,它們都允許關系表中存在兩個完
6、全相同的元組。,2.2.2關系模式關系模式是對關系的描述。(是對型的描述)需描述元組集合的結構:由哪些屬性構成,這些屬性來自哪些域,以及屬性與域之間的映象關系。此外,關系模式應刻劃出完整性約束條件。,,定義2.4關系的描述稱為關系模式,可表述為:R(U,D,dom,F(xiàn))其中R為關系名,U為組成該關系地屬性名集合,D為屬性組U中屬性所來自的域,dom為屬性向域的映象集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關系集。,關系模式通??梢院営洖椋篟(U)或R(A1,A2,,AN)其中R為關系名,A1,A2,,AN為屬性名。而域名及屬性向域的映象常常直接說明為屬性的類型、長度。關系模式是靜態(tài)度、穩(wěn)定的,而關系是動態(tài)的、
7、隨時間變化的,兩者是型與值的關系。,2.2.3關系數(shù)據(jù)庫在給定應用領域中,用于描述所有實體和實體間的聯(lián)系的關系的集合構成一個關系數(shù)據(jù)庫。同樣,關系數(shù)據(jù)庫也有型和值之分。型:關系數(shù)據(jù)庫模式是對關系數(shù)據(jù)庫的描述。值:一般就稱為關系數(shù)據(jù)庫。,2.3關系的完整性,關系模型的完整性規(guī)則是對關系的某種約束條件。關系模型的三類完整性:實體完整性參照完整性用戶定義的完整性,其中實體完整性和參照完整性是關系模型必須滿足的完整性約束條件,被稱為是關系的兩個不變性,應該由關系系統(tǒng)自動支持。一、實體完整性實體完整性規(guī)則(規(guī)則2.1):每一關系必有一主碼,構成主碼的各屬性值均不能取空值。實體完整性規(guī)則規(guī)定基本關系的所有
8、主碼的各屬性都不能取空值,而不僅是主碼整體不能取空值。,例如學生選課關系“選修(學號,課程號,成績)”中,“學號、課程號”為主碼,則“學號”和“課程號”都不能取空值,而不是整體不為空。實體完整性可以引申一下,主碼也不能取重復值。,有關實體完整性的說明:(1)實體完整性規(guī)則是針對基本關系而言的。一個基本表通常對應現(xiàn)實世界的一個實體集。(名字怎么來的)(2)現(xiàn)實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識。(3)相應地,關系模型中以主碼作為唯一標識。(4)主碼中的屬性即主屬性不能取空值。所謂空值就是“不知道”或“不確定”的值。,二、參照完整性現(xiàn)實世界中的實體之間往往存在某種聯(lián)系,在關系模型中實
9、體及實體間的聯(lián)系都是用關系來描述的。這樣就自然存在著關系與關系之間的引用。引用的時候,必須取基本表中已經存在的值。由此引出參照的引用規(guī)則。參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。,定義2.5設F是基本關系R的一個或一組屬性,但不是關系R的碼,如果F與基本關系S的主碼Ks相對應,則稱F是基本關系R的外碼(Foreignkey),并稱基本關系R為參照關系(Referencingrelation),基本關系S為被參照關系(Referencedrelation)或目標關系(Targetrelation)。關系R和S不一定是不同的關系。,參照完整性規(guī)則(規(guī)則2.2):若屬性(或屬性組)F是基本關
10、系R的外碼,它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。,,例如,學生選課系統(tǒng),選課關系的學號按實體完整性要求,不能為空;按參照完整性要求,只能選學生關系中的學號,表示語義關系“只有注冊的學生才能選課”。課程號也類似(請同學們自己考慮)。,三、用戶定義的完整性(User-definedintegrity)實體完整性和參照性適用于任何關系數(shù)據(jù)庫系統(tǒng)。除此之外,不同的關系數(shù)據(jù)庫系統(tǒng)根據(jù)其應用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性就是針對某一具體關系數(shù)據(jù)
11、庫的約束條件,它反映某一具體應用所涉及的數(shù)據(jù)必須滿足的語義要求。關系模型應提供定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)的方法處理它們,而不要由應用程序承擔這一功能。,2.4關系代數(shù),本節(jié)要求給定關系和關系代數(shù)表達式,要會算。給定關系模式和查詢(語義)要求,要會寫關系代數(shù)表達式。,,關系代數(shù)是一種抽象的查詢語言,用對關系的運算來表達查詢,作為研究關系數(shù)據(jù)語言的數(shù)學工具。關系代數(shù)的運算對象是關系,運算結果亦為關系。關系代數(shù)用到的運算符包括四類:集合運算符、專門的關系運算符、算術比較符和邏輯運算符。,,比較運算符和邏輯運算符是用來輔助專門的關系運算符進行操作的,所以關系代數(shù)的運算按運算符的不同,
12、主要分為傳統(tǒng)的集合運算和專門的關系運算兩類。,2.4.1傳統(tǒng)的集合運算,是四種二目運算:,把關系看作元組的集合,于是,這四種運算與傳統(tǒng)集合運算類似。,其中,三種運算要求參與運算的兩個關系R,S具有相同的目n,且相應屬性取自同一個域。并:RSt|tRtS交:RSt|tRtS差:RSt|tRtS,廣義笛卡爾積(Extendedcartesianproduct)元組連接的記號:R為n目關系,S為m目關系。trts稱為元組的連接(Concatenation)。它是一個(n+m)列的元組,前n個分量為R中的一個n元組,后m個分量為S中的一個m元組。,,兩個分別為n目和m目的關系R和S的廣義笛卡爾積是一個
13、(n+m)列的元組的集合。元組的前n列是關系R的一個元組,后m列是關系S的一個元組。記作:RStrts|trRtsS若R有k1個元組,S有k2個元組,則關系R和關系S的廣義笛卡爾積有k1k2個元組。,,2.4.2專門的關系運算,一般包括選擇、投影、連接和除。,1.選擇選擇又稱為限制(Restriction)。它是在關系R中選擇滿足給定條件的諸元組,記作:F(R)=t|tRF(t)=真其中F表示選擇條件,它是一個邏輯表達式,取邏輯值真或假。,邏輯表達式F的基本形式為:X1Y1X2Y2表示比較運算符,它可以是、、、、或。X1、Y1等是屬性名或常量或簡單函數(shù)。屬性名也可以用它的序號來代替。表示邏輯運
14、算符,它可以是、或。因此選擇運算實際上是從關系R中選取使邏輯表達式F為真的元組。這是從行的角度進行的運算。,設有一個學生-課程關系數(shù)據(jù)庫,包括學生關系Student、課程關系Course和選修關系SC。(下面的例子都針對這三個關系進行運算。)例1查詢信息系(IS系)全體學生Sdept=IS(Student)或4=IS(Student)例2查詢年齡小于20歲的元組Sage<20(Student)或4<20(Student)。,補充例1:查詢信息系的年齡小于20歲的學生,補充例1:查詢信息系的年齡小于20歲的學生Sdept=ISSage<20(Student),補充例1:查詢信息系的年齡小于20歲
15、的學生Sdept=ISSage<20(Student)當然也可以表示為Sdept=IS(Student)Sage<20(Student)(注:雙目運算符的優(yōu)先級低于單目運算符),2.投影(Projection)先介紹與投影有關的兩個記號:一.(元組屬性分量記號)設關系模式為R(A1,A2,,An)。它的一個關系設為R。tR表示t是R的一個元組。tAi則表示元組t中相應于屬性Ai的一個分量。,二.(元組屬性列分量記號)若A=Ai1,Ai2,,Aik,其中Ai1,Ai2,,Aik是A1,A2,,An中的一部分,則A稱為屬性列或域列。A則表示A1,A2,,An中去掉Ai1,Ai2,,Aik后剩余的屬
16、性組。tA=(tAi1,tAi2,,tAik)表示元組t在屬性列A上諸分量的集合。,關系R上的投影是從R中選擇出若干屬性列組成新的關系。記作:A(R)=tA|tR其中A為R中的屬性列?;舅枷胧菑年P系中消除某些屬性,投影也可能消除掉某些行。因為取消了某些屬性列后,就可能出現(xiàn)重復行,應取消這些完全相同的行。,例3查詢學生關系Student在學生姓名和所在系兩個屬性上的投影Sname,Sdept(Student)或2,5(Student),例4查詢學生關系Student中都有哪些系,即查詢學生關系Student在所在系屬性上的投影:Sdept(Student),補充例2:(投影與選擇的混合運算)查
17、詢信息系學生的姓名和年齡。,補充例2:(投影與選擇的混合運算)查詢信息系學生的姓名和年齡。Sname,SageSdept=IS(Student)(注:單目運算為右結合),3.連接連接也稱為連接。它是從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組。記作:RS=trts|trRtsStrAtsBAB其中A和B分別為R和S上度數(shù)相等且可比的屬性組。是比較運算符。連接運算從R和S的笛卡爾積RS中選?。≧關系)在A屬性組上的值與(S關系)在B屬性組上值滿足比較關系的元組。,,,連接運算中有兩種最為重要也最為常用的連接,一種是等值連接(equi-join),另一種是自然連接(Naturaljoin)。
18、為“”的連接運算稱為等值連接(equi-join)。它是從關系R與S的笛卡爾積中選取A、B屬性值相等的那些元組。自然連接(Naturaljoin)是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且要在結果中把重復的屬性去掉。一般的連接操作是從行的角度進行運算。但自然連接還需要取消了重復列,所以是同時從行和列的角度進行運算。,,連接的計算首先根據(jù)連接的類型(連接、自然連接),確定結果的屬性。計算過程類似二重循環(huán)。如P50.圖2.6(c)(d)(e),,補充例3:求選了2號課程的學生的學號和姓名。,,補充例3:求選了2號課程的學生的學號和姓名。Sno,SName(Stud
19、entCno=2SC),,補充例4:求選修數(shù)據(jù)庫原理的學生的學號和姓名。Sno,SName(StudentSCCname=數(shù)據(jù)庫原理Course),,,,注意:自然連接在沒有相同的屬性組時退化為廣義笛卡兒集運算。,4.除()先介紹與除有關的記號:(象集記號)給定一個關系R(X,Y),X和Y為屬性組。我們定義,當tX=x時,x在R中的象集(ImagesSet)為:Yx=tY|tR,tX=x它表示R中屬性組X上值為x的諸元組在Y上分量的集合。,補充例5:象集的計算。設R(A,B)如下AB---------------------------------1aa1ab2st1mm求B1,計算過程考察r
20、的每一個元組t如果tA=1,則把tB放入結果。得如下:B----------------------aaabmm,除的定義:給定關系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上投影的集合。記作:RS=tX|tRY(S)Yx其中Yx為x在R中的象集,x=tX。,書例6.(p62)分析:R的A相當于X,B和C相當于YS的B和C相當于Y,D相當于Z(與結果無關)。除的結果只有A一個屬性。a1出現(xiàn)在R的第1,4
21、,7行,所以象集為(b1,c2),(b2,c3),(b2,c1)而S在(B,C)上的投影為(b1,c2),(b2,c1),(b2,c3)a1的象集包含量S在(B,C)上的投影,所以a1出現(xiàn)在結果中,類似的,a2,a3,a4的象集均不包含S在(B,C)上的投影。所以它們不出現(xiàn)在結果中。,例7.(不用臨時關系,改用完整表達式)Sno,Cno(SC)CnoCno=1Cno=3(SC)可以看出,除運算有“包含”的語義。對于同一個查詢,關系代數(shù)表達式可能不唯一。,關系運算的第二種劃分方法:5種基本運算和3種附加運算。交()的基本運算表達:RS=R-(R-S)RS=S-(S-R)RS=(R-(R-S))(
22、S-(S-R)),連接的表達:RS=F(RS)F,,除的表達:RS=x(R)-x(x(R)y(S)-R),2.5關系演算,關系演算是以數(shù)理邏輯中的謂詞演算為基礎的。按謂詞變元的不同,關系演算可分為元組關系演算和域關系演算。本節(jié)我們通過兩個實際的關系演算語言來介紹關系演算的思想。本節(jié)內容僅要求了解。,2.5.1元組關系演算語言ALPHA(簡單了解)元組關系演算以元組變量作為謂詞變元的基本對象。一種典型的元組關系演算語言是E.F.Codd提出ALPHA語言,這一語言雖然沒有實際實現(xiàn),但關系數(shù)據(jù)庫管理系統(tǒng)INGRES所用的QUEL語言是參照ALPHA語言研制的,與ALPHA十分類似。,ALPHA語言
23、主要有GET、PUT、HOLD、UPDATE、DELETE、DROP六條語句,語句的基本格式是:操作語句工作空間名(表達式):操作條件,一、檢索操作檢索操作用GET語句實現(xiàn)。(1)簡單檢索(即不帶條件的檢索)例1查詢所有被選修的課程號碼。GETW(SC.Cno)注意與“查詢所有的課程號碼”的區(qū)別。GETW(Course.Cno),,(2)限定的檢索(即帶條件的檢索)例2GETW(Student.Sno,Student.Sage):Student.Sdept=ISStudent.Sage<20,,(3)帶排序的檢索例4查詢計算機科學系(CS)學生的學號、年齡,結果按年降序排序。GETW(Stud
24、ent.Sno,Student.Sage):Student.Sdept=CSDOWNStudent.Sage,(4)帶定額(指定結果數(shù)量)的檢索例6查詢信息系(IS)年齡最大的學生的學號及其年齡,結果按年齡降序排序。GETW(3)(Student.Sno,Student.Sage):Student.Sdept=ISDOWNStudent.Sage,(5)用元組變量的檢索格式:RANGE表名變量名元組變量兩個用處:1.簡化關系名;2.操作條件中使用量詞時必須使用元組變量。一般情況下,操作條件中如果用到了不出現(xiàn)在結果表達式中的表時,必須使用量詞。例如,一般連接查詢常用到存在量詞。,例7查詢信息系學
25、生的名字RANGEStudentXGETW(X.Sname):X.Sdept=IS,(6)用存在量詞的檢索注意語義要求,“有一個”,“任意”等語義。例8查詢選修2號課程的學生的名字RANGESCXGETW(Student.Sname):X(X.Sno=Student.SnoX.Cno=2)(理解:存在一條選課記錄SC(即X),使得X是要求的學生Student所選的,且X的課程號是2),(7)帶有多個關系的表達式的檢索例:查詢成績在90分以上的學生名字與課程名字。RANGESCSCXGETW(Student.Sname,Course.Cname):SCX(Student.Sno=SCX.SnoC
26、SX.Cno=Course.CnoCSX.Grade=90)(注:結果表達式中出現(xiàn)的表不需要存在量詞),(8)用全稱量詞的檢索例:不選1號課程的學生的姓名,類似上例:GETW(Student.Sname):SCX(Student.Sno=SCX.SnoSCS.Cno=1)(理解:要求的學生不存在1號課程的選課記錄),也可改為全稱量詞:RANGESCSCXGETW(Student.Sname):SCX(Student.SnoSCX.SnoCS.Cno1)(理解:對于要求的學生,每一條選課記錄要么不是他選的,要么不是選的1號課程),(9)用兩種量詞的檢索根據(jù)語義分清使用全稱和存在量詞的條件。例13
27、查詢選修了全部課程的學生姓名RANGECourseCXRANGESCSCXGETW(Student.Sname):CXSCX(SCX.Sno=Student.SnoSCX.Cno=CX.Cno)(理解:要求的學生,對每一門課程都存在相應的選課記錄。),,(10)用蘊函(Implication)的檢索例14:查詢最少選修了95002號學生所選全部課程的學生的學號。P:學生95002選修了課程CX。q:學生Y也選了課程CX。轉換為CX(p-q)的問題。,RANGECorseCXSCSCXSCSCYGETW(Student.Sno):CX(SCX(SCX.Sno=95002SCX.Cno=CX.Cn
28、o)-SCY(SCY.Sno=Student.SnoSCY.Cno=CX.Cno)),(11)集函數(shù)二、更新操作(知道就可以)修改插入刪除,2.5.2域關系演算語言QBE與MSFoxpro的RQBE沒有什么聯(lián)系。關系演算的另一種形式是域關系演算。域關系演算以元組變量的分量即域變量作為謂詞變元的基本對象。QBE是QueryByExample(即通過例子進行查詢)的簡稱,其最突出的特點是它的操作方式。它是一種高度非過程化的基于屏幕表格的查詢語言,用戶通過終端屏幕編輯程序以填寫表格的方式構造查詢要求,而查詢結果也是以表格形式顯示,因此非常直觀,易學易用。,QBE中用示例元素來表示查詢結果可能的例子,示例元素實質上就是域變量。QBE操作框架如書圖2-9所示。檢索操作(通過書上給出的例子適當理解)例1求信息系全體學生的姓名,例2查詢全體學生的全部數(shù)據(jù)。,例4查詢計算機系的年齡大于19歲的學生的學號。,方法一一行表示“與”,“與”的表示,方法二兩行表示“與”(使用相同的示例元素),“或”的表示。,例5查詢計算機科學系或年齡大于19歲的學生的學號。,連接的表示。(涉及參與連接的所有表)例7查詢選修1號課程的學生的姓名。,例8查詢未選修1號課程的學生的姓名。,自表連接的表示。例9查詢有兩個人以上選修的課程號。,,二.更新操作(略),作業(yè),本章習題5。(P80),
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。