powerpoint 演示文稿 - 關系數據庫_第1頁
powerpoint 演示文稿 - 關系數據庫_第2頁
powerpoint 演示文稿 - 關系數據庫_第3頁
powerpoint 演示文稿 - 關系數據庫_第4頁
powerpoint 演示文稿 - 關系數據庫_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第二章 關系數據庫 2.1 系模型概述 關系數據庫系統是支持關系模型的數據庫系統. 關系模型由關系數據結構、關系操作集合和關系完整性約束三部分組成。 一、單一的數據結構關系 二、關系操作 關系模型中常用的關系操作有: 選擇(Selsct)、投影(Project)、連接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)、等查詢(Query)操作和增加(Insert)、刪除(Delete)、修改(Update)兩大部分。 三、關系的三類完整性約束 關系模型允許定義三類完整性約束:實體完整性、參照完整性和用戶定義的完整性。 2.2 關系數

2、據結構及形式化定義 2.2.1 關 系 1. 域(Domain) 定義2.1 域是一組具有相同數據類型的值的集合. 2. 笛卡爾積(Cartesian Produce) 定義2.2 給定一組域D1,D2,Dn,這些域中可以有相同的。D1,D2,,Dn的笛卡爾積為: D1D2Dn(d1,d2,dn) | diDi, i=1,2,3,n) 若Di(i=1,2,n)為有限集,其基數為 mi(i=1,2,n), 則D1D2Dn的基數為 m=mi 例如給出三個域: D1=導師集合SUPERVISOR=張清玫,劉逸 D2=專業(yè)集合SPECIALITY=計算機專業(yè),通信專業(yè) D3=研究生集合POSTGRAD

3、UATE=李勇,劉晨,王敏 則D1,D2,D3的笛卡爾積為: D1D2D3=(張清玫,計算機專業(yè),李勇), (張清玫,計算機專業(yè),劉晨), (張清玫,計算機專業(yè),王敏), (張清玫,通信專業(yè),李勇), (張清玫,通信專業(yè),劉晨), (張清玫,通信專業(yè),王敏), (劉逸,計算機專業(yè),李勇), (劉逸,計算機專業(yè),劉晨), (劉逸,計算機專業(yè),王敏), (劉逸,通信專業(yè),李勇), (劉逸,通信專業(yè),劉晨), (劉逸,通信專業(yè),王敏), i=1n 3. 關 系 D1D2Dn 的子集叫做在域D1,D2,Dn上的關系, 用R(D1,D2,Dn)表示 這里R表示關系的名字,n是關系的目或度. 當n=1時,

4、稱為單元關系. 當n=2時,稱為二元關系. 關系是一張二維表,表的每一行對應一個元組,表的每一列對應一個域.由于域可以相同,為了加以區(qū)分,對每列取一個名字,稱為屬性.n目關系必有n個屬性.SUPERVISORSPECIALITYPOSTGRADUATE張清玫計算機專業(yè)李勇張清玫計算機專業(yè)劉晨劉 逸通 信 專 業(yè)王敏 表2.2 SAP關系 數據庫中的基本關系有以下性質: 1、列是同性質的,即每一列中的分量是同一類型的數據,來自同一個域。 2、不同的列可出自同一個域,每一列稱為屬性,要給予不同的屬性名。 3、列的順序無所謂,即列的次序可以任意交換。 4、任意兩個元組不能全同。 5、行的順序無所謂,

5、即行的次序可以任意交換。 6、每一分量必須是不可分的數據項。 關系的三種類型:基本關系, 查詢表, 視圖表 .關系模型要求關系必須是規(guī)范化的,即要求關系模式必須滿足一定的規(guī)范條件. 2.2.2 關系模式 關系的描述稱為關系模式(Relation Schema)。 可形式化表示為: R(U, D, dom, F) 關系模式通常可以簡記為: R(U) OR R(A1,A2,An)。 R為關系名, A1,A2,An為屬性名.屬性向域的映象常常直接說明為屬性的類型、長度。 2.2.3 關系數據庫 (1).關系數據庫的型 (2).關系數據庫的值 2.3 關系的完整性 一、實體完整性(Entity Int

6、egrity) 規(guī)則2.1 實體完整性規(guī)則 若屬性A是基本關系R的主屬性,則屬性A不能取空值. 對實體完整性規(guī)則的說明: (1) 實體完整性規(guī)則是針對基本關系而言的. (2) 現實世界中的實體是可區(qū)分的,即它們具有某種唯一性標識. (3) 相應地,關系模型中的以主碼作為唯一性標識. (4) 主碼中的屬性即主屬性不能取空值. 二、參照完整性(Referential Integrity) 例1 學生實體和專業(yè)實體可以用下面的關系表示,其中主碼用下劃線標識. 學生(學號,姓名, 性別, 專業(yè)號, 年齡) 專業(yè)(專業(yè)號, 專業(yè)名) 例2 學生、課程、學生與課程之間的多對多的聯系可用如下三個關系表示:

7、學生(學號,姓名, 性別, 專業(yè)號, 年齡) 課程(課程號,課程名,學分) 選修(學號,課程號,成績) 例3 在關系 學生2(學號,姓名, 性別, 專業(yè)號, 年齡,班長)中, “學號”屬性是主碼,“班長”屬性表示該學生所在班級的班長的學號。 設F是基本關系R的一個或一組屬性,但不是關系RF與基本關系S的主碼Ks相對應,則稱F是基本關系的外碼(Foreing Key),并稱基本關系R為參照關系(Referencing Relation).基本關系S為被參照關系(Referenced Relation)或目標關系(Target Relation). 參照完整性規(guī)則 若屬性(或屬性組)F是基本關系R

8、的外碼,它與基本關系S的主碼Ks相對應,則對于R中每個元組在F上的值必須為: 或者取空(F的每個屬性值均為空); 或者等于S中某個元組的主碼值. 三、用戶定義的完整性(User-defind Integrity) 用戶定義的完整性就是針對某一具體關系數據庫的約束條件. 它反映某一具體應用所涉及的數據必須滿足的語義要求. 2.4 關 系 代 數 一、關系代數的運算的分類 1. 傳統的集合運算 2. 專門的關系運算 關系代數的運算對象是關系.運算結果亦為關系。 二、關系代數用到的運算符 (1)集合運算符: (并),(差),(交) (2)算術比較符=, (3)專門的關系運算符: (選擇),(投影),

9、 (連接),(除) (廣義笛卡爾積)(4)邏輯運算符:, , 2.4.1 傳統的集合運算 設關系R和關系S具有相同的目n,且相應的屬性取自同一個域,則可以定義四種運算如下: 1. 并(Union) 關系R和關系S的并記為: RS t | t R t S. 結果仍為nR或屬于S的元組組成. 2. 差(Difference) 關系R和關系S的差記為:R-S=t|t R t S. 結果仍為n目關系.由屬于R而不屬于S的元組組成. 3. 交(Intersection) 關系R和關系S的交記為: R S =t | t R t S 結果仍為n目關系.由既屬于R有屬于S的元組組成. 關系的交可由關系的差表示

10、,即RS=R-(R-S). 4. 廣義笛卡爾積(Extended cartesian product) 兩個分別為n、m目阿關系R和S的廣義笛卡爾積RS是一個(n+m)n個分量是R的一個元組,后m個分量是SR有k1個元組,S有k2個元組,則RS有k1k2個元組. A B C a1 a1 a2 b1 b2 b2 c1 c2 c1 A B C a1 a1 a2 b2 b3 b2 c2 c2 c1RS A B C a1 a1 a2 a1 b1 b2 b2 b3 c1 c2 c1 c3 A B C a1 b1 c1 A B C a1 a2 b2 b2 c2 c1 圖 4-1 ( c )RS圖 4-1

11、( e )RS圖 4-1 ( d ) R-S( a )( b ) 2.4.2 專門的關系運算 一. 幾個記號 1. 設關系模式為R(A1,A2,An). 它的一個關系設為R. TR表示t是R的一個元組。TAi則表示元組t中相應屬于Ai的一個分量。A=Ai1,Ai2,Ai3,Aik,其中Ai1,Ai2,Ai3,Aik 是A1,A2,A3,An中的一部分,則A稱為屬性列或域列.A則表示A1,A2,A3,An中去掉Ai1,Ai2,Ai3,Aik后剩余的屬性組.tA=(tAi1,tAi2,tAik)表示元組t在屬性列A上諸分量的集合. 3. R為n目關系,S為m目關系 tr R , ts S tr t

12、s 稱為元組的連接(Concatenation).這是一個(n+m)列的元組,前n個分量是R的一個n元組,后m個分量是S中的一個m元組. 4. 給定一個關系R(X , Z), X,Z為屬性組. 我們定義當X=x時,x在R中的象集(Image Set)為: Zx=tz| tR,tX=x 表示R中屬性組X上值為x的諸元組在Z上分量的集合. 二. 各種關系運算的定義 1. 選擇(Selection) 亦稱為限制(Restriction).在關系R中選擇滿足給定條件的諸元組,記為: F( R)=t|tRF(t)=真 F是一個公式,它的取值為真或假. F由邏輯運算符(,)連接各算術表達式組成。算術表達式

13、的基本形式為: X1Y1 選擇運算是從關系R中選取使公式F為真的元組.這是從行的角度進行的運算. 舉例說明選擇運算: 設有學生課程關系數據庫,學生關系Student、課程關系Course和學生選課關系SC,分別如圖2.3 (a ), ( b ), ( c )所示 學號 Sno姓 名 Sname性別Ssex年齡Sage所在系Sdept95001950029500395004李勇劉晨王敏張立男女女男 20 19 18 19CSISMAISStudent課程號Cno課程名 Nname先行課Cpno學分Ccredit1234567數據庫數 學信息系統操作系統數據結構數據處理PASCAL語言516764

14、243424Course學號Sno課程號Cno成績Grade9500195001950019500295002123239285889080SC ( a )( b )( c ) 圖 2.3 學生-課程數據庫 例1. 查詢信息系(IS系)的全體學生. 解: 在學生關系中找出Sdept為IS的學生. Sdept=IS(Student)或5=IS(Student) 學號 Sno姓 名 Sname性別Ssex年齡Sage所在系Sdept9500295004劉晨張立女男 19 19ISIS 例2. 查詢年齡小于20歲的學生. 解: 在學生關系中找出Sage小于20的學生. 即: Sage19(Stude

15、nt)或419(Student) 學號 Sno姓 名 Sname性別Ssex年齡Sage所在系Sdept950029500395004劉晨王敏張立女女男191819ISMAIS 2. 投影(Projection) 關系R上的投影是從R中選擇若干屬性列組成新的關系.記作: A( R )=tA | t R A為R中的屬性列. 例3. 求學生(Student)關系在學生姓名和所在系這兩個屬性上的投影. 解: Sname , Sdept( Student ) 或 2 , 5( Student ) 結果如圖2.5(a)所示. 例4. 查詢關系Student 在所在系屬性上的投影. 解: Sdept( S

16、tudent ) 或5 ( Student ) 結果如圖2.5 (b) 3. 連接(Join)亦稱為連接連接運算是從兩個關系的笛卡爾積中選取屬性間滿足一定條件的元組.記作: RS = tr ts | trRtsS trA tsBAB 自然連接(Natural join)R和S具有相同的屬性組B,則自然連接定義如下: RS = tr tsB | trRtsS trB =tsB 例5. 設關系R,S分別為 圖2.6中的( a),(b ). RS 的結果如圖2.6( c ). RS 等值連接的結果如圖2.6( d ). CE RS 自然連接的結果如圖2.6( e ). 4. 除(Division)

17、給定關系R(X,Y)與S(Y,Z), 其中X,Y,Z為屬性列,R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集.定義除法: RS= trX | trRr(S) Yx) Yx為x在R中象集,x= trX . 除法結果是R中滿足下列條件的元組在X屬性列上的投影: 元組在X上分量值x的象集Yx包含S在Y上投影的集合. 例6 設關系R,S分別為圖2.7中(a) 和(b), RS的結果如圖(c) 在關系R中,A可以取四個值a1,a2,a3,a4 a1的象集為:(b1,c2),(b2,c3),(b2,c1) a2的象集為:(b3,c7),(b2,c3) a3的象集為:(b4,c6) a4的象集為

18、:(b6,c6) S在(B,C)上的投影為(b1,c2), (b2,c1),(b2,c3) 例7: 求至少選修1號課程和3號課程的學生的學號. 解: 設一個臨時關系K: Sno,Cno(SC)K=95001Cno13 例8: 查詢選修了2號課程的學生的學號 Sno(Cno=2 (SC)=95001,95002 例9: 查詢至少選修了一門其先行課為5號課程的學生姓名. Sname(Cpno=5 (Course) SC Sno, Sname(Student) ) 例10: 查詢選修了全部課程的學生的學號和姓名. Sno , Cno(SC) Cno (Course) Sno, Sname(Stude

19、nt) 2.5.1 元組關系演算語言ALPHA ALPHA語言的基本格式 操作語句 工作空間名(表達式): 操作條件 各部分的具體說明: :=GET | PUT | HOLD | UPDATA | DELETE |DROP :=(, , ). 2.5 關系演算 關系演算按謂詞變元的不同可分為元組關系演算和域關系演算.我們首先介紹元組關系演算然后介紹域關系演算,都是先討論抽象語言然后介紹一種實際語言。 一. 檢索操作 1. 簡單檢索 例1. 求所有被選修的課程的課程號碼. GET W (SC.Cno) 例2. 求所有學生的數據. GET W (Student) 2. 限定的檢索 例3. 求信息系

20、(IS)中年齡小于20歲的學生的學號和年齡. GET W (Student.Sno,Student.Sage): Student.Sdept=ISStudent.Sage19 例4. 求計科系年齡大于19歲的學生的學號. 查詢的條件是: Sdept=CS和Sage19兩個條件的與. (1). 把兩個條件寫在同一行上;StudentSnoSnameSsexSageSdept P.95001 19 CS StudentSnoSnameSsexSageSdept P.95001P.95001 19 CS (2). 把兩個條件寫在不同行上,但使用相同的示例元素值 例5.查詢計科系或者年齡大于19歲的學

21、生的學號.StudentSnoSnameSsexSageSdept P.95001P.95002 19 CS 例6. 查詢既選修了1號課程又選修了2號課程的學生的學號. 例7. 查詢選修1號課程的學生姓名. 該查詢涉及兩個關系: SC和Student. SC SnoCno Grade P.95001 P.95001 12StudentSnoSnameSsexSageSdept P.95001P.李勇 SC SnoCno Grade P.95001 1 例8. 查詢未選修1課程的學生姓名. 用邏輯非的查詢. 例9. 求有兩個人以上選修的課程號碼. 在一個表內連接的查詢StudentSnoSnam

22、eSsexSageSdept P.95001P.李勇 SC SnoCno Grade P.95001 1 SC SnoCno Grade 9500195001P.1 1 3. 集函數 CNT 對元組計數 SUM 求總和 AVG 求平均值 MAX 求最大值 MIN 求最小值 例10. 查詢信息系學生的平均年齡.StudentSnoSnameSsexSageSdept P.AVG.ALL.IS 4. 對查詢結果排序 例11. 查詢全體男生的姓名,要求查詢結果按所在系升序排列,對相同系的學生按年齡降序排列.StudentSnoSnameSsexSageSdept P. 李勇 男DO (2).AO (

23、1). 二. 更新操作 1. 修改操作(U) 例12. 把95001學生的年齡改為18.例14. 將計算機科學系所有學生的年齡都增加1歲. StudentSnoSnameSsexSageSdept 95001 U.18 (1).將操作符“U.”放在值上.(2).將操作符“U.”放在關系上.StudentSnoSnameSsexSageSdept 95001 U.18 例13. 把95001學生的 年齡增加1歲. StudentSnoSnameSsexSageSdept U.9500195001 1717+1 StudentSnoSnameSsexSageSdept U.9500895008 1818+1 CS 3.刪除操作(D) 例16. 刪除學生95089. 2. 插入操作( I ) 例15. 把信息系女生95701,姓名張三,年齡20存入數據庫中.StudentSnoS

溫馨提示

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

評論

0/150

提交評論