《數(shù)據(jù)庫總復習》PPT課件.ppt_第1頁
《數(shù)據(jù)庫總復習》PPT課件.ppt_第2頁
《數(shù)據(jù)庫總復習》PPT課件.ppt_第3頁
《數(shù)據(jù)庫總復習》PPT課件.ppt_第4頁
《數(shù)據(jù)庫總復習》PPT課件.ppt_第5頁
已閱讀5頁,還剩154頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫系統(tǒng)概論 An Introduction to Database System 總復習,2.1 關系數(shù)據(jù)結構及形式化定義,2.1.1 關系 2.1.2 關系模式 2.1.3 關系數(shù)據(jù)庫,An Introduction to Database System,關系(續(xù)), 域(Domain) 2. 笛卡爾積(Cartesian Product) 3. 關系(Relation), 域(Domain),域是一組具有相同數(shù)據(jù)類型的值的集合。例: 整數(shù) 實數(shù) 介于某個取值范圍的整數(shù) 指定長度的字符串集合 男,女 .,2. 笛卡爾積(Cartesian Product),笛卡爾積 給定一組域D1,D2

2、,Dn,這些域中可以有相同的。 D1,D2,Dn的笛卡爾積為: D1D2Dn (d1,d2,dn)diDi,i1,2,n 所有域的所有取值的一個組合 不能重復 解釋:設A、B是任意兩個集合,在集合A中任意取一個元素x,在集合B中任意取一個元素y,組成一個有序對(x,y),把這樣的有序對作為新的元素,他們的全體組成的集合稱為集合A和集合B的笛卡爾積,記為AB,即AB=(x,y)|xA且yB,An Introduction to Database System,笛卡爾積(續(xù)),元組(Tuple) 笛卡爾積中每一個元素(d1,d2,dn)叫作一個n元組(n-tuple)或簡稱元組(Tuple) (張

3、清玫,計算機專業(yè),李勇)、(張清玫,計算機專業(yè),劉晨)等都是元組 (可以理解為表中的一條記錄) 分量(Component) 笛卡爾積元素(d1,d2,dn)中的每一個值di叫作一個分量 張清玫、計算機專業(yè)、李勇、劉晨等都是分量 (可以理解為表記錄里的一個值),笛卡爾積(續(xù)),基數(shù)(Cardinal number) 域中數(shù)據(jù)的個數(shù)叫域的基數(shù),D2=男,女 則D2的基數(shù)為2 笛卡爾積的表示方法 笛卡爾積可表示為一個二維表 表中的每行對應一個元組,表中的每列對應一個域,An Introduction to Database System,案例,給出3個域如下: D1=SUPERVISOR = 張清玫

4、,劉逸 D2=SPECIALITY=計算機專業(yè),信息專業(yè) D3=POSTGRADUATE=李勇,劉晨,王敏 則D1,D2,D3的笛卡爾積為D: D=D1D2D3 (張清玫,計算機專業(yè),李勇),(張清玫,計算機專業(yè),劉晨), (張清玫,計算機專業(yè),王敏),(張清玫,信息專業(yè),李勇), (張清玫,信息專業(yè),劉晨),(張清玫,信息專業(yè),王敏), (劉逸,計算機專業(yè),李勇),(劉逸,計算機專業(yè),劉晨), (劉逸,計算機專業(yè),王敏),(劉逸,信息專業(yè),李勇), (劉逸,信息專業(yè),劉晨),(劉逸,信息專業(yè),王敏) 該笛卡爾積的基數(shù)為2x2x3=12,也就是共有12個元組, 可以列成如下二維表,An Int

5、roduction to Database System,3. 關系(Relation),1) 關系 D1D2Dn的子集叫作在域D1,D2,Dn上的 關系,表示為 R(D1,D2,Dn) R:關系名 n:關系的目或度(Degree) (關系可以理解為:有n列的表),An Introduction to Database System,關系(續(xù)),2) 元組 關系中的每個元素是關系中的元組,通常用t表示。 3) 單元關系與二元關系 當n=1時,稱該關系為單元關系(Unary relation) 或一元關系 當n=2時,稱該關系為二元關系(Binary relation),An Introduct

6、ion to Database System,關系(續(xù)),4) 關系的表示 關系也是一個二維表,表的每行對應一個元組,表的每 列對應一個域,An Introduction to Database System,關系(續(xù)),5)屬性 關系中不同列可以對應相同的域 為了加以區(qū)分,必須對每列起一個名字,稱為屬性(Attribute) n目關系必有n個屬性,An Introduction to Database System,關系(續(xù)),6) 碼 候選碼(Candidate key) 若關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼 簡單的情況:候選碼只包含一個屬性 全碼(All-k

7、ey) 最極端的情況:關系模式的所有屬性組是這個關系模式的候選碼,稱為全碼(All-key),An Introduction to Database System,關系(續(xù)),碼(續(xù)) 主碼 若一個關系有多個候選碼,則選定其中一個為主碼(Primary key) 主屬性 候選碼的諸屬性稱為主屬性(Prime attribute) 不包含在任何侯選碼中的屬性稱為非主屬性( Non-Prime attribute) 或非碼屬性(Non-key attribute),An Introduction to Database System,關系(續(xù)),D1,D2,Dn的笛卡爾積的某個子集才有實際含義 例

8、:表2.1 的笛卡爾積沒有實際意義 必須取出有實際意義的元組來構造關系 關系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) 假設:導師與專業(yè):1:1, 導師與研究生:1:n 主碼:POSTGRADUATE(假設研究生不會重名) SAP關系可以包含三個元組 (張清玫,計算機專業(yè),李勇), (張清玫,計算機專業(yè),劉晨), (劉逸,信息專業(yè),王敏) ,關系(續(xù)),7) 三類關系 基本關系(基本表或基表) 實際存在的表,是實際存儲數(shù)據(jù)的邏輯表示 查詢表 查詢結果對應的表 視圖表 由基本表或其他視圖表導出的表,是虛表,不對 應實際存儲的數(shù)據(jù),關系(續(xù)),8)基本關系的性

9、質 列是同質的 不同的列可出自同一個域 其中的每一列稱為一個屬性 不同的屬性要給予不同的屬性名 列的順序無所謂,,列的次序可以任意交換 任意兩個元組的候選碼不能相同(即:表中不能存在兩條完全相同的數(shù)據(jù)) 行的順序無所謂,行的次序可以任意交換,An Introduction to Database System,基本關系的性質(續(xù)), 分量必須取原子值 這是規(guī)范條件中最基本的一條,即:關系的每一個分量必須是一個不可分的數(shù)據(jù)項。簡言之:不允許表中有表 表2.3 非規(guī)范化關系 注意:實際的數(shù)據(jù)庫產品中,基本表并不完全是這6條屬性,2.1 關系數(shù)據(jù)結構,2.1.1 關系 2.1.2 關系模式 2.1.

10、3 關系數(shù)據(jù)庫,An Introduction to Database System,第二章 關系數(shù)據(jù)庫,2.1關系數(shù)據(jù)結構及形式化定義 2.2 關系操作 2.3 關系的完整性,2.2.1基本關系操作,常用的關系操作 查詢:選擇select、投影project、連接join、除divide、并union、交intersection、差except 數(shù)據(jù)更新:插入、刪除、修改 查詢的表達能力是其中最主要的部分 選擇、投影、并、差、笛卡爾積是5種基本操作 關系操作的特點 集合操作方式:操作的對象和結果都是集合,一次一集合的方式,An Introduction to Database System,

11、第二章 關系數(shù)據(jù)庫,2.1 關系數(shù)據(jù)結構及形式化定義 2.2 關系操作 2.3 關系的完整性 2.4 關系代數(shù) 2.5 關系演算 2.6 小結,2.3.1 關系的三類完整性約束,實體完整性和參照完整性: 關系模型必須滿足的完整性約束條件 稱為關系的兩個不變性,應該由關系系統(tǒng)自動支持 用戶定義的完整性: 應用領域需要遵循的約束條件,體現(xiàn)了具體領域中的語義約束,2.3.2 實體完整性,規(guī)則2.1 實體完整性規(guī)則(Entity Integrity) 若屬性A是基本關系R的主屬性,則屬性A不能取空值 例: SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) POSTGRAD

12、UATE: 主碼(假設研究生不會重名) 不能取空值,An Introduction to Database System,3. 參照完整性規(guī)則,規(guī)則2.2 參照完整性規(guī)則 若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為: 或者取空值(F的每個屬性值均為空值) 或者等于S中某個元組的主碼值,An Introduction to Database System,參照完整性規(guī)則(續(xù)),例1: 學生關系中每個元組的“專業(yè)號”屬性只取兩類值: (1)空值,表示尚未給該學生分配專業(yè) (2)非空值,這時該值必須是專

13、業(yè)關系中某個元組的“專業(yè)號”值,表示該學生不可能分配一個不存在的專業(yè),An Introduction to Database System,參照完整性規(guī)則(續(xù)),例2 : 選修(學號,課程號,成績) “學號”和“課程號”可能的取值 : (1)選修關系中的主屬性,不能取空值 (2)只能取相應被參照關系中已經存在的主碼值,An Introduction to Database System,參照完整性規(guī)則(續(xù)),例3: 學生(學號,姓名,性別,專業(yè)號,年齡,班長) “班長”屬性值可以取兩類值: (1)空值,表示該學生所在班級尚未選出班長 (2)非空值,該值必須是本關系中某個元組的學號值,An In

14、troduction to Database System,關系的完整性(續(xù)),2.3.1關系的三類完整性約束 2.3.2 實體完整性 2.3.3 參照完整性 2.3.4 用戶定義的完整性,用戶定義的完整性(續(xù)),例: 課程(課程號,課程名,學分) “課程號”屬性必須取唯一值 非主屬性“課程名”也不能取空值 “學分”屬性只能取值1,2,3,4,3.4 數(shù)據(jù)查詢,3.4.2 連接查詢 3.4.3 嵌套查詢 3.4.4 集合查詢 3.4.5 Select語句的一般形式,3.4.2 連接查詢,連接查詢:同時涉及多個表的查詢 連接條件或連接謂詞:用來連接兩個表的條件 一般格式: . . . BETWE

15、EN . AND . 連接字段:連接謂詞中的列名稱 連接條件中的各連接字段類型必須是可比的,但名字不必是相同的,連接查詢(續(xù)),一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復合條件連接,一、等值與非等值連接查詢,等值連接:連接運算符為= 其他的都稱為非等值連接 例33 查詢每個學生及其選修課程的情況 SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno = SC.Sno;,等值與非等值連接查詢(續(xù)),查詢結果:,等值與非等值連接查詢(續(xù)),自然連接:等值連接去掉重復的列 例34 對例33用自然連接完成。 SELECT Stu

16、dent.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno;,連接查詢(續(xù)),一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復合條件連接,二、自身連接,自身連接:一個表與其自己進行連接 需要給表起別名以示區(qū)別 由于所有屬性名都是同名屬性,因此必須使用別名前綴 例35查詢每一門課的間接先修課(即先修課的先修課) SELECT FIRST.Cno,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECON

17、D.Cno;,自身連接(續(xù)),FIRST表(Course表),自身連接(續(xù)),SECOND表(Course表),自身連接(續(xù)),查詢結果:,連接查詢(續(xù)),一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復合條件連接,三、外連接,外連接與普通連接的區(qū)別 普通連接操作只輸出滿足連接條件的元組 外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出,外連接(續(xù)),左外連接 列出左邊關系(如本例Student)中所有的元組 右外連接 列出右邊關系中所有的元組,外連接(續(xù)),執(zhí)行結果:,連接查詢(續(xù)),一、等值與非等值連接查詢 二、自身連接 三、外連接 四、復合條件連接,四、復合

18、條件連接,復合條件連接:WHERE子句中含多個連接條件 例37查詢選修2號課程且成績在90分以上的所有學生 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND /* 連接謂詞*/ SC.Cno= 2 AND SC.Grade 90; /* 其他限定條件 */,復合條件連接(續(xù)),例38查詢每個學生的學號、姓名、選修的課程名及成績 SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course /*多表連接*/ WHERE Student.Sno

19、 = SC.Sno and SC.Cno = Course.Cno; 連接操作除了可以兩表連接,也可以一個表與其自身連接,也可以多表連接,3.4 數(shù)據(jù)查詢,3.4.1 單表查詢 3.4.2 連接查詢 3.4.3 嵌套查詢 3.4.4 集合查詢 3.4.5 Select語句的一般形式,嵌套查詢(續(xù)),嵌套查詢概述 一個SELECT-FROM-WHERE語句稱為一個查詢塊 將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢,嵌套查詢(續(xù)),SELECT Sname /*外層查詢/父查詢*/ FROM Student WHERE Sno IN (SELECT

20、Sno /*內層查詢/子查詢*/ FROM SC WHERE Cno= 2 );,查詢選修了2號課程的學生名字,3.4.3 嵌套查詢,一、帶有IN謂詞的子查詢 二、 帶有比較運算符的子查詢 三、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢,在嵌套查詢中,子查詢的結果往往是一個集合,所以IN在嵌套查詢中最常用,一、帶有IN謂詞的子查詢,例39 查詢與“劉晨”在同一個系學習的學生。 此查詢要求可以分步來完成 確定“劉晨”所在系名 SELECT Sdept FROM Student WHERE Sname= 劉晨 ; 結果為: CS,帶有IN謂詞的子查詢(續(xù)),

21、查找所有在IS系學習的學生。 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept= CS ; 結果為:,帶有IN謂詞的子查詢(續(xù)),將第一步查詢嵌入到第二步查詢的條件中 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= 劉晨 ); 此查詢?yōu)椴幌嚓P子查詢。,An Introduction to Database System,帶有IN謂詞的子查詢(續(xù)),用自身連接完成例39查詢要求 SELECT S1.Sno,S1.Sna

22、me,S1.Sdept FROM Student S1,Student S2 WHERE S1.Sdept = S2.Sdept AND S2.Sname = 劉晨;,An Introduction to Database System,帶有IN謂詞的子查詢(續(xù)),用連接查詢實現(xiàn)例40 SELECT Sno,Sname FROM Student,SC,Course WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno AND Course.Cname=信息系統(tǒng);,An Introduction to Database System,3.4.3 嵌

23、套查詢,一、帶有IN謂詞的子查詢 二、 帶有比較運算符的子查詢 三、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢,An Introduction to Database System,二、帶有比較運算符的子查詢,當能確切知道內層查詢返回單值時,可用比較運算符(,=,)。 與ANY或ALL謂詞配合使用,An Introduction to Database System,帶有比較運算符的子查詢(續(xù)),例:假設一個學生只可能在一個系學習,并且必須屬于一個系,則在例39可以用 = 代替IN : SELECT Sno,Sname,Sdept FROM Student

24、 WHERE Sdept = (SELECT Sdept FROM Student WHERE Sname= 劉晨);,An Introduction to Database System,帶有比較運算符的子查詢(續(xù)),例41找出每個學生超過他選修課程平均成績的課程號。 SELECT Sno, Cno FROM SC x WHERE Grade =(SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno);,相關子查詢,An Introduction to Database System,帶有比較運算符的子查詢(續(xù)),可能的執(zhí)行過程: 1. 從外層查詢中取出

25、SC的一個元組x,將元組x的Sno值(200215121)傳送給內層查詢。 SELECT AVG(Grade) FROM SC y WHERE y.Sno=200215121; 2. 執(zhí)行內層查詢,得到值88(近似值),用該值代替內層查詢,得到外層查詢: SELECT Sno, Cno FROM SC x WHERE Grade =88;,An Introduction to Database System,帶有比較運算符的子查詢(續(xù)),3. 執(zhí)行這個查詢,得到 (200215121,1) (200215121,3) 4.外層查詢取出下一個元組重復做上述1至3步驟,直到外層的SC元組全部處理完

26、畢。結果為: (200215121,1) (200215121,3) (200215122,2),An Introduction to Database System,3.4.3 嵌套查詢,一、帶有IN謂詞的子查詢 二、 帶有比較運算符的子查詢 三、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢,An Introduction to Database System,帶有ANY(SOME)或ALL謂詞的子查詢 (續(xù)),例42 查詢其他系中比計算機科學某一學生年齡小的學生姓名和年齡 SELECT Sname,Sage FROM Student WHERE Sage

27、 CS ; /*父查詢塊中的條件 */,An Introduction to Database System,帶有ANY(SOME)或ALL謂詞的子查詢 (續(xù)),結果: 執(zhí)行過程: 1.RDBMS執(zhí)行此查詢時,首先處理子查詢,找出 CS系中所有學生的年齡,構成一個集合(20,19) 2. 處理父查詢,找所有不是CS系且年齡小于 20 或 19的學生,An Introduction to Database System,帶有ANY(SOME)或ALL謂詞的子查詢 (續(xù)),用聚集函數(shù)實現(xiàn)例42 SELECT Sname,Sage FROM Student WHERE Sage CS ;,An In

28、troduction to Database System,帶有ANY(SOME)或ALL謂詞的子查詢 (續(xù)),例43 查詢其他系中比計算機科學系所有學生年齡都小的學生姓名及年齡。 方法一:用ALL謂詞 SELECT Sname,Sage FROM Student WHERE Sage CS ;,An Introduction to Database System,帶有ANY(SOME)或ALL謂詞的子查詢 (續(xù)),方法二:用聚集函數(shù) SELECT Sname,Sage FROM Student WHERE Sage CS ;,An Introduction to Database Syste

29、m,3.4.3 嵌套查詢,一、帶有IN謂詞的子查詢 二、 帶有比較運算符的子查詢 三、 帶有ANY(SOME)或ALL謂詞的子查詢 四、 帶有EXISTS謂詞的子查詢,An Introduction to Database System,帶有EXISTS謂詞的子查詢(續(xù)),1. EXISTS謂詞 代表存在量詞 帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產生邏輯真值“true”或邏輯假值“false”。 若內層查詢結果非空,則外層的WHERE子句返回真值 若內層查詢結果為空,則外層的WHERE子句返回假值 由EXISTS引出的子查詢,其目標列表達式通常都用* ,因為帶EXISTS的子查詢只返

30、回真值或假值,給出列名無實際意義 2. NOT EXISTS謂詞 若內層查詢結果非空,則外層的WHERE子句返回假值 若內層查詢結果為空,則外層的WHERE子句返回真值,An Introduction to Database System,帶有EXISTS謂詞的子查詢(續(xù)),例44查詢所有選修了1號課程的學生姓名。 思路分析: 本查詢涉及Student和SC關系 在Student中依次取每個元組的Sno值,用此值去檢查SC關系 若SC中存在這樣的元組,其Sno值等于此Student.Sno值,并且其Cno= 1,則取此Student.Sname送入結果關系,An Introduction to

31、 Database System,帶有EXISTS謂詞的子查詢(續(xù)),用嵌套查詢 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno= 1 );,An Introduction to Database System,帶有EXISTS謂詞的子查詢(續(xù)),用連接運算 SELECT Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno= 1;,An Introduction to Database System,帶有

32、EXISTS謂詞的子查詢(續(xù)),例45 查詢沒有選修1號課程的學生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno=1);,3.4 數(shù)據(jù)查詢,3.4.1 單表查詢 3.4.2 連接查詢 3.4.3 嵌套查詢 3.4.4 集合查詢 3.4.5 Select語句的一般形式,3.4.4 集合查詢,集合操作的種類 并操作UNION 交操作INTERSECT 差操作EXCEPT 參加集合操作的各查詢結果的列數(shù)必須相同;對應項的數(shù)據(jù)類型也必須相同,集合查詢(續(xù)),

33、例48 查詢計算機科學系的學生及年齡不大于19歲的學生。 方法一: SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage=19; UNION:將多個查詢結果合并起來時,系統(tǒng)自動去掉重復元組。 UNION ALL:將多個查詢結果合并起來時,保留重復元組,集合查詢(續(xù)),方法二: SELECT DISTINCT * FROM Student WHERE Sdept= CS OR Sage=19;,集合查詢(續(xù)),例49 查詢選修了課程1或者選修了課程2的學生。 SELECT Sno FROM SC

34、WHERE Cno= 1 UNION SELECT Sno FROM SC WHERE Cno= 2 ;,集合查詢(續(xù)),例50 查詢計算機科學系的學生與年齡不大于19歲的學生的交集 SELECT * FROM Student WHERE Sdept=CS INTERSECT SELECT * FROM Student WHERE Sage=19,集合查詢(續(xù)),例50 實際上就是查詢計算機科學系中年齡不大于19歲的學生 SELECT * FROM Student WHERE Sdept= CS AND Sage=19;,集合查詢(續(xù)),例51 查詢選修課程1的學生集合與選修課程2的學生集合的

35、交集 SELECT Sno FROM SC WHERE Cno= 1 INTERSECT SELECT Sno FROM SC WHERE Cno=2 ;,集合查詢(續(xù)),例51實際上是查詢既選修了課程1又選修了課程2的學生 SELECT Sno FROM SC WHERE Cno= 1 AND Sno IN (SELECT Sno FROM SC WHERE Cno= 2 );,An Introduction to Database System,集合查詢(續(xù)),例52 查詢計算機科學系的學生與年齡不大于19歲的學生的差集。 SELECT * FROM Student WHERE Sdept

36、=CS EXCEPT SELECT * FROM Student WHERE Sage =19;,集合查詢(續(xù)),例52實際上是查詢計算機科學系中年齡大于19歲的學生 SELECT * FROM Student WHERE Sdept= CS AND Sage19;,3.4.5 SELECT語句的一般格式,SELECT ALL|DISTINCT 別名 , 別名 FROM 別名 , 別名 WHERE GROUP BY HAVING ORDER BY ASC|DESC,An Introduction to Database System,數(shù)據(jù)庫安全性(數(shù)據(jù)庫概論),4.2 數(shù)據(jù)庫安全性控制 4.3

37、 視圖機制,數(shù)據(jù)庫安全性控制概述(續(xù)),數(shù)據(jù)庫安全性控制的常用方法 用戶標識和鑒定 存取控制 視圖 審計 密碼存儲,An Introduction to Database System,4.2.1 用戶標識與鑒別,用戶標識與鑒別 (Identification 語義:將對指定操作對象的指定操作權限授予指定的用戶,An Introduction to Database System,GRANT(續(xù)),發(fā)出GRANT: DBA 數(shù)據(jù)庫對象創(chuàng)建者(即屬主Owner) 擁有該權限的用戶 按受權限的用戶 一個或多個具體用戶 PUBLIC(全體用戶),An Introduction to Database

38、 System,WITH GRANT OPTION子句,WITH GRANT OPTION子句: 指定:可以再授予 沒有指定:不能傳播 不允許循環(huán)授權,An Introduction to Database System,授權與回收(續(xù)),二、REVOKE 授予的權限可以由DBA或其他授權者用REVOKE語句收回 REVOKE語句的一般格式為: REVOKE ,. ON FROM ,.;,An Introduction to Database System,數(shù)據(jù)庫角色,一、角色的創(chuàng)建 CREATE ROLE 二、給角色授權 GRANT , ON 對象名 TO ,,數(shù)據(jù)庫角色,三、將一個角色授予

39、其他的角色或用戶 GRANT , TO , WITH ADMIN OPTION 四、角色權限的收回 REVOKE , ON FROM ,,第六章 關系數(shù)據(jù)理論,6.1 問題的提出 6.2 規(guī)范化 6.3 數(shù)據(jù)依賴的公理系統(tǒng) *6.4 模式的分解 6.5 小結,6.2 規(guī)范化,規(guī)范化理論正是用來改造關系模式,通過分解關系模式來消除其中不合適的數(shù)據(jù)依賴,以解決插入異常、刪除異常、更新異常和數(shù)據(jù)冗余問題。,確定關系中的屬性 確定屬性之間的依賴關系 逐級分解,6.2 規(guī)范化,6.2.1 函數(shù)依賴 6.2.3 范式 6.2.4 2NF 6.2.5 3NF 6.2.9 規(guī)范化小結,6.2.1 函數(shù)依賴,函

40、數(shù)依賴 平凡函數(shù)依賴與非平凡函數(shù)依賴 完全函數(shù)依賴與部分函數(shù)依賴 傳遞函數(shù)依賴,一、函數(shù)依賴,定義6.1 設R(U)是一個屬性集U上的關系模式,X和Y是U的子集。 若對于R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等, 而在Y上的屬性值不等, 則稱 “X函數(shù)確定Y” 或 “Y函數(shù)依賴于X”,記作XY。,只要X上的屬性值相等,Y上的值一定相等,設X屬性集合為x1,x2,x3,Y屬性集合為y1,y2 任何表中,對于X1,2,3不存在以下兩條數(shù)據(jù) 1,2,3 5,6 1,2,3 5,7 也就是說,對于滿足R模式的任何表,對于任何條數(shù)據(jù),只要X上的屬性值相等,Y上的值一定相等

41、,即:X確定Y,Y依賴X,二、平凡函數(shù)依賴與非平凡函數(shù)依賴,在關系模式R(U)中,對于U的子集X和Y, 如果XY,但Y X,則稱XY是非平凡的函數(shù)依賴 若XY,但Y X, 則稱XY是平凡的函數(shù)依賴 例:在關系SC(Sno, Cno, Grade)中, 非平凡函數(shù)依賴: (Sno, Cno) Grade 平凡函數(shù)依賴: (Sno, Cno) Sno (Sno, Cno) Cno,一般默認是非平凡的函數(shù)依賴,三、完全函數(shù)依賴與部分函數(shù)依賴,定義6.2 在R(U)中,如果XY,并且對于X的任何一個真子集X,都有X Y, 則稱Y對X完全函數(shù)依賴,記作 X F Y。 若XY,但Y不完全函數(shù)依賴于X,則稱

42、Y對X部分函數(shù)依賴,記作X P Y。,存在X的一個真子集, X Y,完全函數(shù)依賴與部分函數(shù)依賴(續(xù)),例1 中(Sno,Cno)Grade是完全函數(shù)依賴, (Sno,Cno)Sdept是部分函數(shù)依賴 因為Sno Sdept成立,且Sno是(Sno,Cno)的真子集,F,P,四、傳遞函數(shù)依賴,定義6.3 在R(U)中,如果XY,(Y X) ,YX YZ, 則稱Z對X傳遞函數(shù)依賴。 記為:X Z 注: 如果YX, 即XY,則Z直接依賴于X。 例: 在關系Std(Sno, Sdept, Mname)中,有: Sno Sdept,Sdept Mname Mname傳遞函數(shù)依賴于Sno,傳遞,6.2.3

43、 范式,范式是符合某一種級別的關系模式的集合 關系數(shù)據(jù)庫中的關系必須滿足一定的要求。滿足不同程度要求的為不同范式 范式的種類: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF),基于規(guī)范化的要求,E.F.Codd提出,Normal Form,6.2.3 范式,各種范式之間存在聯(lián)系: 某一關系模式R為第n范式,可簡記為RnNF。 一個低一級范式的關系模式,通過模式分解可以轉換為若干個高一級范式的關系模式的集合,這種過程就叫規(guī)范化,6.2.4 2NF,1NF的定義 如果一個關系模式R的所有屬性都是不可分的基本數(shù)據(jù)項,則R1NF

44、 第一范式是對關系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關系數(shù)據(jù)庫 但是滿足第一范式的關系模式并不一定是一個好的關系模式,2NF(續(xù)),例4 關系模式 S-L-C(Sno, Sdept, Sloc, Cno, Grade) Sloc為學生住處,假設每個系的學生住在同一個地方 函數(shù)依賴包括: (Sno, Cno) F Grade Sno Sdept (Sno, Cno) P Sdept Sno Sloc (Sno, Cno) P Sloc Sdept Sloc,2NF(續(xù)),S-L-C的碼為(Sno, Cno) S-L-C滿足第一范式。 非主屬性Sdept和Sloc部分函數(shù)依賴于

45、碼(Sno, Cno),Sno,Cno,Grade,Sdept,Sloc,S-L-C,S-L-C不是一個好的關系模式(續(xù)),原因 Sdept、 Sloc部分函數(shù)依賴于碼。 解決方法 S-L-C分解為兩個關系模式,以消除這些部分函數(shù)依賴 SC(Sno, Cno, Grade) S-L(Sno, Sdept, Sloc),2NF(續(xù)),函數(shù)依賴圖:,關系模式SC的碼為(Sno,Cno) 關系模式S-L的碼為Sno 這樣非主屬性對碼都是完全函數(shù)依賴,2NF(續(xù)),2NF的定義 定義6.6 若R1NF,且每一個非主屬性完全函數(shù)依賴于碼,則R2NF。 例:S-L-C(Sno, Sdept, Sloc,

46、Cno, Grade) 1NF S-L-C(Sno, Sdept, Sloc, Cno, Grade) 2NF SC(Sno, Cno, Grade) 2NF S-L(Sno, Sdept, Sloc) 2NF,(即1NF消除了非主屬性對碼的部分函數(shù)依賴則成為2NF),6.2.5 3NF,3NF的定義 定義6.7 關系模式R 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z Y), 使得XY,YZ成立, Y X,則稱R 3NF。 若R3NF,則每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼。,2NF消除非主屬性對碼的傳遞依賴即為3NF,3NF(續(xù)),例:2NF關系模式S-L(Sno, Sdept

47、, Sloc)中 函數(shù)依賴: SnoSdept Sdept Sno SdeptSloc 可得: SnoSloc,即S-L中存在非主屬性對碼的傳遞函數(shù)依 賴,S-L 3NF,傳遞,3NF(續(xù)),函數(shù)依賴圖:,3NF(續(xù)),解決方法 采用投影分解法,把S-L分解為兩個關系模式,以消除傳遞函數(shù)依賴: S-D(Sno, Sdept) D-L(Sdept,Sloc) S-D的碼為Sno, D-L的碼為Sdept。 分解后的關系模式S-D與D-L中不再存在傳遞依賴,3NF(續(xù)),S-D的碼為Sno, D-L的碼為Sdept,S-L(Sno, Sdept, Sloc) 2NF S-L(Sno, Sdept,

48、 Sloc) 3NF S-D(Sno,Sdept) 3NF D-L(Sdept, Sloc) 3NF,6.2.9 規(guī)范化小結,關系數(shù)據(jù)庫的規(guī)范化理論是數(shù)據(jù)庫邏輯設計的工具 目的:盡量消除插入、刪除異常,修改復雜,數(shù)據(jù)冗余 基本思想:逐步消除數(shù)據(jù)依賴中不合適的部分 實質:概念的單一化,一個關系描述一個概念、實體或者實體之間的一種聯(lián)系,規(guī)范化小結(續(xù)),關系模式規(guī)范化的基本步驟 1NF 消除非主屬性對碼的部分函數(shù)依賴 消除決定屬性 2NF 集非碼的非平 消除非主屬性對碼的傳遞函數(shù)依賴 凡函數(shù)依賴 3NF 消除主屬性對碼的部分和傳遞函數(shù)依賴 BCNF 消除非平凡且非函數(shù)依賴的多值依賴 4NF,8.2

49、 存儲過程,8.2.1 PL/SQL的塊結構 8.2.2 變量常量的定義 8.2.3 控制結構 8.2.4 存儲過程 8.2.5 小結,一、PL/SQL的塊結構,PL/SQL塊的基本結構: 1.定義部分 DECLARE -變量、常量、游標、異常等 定義的變量、常量等只能在該基本塊中使用 當基本塊執(zhí)行結束時,定義就不再存在,PL/SQL的塊結構(續(xù)),PL/SOL塊的基本結構(續(xù)): 2.執(zhí)行部分 BEGIN -SQL語句、PL/SQL的流程控制語句 EXCEPTION -異常處理部分 END;,8.2 存儲過程,8.2.1 PL/SQL的塊結構 8.2.2 變量常量的定義 8.2.3 控制結構

50、 8.2.4 存儲過程 8.2.5 小結,8.2 存儲過程,8.2.1 PL/SQL的塊結構 8.2.2 變量常量的定義 8.2.3 控制結構 8.2.4 存儲過程 8.2.5 小結,8.2.3 控制結構,PL/SQL 流程控制: 一、條件控制語句 二、循環(huán)控制語句 三、錯誤處理,控制結構(續(xù)),一、 條件控制語句 IF-THEN, IF-THEN-ELSE和嵌套的IF語句 1. IF condition THEN Sequence_of_statements; END IF 2. IF condition THEN Sequence_of_statements1; ELSE Sequence

51、_of_statements2; END IF; 3. 在THEN和ELSE子句中還可以再包括IF語句,即IF語句可以嵌套,控制結構(續(xù)),二、循環(huán)控制語句 LOOP, WHILE-LOOP和FOR-LOOP 1.最簡單的循環(huán)語句LOOP LOOP Sequence_of_statements; END LOOP; 多數(shù)數(shù)據(jù)庫服務器的PL/SQL都提供EXIT、BREAK或LEAVE等循環(huán)結束語句,保證LOOP語句塊能夠結束。,控制結構(續(xù)),二、循環(huán)控制語句(續(xù)) 2. WHILE-LOOP WHILE condition LOOP Sequence_of_statements; END L

52、OOP; 每次執(zhí)行循環(huán)體語句之前,首先對條件進行求值 如果條件為真,則執(zhí)行循環(huán)體內的語句序列。 如果條件為假,則跳過循環(huán)并把控制傳遞給下一個語句 3. FOR-LOOP FOR count IN REVERSEbound1 bound2 LOOP Sequence_of_statements; END LOOP;,控制結構(續(xù)),三、錯誤處理: 如果PL/SQL在執(zhí)行時出現(xiàn)異常,則應該讓程序在產生異常的語句處停下來,根據(jù)異常的類型去執(zhí)行異常處理語句 SQL標準對數(shù)據(jù)庫服務器提供什么樣的異常處理做出了建議,要求PL/SQL管理器提供完善的異常處理機制,PL/SQL 流程控制示例:,在SQLSer

53、ver2005中新建查詢,執(zhí)行下面的程序段 declare i int select i=1 /select 也可以用set while i=5 begin print 第+cast(i as varchar(1)+次循環(huán) select i=i+1 end,8.2 存儲過程,8.2.1 PL/SQL的塊結構 8.2.2 變量常量的定義 8.2.3 控制結構 8.2.4 存儲過程 8.2.5 小結,8.2.4 存儲過程,PL/SQL塊類型: 命名塊:編譯后保存在數(shù)據(jù)庫中,可以被反復調用,運行速度較快。存儲過程和函數(shù)是命名塊 匿名塊:每次執(zhí)行時都要進行編譯,它不能被存儲到數(shù)據(jù)庫中,也不能在其他的P

54、L/SQL塊中調用,存儲過程(續(xù)),二、 存儲過程的用戶接口: 1. 創(chuàng)建存儲過程 2. 執(zhí)行存儲過程 3. 刪除存儲過程,二、 存儲過程的用戶接口,1. 創(chuàng)建存儲過程: CREATE Procedure 過程名(參數(shù)1,參數(shù)2,.) AS ; 過程名:數(shù)據(jù)庫服務器合法的對象標識 參數(shù)列表:用名字來標識調用時給出的參數(shù)值,必須指定值的數(shù)據(jù)類型。參數(shù)也可以定義輸入參數(shù)、輸出參數(shù)或輸入/輸出參數(shù)。默認為輸入參數(shù)。 過程體:是一個。包括聲明部分和可執(zhí)行語句部分,存儲過程的用戶接口(續(xù)),重命名存儲過程 ALTER Procedure 過程名1 RENAME TO 過程名2;,存儲過程的用戶接口(續(xù)),2. 執(zhí)行存儲過程: CALL/PERFORM/EXEC Procedure 過程名(參數(shù)1,參數(shù)2,.); 使用CALL或者PERFORM等方式激活存儲過程的執(zhí)行。 在PL/SQL中,數(shù)據(jù)庫服務器支持在過程體中調用其他存儲過程 例12從賬戶01003815868轉一萬元到01003813828賬戶中。 CALL Procedure TRANSFER(01003813828,01003815868,10000);,存儲過程的用戶接口(續(xù)),3. 刪除存儲過程 DROP PROCEDURE 過程名(

溫馨提示

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

評論

0/150

提交評論