數(shù)據(jù)庫原理總結(jié)【驕陽書苑】_第1頁
數(shù)據(jù)庫原理總結(jié)【驕陽書苑】_第2頁
數(shù)據(jù)庫原理總結(jié)【驕陽書苑】_第3頁
數(shù)據(jù)庫原理總結(jié)【驕陽書苑】_第4頁
數(shù)據(jù)庫原理總結(jié)【驕陽書苑】_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理與設(shè)計期 末 總 結(jié),1,課程考核方式,課程性質(zhì):學(xué)位課,48學(xué)時 考核方式和比重 平時成績,20 作業(yè),出勤,網(wǎng)教測試題 附加作業(yè),=5分 閉卷考試,80,2,考試題型,填空題(每空1分,共計20分) 判斷題(每題1分,共計10分) 選擇題(每題1分,共計15分) 簡答題(每題 5分,共計15分) 綜合題(共計20分) 設(shè)計題(共計20分,3,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)

2、計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,4,第1章 數(shù)據(jù)庫系統(tǒng)引論,1. 數(shù)據(jù)管理技術(shù)的發(fā)展 2. 數(shù)據(jù)庫基本概念 3. 數(shù)據(jù)模型 4. 數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu) 5. 數(shù)據(jù)庫管理系統(tǒng),5,第1章 數(shù)據(jù)庫系統(tǒng)引論,1. 數(shù)據(jù)管理技術(shù)的發(fā)展 人工管理階段(40年代中-50年代中) 文件系統(tǒng)階段(50年代末-60年代中) 數(shù)據(jù)庫系統(tǒng)階段(60年代末-現(xiàn)在) 數(shù)據(jù)結(jié)構(gòu)化 數(shù)據(jù)獨立性高 減少數(shù)據(jù)冗余 數(shù)據(jù)共享 統(tǒng)一的數(shù)據(jù)保護功能,6,第1章 數(shù)據(jù)庫系統(tǒng)引論,2. 什么是數(shù)據(jù)庫 數(shù)據(jù)庫(DataBase, DB)是長期存儲在計算機內(nèi)、有組織的數(shù)據(jù)集合,它根據(jù)數(shù)據(jù)間的聯(lián)系組織在一起,具有較高的數(shù)據(jù)獨立性

3、,較少數(shù)據(jù)冗余,能夠為各種用戶共享 它需要由一個軟件系統(tǒng)統(tǒng)一管理,這個軟件系統(tǒng)稱為數(shù)據(jù)庫管理系統(tǒng) ( DataBase Management System, DBMS) 對數(shù)據(jù)提供存儲、管理和應(yīng)用的計算機系統(tǒng)稱為數(shù)據(jù)庫系統(tǒng)(DataBase System, DBS,7,3. 數(shù)據(jù)模型,數(shù)據(jù)模型是數(shù)據(jù)特征的抽象,用來描述數(shù)據(jù)的一組概念和定義。數(shù)據(jù)模型的三個要素: (1) 數(shù)據(jù)結(jié)構(gòu) 對數(shù)據(jù)靜態(tài)特性的描述 應(yīng)用所涉及的對象和對象具有的特征,對象間的聯(lián)系 (2) 數(shù)據(jù)操作 對數(shù)據(jù)的動態(tài)特性的描述。主要分為更新和檢索兩大類 具體包括檢索、插入、刪除、修改等 (3) 數(shù)據(jù)的完整性約束 對數(shù)據(jù)靜態(tài)和動態(tài)特性

4、的限定,反映了數(shù)據(jù)間的制約和依存關(guān)系,是區(qū)別數(shù)據(jù)模型最主要的部分,8,4 數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu),數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)的三級模式, 外模式: 是模式的子集,是用戶的數(shù)據(jù)視圖。 模式(也稱邏輯模式): 是全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,獨立于應(yīng)用程序和物理存儲 內(nèi)模式: 是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方法,9,4 數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu),三級模式結(jié)構(gòu)的二級映像 目的:實現(xiàn)三個模式的聯(lián)系和轉(zhuǎn)換, 外模式/模式映像 一個模式對應(yīng)多個外模式,當(dāng)模式結(jié)構(gòu)改變,則只要修改外模式與模式間的映像關(guān)系,而不必修改外模式中的局部邏輯結(jié)構(gòu),因而相應(yīng)的應(yīng)用程序亦可不必修改,實現(xiàn)了數(shù)據(jù)的邏輯獨立性 模式/內(nèi)模式映像

5、 一個模式對應(yīng)一個內(nèi)模式。當(dāng)數(shù)據(jù)庫的物理存儲結(jié)構(gòu)改變時,僅需要修改模式與內(nèi)模式間的映像關(guān)系,而可以使模式保持不變,從而使應(yīng)用程序保持不變,提供了數(shù)據(jù)的物理獨立性,10,5. 數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫的定義功能 數(shù)據(jù)庫的操縱功能 數(shù)據(jù)庫的保護功能 數(shù)據(jù)庫維護功能,11,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,12,第2章 數(shù)據(jù)模型,1. E-R概念

6、模型 2. 層次數(shù)據(jù)模型 3. 網(wǎng)狀數(shù)據(jù)模型 4. 關(guān)系數(shù)據(jù)模型,13,第2章 數(shù)據(jù)模型,數(shù)據(jù)模型是數(shù)據(jù)庫研究的一個核心問題。 概念模型, 按用戶的觀點來對數(shù)據(jù)和信息建模。不涉及信息在計算機中如何表示;如實體-聯(lián)系模型 邏輯模型 按計算機系統(tǒng)的觀點對數(shù)據(jù)建模 主要包括網(wǎng)狀模型、層次模型、關(guān)系模型、面向?qū)ο竽P?、對象關(guān)系模型等 物理模型 它描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,在磁盤或磁帶上的存儲方式和存取方法,14,1. E-R概念模型,1) 實體:客觀存在并可相互區(qū)別的事物稱為實體。 (2) 屬性:實體所具有的某一特征稱為屬性。 (3) 聯(lián)系:在現(xiàn)實世界中,事物內(nèi)部以及事物之間是有聯(lián)系的

7、兩個實體集之間的三類聯(lián)系,15,1. E-R概念模型,概念模型的表示方法很多,最著名的是實體聯(lián)系模型,它由E-R圖來表示。 E-R圖三個基本成分:實體、屬性和聯(lián)系 (1)實體: 用矩形表示,矩形框內(nèi)寫明實體名。 (2)屬性: 用橢圓形表示 (3)聯(lián)系:實體之間的聯(lián)系用菱形框表示,16,2. 層次模型,層次數(shù)據(jù)模型(hierarchical data model)是較早用于數(shù)據(jù)庫技術(shù)的一種數(shù)據(jù)模型,它是按層次結(jié)構(gòu)來組織數(shù)據(jù)的,3. 網(wǎng)狀數(shù)據(jù)模型,網(wǎng)狀模型的結(jié)點間的聯(lián)系可以是任意的,任何二個結(jié)點間都能發(fā)生聯(lián)系,更適于描述客觀世界。 將層次模型中對結(jié)點的限制去掉后就成為網(wǎng)狀模型,17,4. 關(guān)系數(shù)據(jù)

8、模型,在關(guān)系模型中,基本數(shù)據(jù)結(jié)構(gòu)是二維表 (1) 關(guān)系(relation) 關(guān)系是一張二維表,是由多個行和列組成的。一個關(guān)系可用來描述一個實體集 (2) 屬性(attribute) (3) 域(domain) (4) 元組(tuple) (5) 鍵(key) 鍵是一個或多個屬性組成的,能夠唯一標(biāo)識一個元組。 一個關(guān)系中可能有多組屬性都能夠起到標(biāo)識元組的作用。因而,一個關(guān)系中可能有多個鍵. 選擇其中的一個作為主鍵,其余為候選鍵,18,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)

9、據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,19,第3章 關(guān)系數(shù)據(jù)庫,1. 關(guān)系模型的基本概念 2. 關(guān)系代數(shù) 3. 關(guān)系演算 域關(guān)系演算 元組關(guān)系演算,20,第3章 關(guān)系數(shù)據(jù)庫,1. 關(guān)系模型的基本概念 定義3.1 給定一組集合D1,D2,Dn,它們可以是相同的。 D1,D2,Dn的笛卡爾積為: D1D2Dn=(d1,d2,dn) | di Di, i=1,2,n 所有域的所有值的一個組合,不能重復(fù) 定義3.2 D1D2Dn的任一個子集稱為D1,D2,Dn上的一個關(guān)系。n叫做關(guān)系的目或度(degree,21

10、,1. 關(guān)系模型的基本概念,無限關(guān)系在數(shù)據(jù)庫中是無意義的,因此限定關(guān)系代數(shù)數(shù)據(jù)模型中的關(guān)系必須是有限集合。 關(guān)系數(shù)據(jù)庫中,關(guān)系都是規(guī)范化的,具有如下性質(zhì): (1) 每一列中的值是同類型的數(shù)據(jù),來自同一個域 (2) 不同的列可以有相同的域,每一列稱為屬性,用屬性名標(biāo)識。 (3) 列的次序是無關(guān)緊要的。 (4) 元組的每個分量是原子的,是不可分的數(shù)據(jù)項 (5) 元組的次序是無關(guān)緊要的。 (6) 各個元組是不同的,即關(guān)系中不允許出現(xiàn)重復(fù)元組,22,1. 關(guān)系模型的基本概念,對關(guān)系結(jié)構(gòu)的描述稱為關(guān)系模式。用如下形式表示: 關(guān)系名(屬性名1,屬性名2,屬性名n) 關(guān)系模型的數(shù)據(jù)完整性約束 實體完整性、參

11、照完整性、用戶自定義完整性 其中,實體完整性、參照完整性是必須支持的 關(guān)系模型的數(shù)據(jù)操縱 查詢、插入、刪除和修改操作 在關(guān)系數(shù)據(jù)庫系統(tǒng)中,對數(shù)據(jù)的全部操作都可以歸結(jié)為對關(guān)系的運算,23,2. 關(guān)系代數(shù),關(guān)系代數(shù)運算的分類: 傳統(tǒng)的集合運算 并、差、交、笛卡爾積 專門的關(guān)系運算 選擇、投影、連接、除 不僅涉及行運算,也涉及列運算,這種運算是為數(shù)據(jù)庫的應(yīng)用而引進的特殊運算。 關(guān)系代數(shù)中五種基本運算 并、差、笛卡爾積、投影、選擇 交、連接、除法可以用5種基本運算來表達 引進它們并不增加語言的能力,但可以簡化表達,24,2. 關(guān)系代數(shù),集合運算是二個關(guān)系間的運算,運算結(jié)果生成一個新關(guān)系。其中,并()、

12、交()、差()運算要求 參加運算的二個關(guān)系R和S具有相同的目 且其對應(yīng)屬性定義在同一個域上, 稱R和S為同類型的關(guān)系 RS 仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成 RS = t | t Rt S RS 仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成 R -S = t | tRtS,25,2. 關(guān)系代數(shù),RS 仍為n目關(guān)系,由既屬于R又屬于S的元組組成 RS = t | t Rt S RS = R (R-S) R S 關(guān)系R 和S的笛卡爾積為R中所有元組和S中所有元組的拼接。 F(R) 選擇運算是關(guān)系上的一元運算,是從關(guān)系中選擇滿足一定條件的元組子集 F(R)ttR t(F),26,2. 關(guān)系

13、代數(shù),x(R) 從R中選擇出若干屬性列組成新的關(guān)系 條件連接是將二個關(guān)系中滿足連接條件的元組拼接起來形成新元組的集合,也叫連接 自然連接是在兩個關(guān)系共同屬性上的等值連接 它要求兩個關(guān)系中進行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,27,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,28,第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,結(jié)構(gòu)化查

14、詢語言SQL(Structured Query Language)是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語言,是一個通用的、功能極強的關(guān)系數(shù)據(jù)庫語言,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言 SQL語言集數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL的功能于一體,充分體現(xiàn)了關(guān)系數(shù)據(jù)語言的特點和優(yōu)點,29,第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,1. 數(shù)據(jù)定義: create 2. 數(shù)據(jù)查詢: select 3. 數(shù)據(jù)更新: insert update delete 4. SQL中的視圖 5. SQL的數(shù)據(jù)控制 6. 嵌入式SQL,30,第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,SQL的數(shù)據(jù)定義功能主要包括表、視圖、索

15、引和數(shù)據(jù)庫模式的定義 表的定義、刪除與修改CREATE TABLE、ALTER TABLE、DROP TABLE,31,第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,索引類型: 依據(jù)索引的順序和數(shù)據(jù)庫的物理存儲順序是否相同,索引分為兩類:聚簇索引、非聚簇索引 唯一索引、組合索引等 數(shù)據(jù)查詢 單表查詢、連接查詢(外連接)、嵌套查詢、集合查詢,32,2. 數(shù)據(jù)查詢,語句格式,SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; SELECT子句:指定要顯示的屬性列 FROM子句:指定查詢對象(基本表或視圖) WHERE子句

16、:指定查詢條件 GROUP BY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數(shù)。 HAVING短語:篩選出只有滿足指定條件的組 ORDER BY子句:對查詢結(jié)果表按指定列值的升序或降序排序,33,使用集函數(shù),主要集函數(shù) 計數(shù) COUNT(DISTINCT|ALL *) COUNT(DISTINCT|ALL ) 計算總和 SUM(DISTINCT|ALL ) 計算平均值 AVG(DISTINCT|ALL ) 求最大值 MAX(DISTINCT|ALL ) 求最小值 MIN(DISTINCT|ALL ) DISTINCT短語 在計算時要取消指定列中的重復(fù)值

17、 ALL短語:不取消重復(fù)值; ALL為缺省值,34,對查詢結(jié)果分組GROUP BY,細(xì)化集函數(shù)的作用對象 沒有分組時,集函數(shù)將作用于整個查詢結(jié)果 有分組時,集函數(shù)將作用于每個組 分組方法 按指定的一列或多列值分組,值相等的為一組 使用GROUP BY子句后, SELECT子句的中只能出現(xiàn)分組屬性和集函數(shù) 使用HAVING短語篩選最終輸出結(jié)果 只有滿足HAVING短語指定條件的組才輸出,35,對查詢結(jié)果分組,SELECT productid, orderid, quantity FROM orderhist,SELECT productid, SUM(quantity) AS total_qua

18、ntity FROM orderhist GROUP BY productid HAVING SUM(quantity)=30,36,3. 數(shù)據(jù)更新,插入數(shù)據(jù) (1) 插入單個元組 語句格式 INSERT INTO (,) VALUES ( , ) (2) 插入子查詢結(jié)果 語句格式 INSERT INTO (, ),37,3. 數(shù)據(jù)更新,修改數(shù)據(jù) UPDATE SET 列名1=,列名2= WHERE ; 刪除數(shù)據(jù) DELETE FROM WHERE,38,4. SQL中的視圖,視圖是建立在一個或多個基本表上的虛表。視圖提供了用戶從不同角度觀察數(shù)據(jù)庫的方法。 視圖的定義 CREATE VIEW

19、( ,) AS WITH CHECK OPTION; WITH CHECK OPTION表示通過視圖進行增刪改操作時,不得破壞視圖定義中子查詢中的條件表達式 視圖的刪除 DROP VIEW ; 該語句從數(shù)據(jù)字典中刪除指定的視圖定義,39,4. SQL中的視圖,更新視圖 可以通過視圖插入、刪除和修改數(shù)據(jù),對視圖的更新最終要轉(zhuǎn)換成對基本表的更新 DBMS實現(xiàn)視圖查詢的方法 實體化視圖、視圖消解法 視圖的更新操作有些可以執(zhí)行;有些不能執(zhí)行,即不能轉(zhuǎn)換為對基本表的對應(yīng)操作。 視圖的優(yōu)點 (1)視圖提供了邏輯數(shù)據(jù)獨立性 (2)簡化了用戶視圖 (3)視圖使用戶以不同角度看待相同的數(shù)。 (4)視圖提供了安全

20、保護功能,40,第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL,5. SQL的數(shù)據(jù)控制 授權(quán)語句GRANT 回收語句REVOKE 具有授予權(quán)的用戶可以通過回收語句REVOKE將所授予的權(quán)限回收。 6. 嵌入式SQL SQL語言提供了兩種使用方式: 交互式SQL 、嵌入式SQL 嵌入式SQL引入了游標(biāo)機制協(xié)調(diào)面向集合和面向記錄兩種不同的處理方式,41,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)

21、據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,42,第5章 查詢處理和查詢優(yōu)化,1.查詢處理 2.查詢優(yōu)化 3.代數(shù)優(yōu)化 4.基于存取路徑的優(yōu)化 5.基于代價估算的優(yōu)化,43,執(zhí)行查詢操作的基本算法,查詢處理過程包括: 查詢分析 查詢檢查 查詢優(yōu)化 查詢執(zhí)行,44,執(zhí)行查詢操作的基本算法,1) 選擇操作的實現(xiàn) 順序掃描方法 二分查找法 使用索引(或散列)的掃描方法 (2) 連接操作的實現(xiàn) 嵌套循環(huán)法 索引嵌套循環(huán)法 排序合并法 散列連接法,45,2. 查詢優(yōu)化,查詢優(yōu)化的總目標(biāo) 選擇有效策略使查詢代價最小(實際上是較小) (1)代數(shù)優(yōu)化 是關(guān)系代數(shù)表達式的優(yōu)化,即按照一定的規(guī)則改變代數(shù)表達式中操作的次序和組

22、合,使查詢執(zhí)行更高效。不涉及底層的存取路徑 (2)基于存取路徑的優(yōu)化 合理選擇各種操作的存取路徑以獲得優(yōu)化效果,需要考慮數(shù)據(jù)的物理組織和訪問路徑,以及底層操作算法的選擇,涉及數(shù)據(jù)文件的組織方法、數(shù)據(jù)值的分布情況等,也稱為物理優(yōu)化 (3)基于代價估算的優(yōu)化 對于多個可選的查詢策略通過估算執(zhí)行策略的代價,從中選擇代價最小的作為執(zhí)行策略,46,3.代數(shù)優(yōu)化,代數(shù)優(yōu)化策略 (1)在關(guān)系代數(shù)表達式中盡可能早地執(zhí)行選擇操作, 這是最重要、最基本的一條 (2) 投影運算和選擇運算同時進行 (3)將投影運算與其前面或后面的雙目運算結(jié)合 (4) 把某些選擇同在它前面要執(zhí)行的笛卡爾積結(jié)合起來成為一個連接運算 (5

23、) 找出公共子表達式,47,3.代數(shù)優(yōu)化,代數(shù)優(yōu)化算法 遵循代數(shù)優(yōu)化的啟發(fā)式規(guī)則 ,應(yīng)用關(guān)系代數(shù)等價變換公式來優(yōu)化關(guān)系表達式的算法 (1) 把形如F1F2Fn(E)變換為F1(F2(Fn(E) (2) 對每一個選擇,盡可能把它移到樹的葉端 (3) 對每一個投影,盡可能把它移向樹的葉端 (4) 利用等價變換規(guī)則把選擇和投影的串接合并,使多個選擇或投影能同時執(zhí)行,或在一次掃描中全部完成 (5) 把語法樹的內(nèi)節(jié)點分組。每一雙目運算和它所有的直接祖先為一組,48,SELECT Cname FROM St, Course, SC WHERE St.Sno=SC.Sno AND SC.Cno=Course

24、.Cno AND St.Sdept=IS Sname(Student.Sno=SC.SnoCourse.Cno=SC.CnoStudent.Dept=計算機學(xué)院Course.Cname=DataBase (StudentSC)Course,49,50,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,51,第6章 數(shù)據(jù)庫的安全性,數(shù)據(jù)庫中所采用的安全性方

25、法和技術(shù) 1. 用戶標(biāo)識與鑒別: 該方法由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。用戶進入系統(tǒng)時,由系統(tǒng)進行核對,通過鑒定后才提供系統(tǒng)的使用權(quán) 最外層的安全保護措施 2. 存取控制: 通過用戶權(quán)限定義和合法權(quán)檢查確保只有合法權(quán)限的用戶訪問數(shù)據(jù)庫,所有未被授權(quán)的人員無法存取數(shù)據(jù),52,第6章 數(shù)據(jù)庫的安全性,3. 視圖機制: 為不同的用戶定義視圖,通過視圖機制把要保密的數(shù)據(jù)對無權(quán)存取的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護 4. 數(shù)據(jù)加密: 對存儲和傳輸?shù)臄?shù)據(jù)進行加密處理,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容 5. 數(shù)據(jù)庫審計: 數(shù)據(jù)庫審計可以作為預(yù)防手段,建立審計日

26、志,把用戶對數(shù)據(jù)庫的所有操作自動記錄下來放入審計日志中,DBA 可以利用審計跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等,53,2. 存取控制,1)自主存取控制DAC 主體是指一個提出請求或要求的實體,主體可以是DBMS所管理的實際用戶,或其它任何代表用戶行為的進程、作業(yè)和程序。 客體是接受其他實體訪問的被動實體,是受主體操縱,客體可以是文件、記錄、視圖等。 控制策略是主體對客體的操作行為集和約束條件集,即主體對客體的訪問規(guī)則集。 通過 SQL 的 GRANT 語句和 REVOKE 語句實現(xiàn),54,2. 存取控制,2)強制存取控制MAC 每一個數(shù)據(jù)對象被標(biāo)

27、以一定的密級,每一個用戶也被授予某一個級別的許可證。對于任意一個對象,具有合法許可證的用戶才可以存取 強制存取控制規(guī)則: 1) 僅當(dāng)主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應(yīng)的客體; 2) 僅當(dāng)主體的許可證級別等于客體的密級時,該主體才能寫相應(yīng)的客體。 規(guī)則修正: 主體的許可證級別 =客體的密級 主體能寫客體,55,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫

28、設(shè)計 第12章 數(shù)據(jù)庫編程,56,第7章 數(shù)據(jù)庫的完整性,數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和相容性 為維護數(shù)據(jù)庫的完整性,DBMS必須提供哪些功能? 提供定義完整性約束條件的機制 提供完整性檢查的方法 違約處理 即如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動作來保證數(shù)據(jù)的完整性 完整性約束條件的作用對象可以是: 關(guān)系、元組和屬性(列,57,1. 實體完整性約束,實體完整性是指主鍵的值不能為空或部分為空 如果一個元組的鍵為空值,或部分為空,該元組將不能表示任何實體,因而無意義 通過對主鍵值的約束實現(xiàn)實體完整性,CREATE TABLE Student (Sno CHAR(

29、8) PRIMARY KEY, Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20,CREATE TABLE SC (Sno CHAR(8) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno,Cno),58,2. 參照完整性約束,參照完整性約束是對關(guān)系中作為外鍵的值的約束 若關(guān)系R1中屬性A定義為外鍵,參照關(guān)系R2中的主鍵,則對于關(guān)系R1中的任一個元組在屬性A上的值或者為空值,或者為另一個關(guān)系R2中某個元組的主鍵的值 用FOREIGN KEY短語定義哪些列為外鍵

30、,用REFERENCES短語指明外鍵參照哪些表的主鍵,CREATE TABLE SC ( Sno CHAR(8) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno),59,可能破壞參照完整性的情況及違約處理,參照完整性違約處理 拒絕執(zhí)行(NO ACTION) 級聯(lián)操作(CASCADE) 設(shè)置為空值( SET-NULL,60,3. 用戶定義的完整性,用戶定義的完整性反映應(yīng)

31、用領(lǐng)域需要遵循的約束條件,體現(xiàn)了具體領(lǐng)域中的語義約束, 用戶定義后由系統(tǒng)支持 在關(guān)系數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)完整性控制策略包括規(guī)則、默認(rèn)值、約束、觸發(fā)器和存儲過程等。 通常屬性上的約束條件包括 唯一約束(UNIQUE) 非空約束(NOT NULL) 默認(rèn)值約束(DEFAULT) 檢查約束(CHECK,61,第7章 數(shù)據(jù)庫的完整性,表的設(shè)計要體現(xiàn)完整性約束的實現(xiàn) 實體完整性的體現(xiàn)是主鍵約束; 外鍵約束是參照完整性的體現(xiàn); 默認(rèn)值和唯一等是用戶定義完整性的體現(xiàn),62,4. 觸發(fā)器,觸發(fā)器是用戶定義在關(guān)系數(shù)據(jù)表上的一類由事件驅(qū)動的特殊過程,用編程的方法實現(xiàn)復(fù)雜的業(yè)務(wù)規(guī)則 觸發(fā)器工作過程 Inserted表

32、 存放insert或update語句執(zhí)行過程中,插入到觸發(fā)表中的新數(shù)據(jù)行的副本.因此inserted 表中的行是和觸發(fā)表中的新數(shù)據(jù)行相同. Deleted表 存放delete 或update語句執(zhí)行過程中,從觸發(fā)表中刪除的舊數(shù)據(jù)行的副本。因此,deleted表和觸發(fā)表不會有相同的行,63,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,64,第8章 數(shù)

33、據(jù)庫恢復(fù)技術(shù),1. 事務(wù)的基本概念 2. 故障種類 3. 數(shù)據(jù)庫恢復(fù)技術(shù) 4. 檢查點恢復(fù)技術(shù) 5. 數(shù)據(jù)庫恢復(fù)策略,65,1. 事務(wù)的基本概念,事務(wù)(Transaction)是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一個不可分割的工作單位 原子性: 事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做 一致性: 事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài) 隔離性: 對并發(fā)執(zhí)行而言,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾 持續(xù)性(也稱永久性):一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其執(zhí)行結(jié)果有

34、任何影響,66,2. 故障種類,數(shù)據(jù)庫系統(tǒng)可能發(fā)生的故障大致分為以下幾類: 系統(tǒng)故障 整個系統(tǒng)的正常運行突然被破壞、所有正在運行的事務(wù)都非正常終止、內(nèi)存中數(shù)據(jù)庫緩沖區(qū)的信息全部丟失、外部存儲設(shè)備上的數(shù)據(jù)未受影響 事務(wù)內(nèi)部的故障 某個事務(wù)在運行過程中由于種種原因未運行至正常終止點就夭折了 介質(zhì)故障 其它原因,67,3. 數(shù)據(jù)庫恢復(fù)技術(shù),數(shù)據(jù)恢復(fù)的基本原理 數(shù)據(jù)冗余: 利用存儲在系統(tǒng)其它地方的冗余數(shù)據(jù)重建數(shù)據(jù)庫中已被破壞或不正確的那部分?jǐn)?shù)據(jù) 建立冗余數(shù)據(jù)最常用的技術(shù)是 數(shù)據(jù)轉(zhuǎn)儲和登記日志文件 通常在一個數(shù)據(jù)庫系統(tǒng)中,兩種方法一起使用 恢復(fù)子系統(tǒng)的功能是利用冗余數(shù)據(jù),再根據(jù)故障的類型采取相應(yīng)的恢復(fù)措

35、施,保證故障發(fā)生后,能把數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)恢復(fù)到某種邏輯一致的狀態(tài),68,3. 數(shù)據(jù)庫恢復(fù)技術(shù),恢復(fù)中經(jīng)常使用的技術(shù) 數(shù)據(jù)庫轉(zhuǎn)儲 靜態(tài)轉(zhuǎn)儲和動態(tài)轉(zhuǎn)儲 海量轉(zhuǎn)儲和增量轉(zhuǎn)儲 基于日志的恢復(fù)技術(shù) 寫日志文件的兩條原則: 登記的次序嚴(yán)格按并行事務(wù)執(zhí)行的時間次序; 必須先寫日志文件,后寫數(shù)據(jù)庫 Redo技術(shù): 重作已提交的事務(wù) Undo技術(shù):對沒有提交的事務(wù)執(zhí)行Undo,將被修改的數(shù)據(jù)項恢復(fù)到事務(wù)開始前的狀態(tài),69,3. 數(shù)據(jù)庫恢復(fù)技術(shù),提高恢復(fù)效率的技術(shù) 檢查點技術(shù) 鏡像技術(shù),70,4. 數(shù)據(jù)庫恢復(fù)策略,事務(wù)故障的恢復(fù) 利用日志文件撤銷事務(wù)對數(shù)據(jù)的更改,系統(tǒng)回滾到事務(wù)執(zhí)行前的狀態(tài) 。 當(dāng)事務(wù)故障

36、發(fā)生時,系統(tǒng)反向掃描日志文件,并執(zhí)行逆向操作,將更新前的數(shù)據(jù)寫入數(shù)據(jù)庫 介質(zhì)故障的恢復(fù) 首先根據(jù)后備副本重建數(shù)據(jù)庫, 然后利用運行日志重做該副本備份后已完成的所有事務(wù),71,系統(tǒng)故障的恢復(fù)步驟,1) 正向掃描日志文件(即從頭掃描日志文件) Redo隊列: 在故障發(fā)生前已經(jīng)提交的事務(wù) Undo隊列:故障發(fā)生時尚未完成的事務(wù) (2) 對Undo隊列事務(wù)進行UNDO處理 反向掃描日志文件,對每個UNDO事務(wù)的更 新操作執(zhí)行逆操作 (3) 對Redo隊列事務(wù)進行REDO處理 正向掃描日志文件,對每個REDO事務(wù)重新執(zhí)行登記的操作,72,檢查點的恢復(fù)技術(shù),檢查點技術(shù)可以提高系統(tǒng)故障恢復(fù)的效率,數(shù)據(jù)庫恢復(fù)

37、時,利用檢查點能判定哪些事務(wù)是正常結(jié)束的,從而確定恢復(fù)哪些數(shù)據(jù)以及如何進行恢復(fù) 檢查點記錄的內(nèi)容 1. 建立檢查點時刻所有正在執(zhí)行的事務(wù)清單 2. 這些事務(wù)最近一個日志記錄的地址 寫檢查點的步驟: 把日志緩沖區(qū)中的內(nèi)容寫入日志文件; 在日志文件中寫入一個檢查點記錄; 把數(shù)據(jù)庫緩沖區(qū)的內(nèi)容寫入數(shù)據(jù)庫; 把檢查點記錄在日志文件中的地址寫入重啟動文件,73,檢查點的恢復(fù)技術(shù),利用檢查點的恢復(fù)步驟 (1) 從重啟動文件中找到最后一個檢查點記錄; (2) 得到檢查點時刻的事務(wù)清單, 暫時放入Undo隊列 (3) 從檢查點開始正向掃描日志文件, 如有新開始的事務(wù),暫時放入Undo隊列; 如有提交事務(wù)Tj,

38、把Tj從Undo隊列移到REDO隊列 (4)對Undo隊列事務(wù)進行UNDO處理;對Redo隊列事務(wù)進行REDO處理,74,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,75,第9章 并發(fā)控制,并發(fā)操作帶來的數(shù)據(jù)不一致性 丟失修改(lost update) 事務(wù)T1和T2讀入同一數(shù)據(jù)并修改,T2提交的結(jié)果破壞了(覆蓋了)T1提交的結(jié)果,導(dǎo)致T1的修改被

39、丟失。 不可重復(fù)讀(non-repeatable read) 事務(wù)T1讀取數(shù)據(jù)后,事務(wù)T2執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果。 讀“臟”數(shù)據(jù)(dirty read) 事務(wù)T1修改某一數(shù)據(jù)并將其寫回磁盤,事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷,這時T1已修改過的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。 避免不一致性的方法和技術(shù)就是并發(fā)控制。最常用的技術(shù)是封鎖技術(shù),76,1.并發(fā)調(diào)度的可串行性,定義9.1 多個事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)并發(fā)執(zhí)行的結(jié)果與這些事務(wù)按某一串行順序執(zhí)行的結(jié)果相同,這種調(diào)度策略被稱為可串行化調(diào)

40、度??纱谢遣l(fā)事務(wù)正確調(diào)度的準(zhǔn)則 。 定義9.2 如果一個調(diào)度S能通過一系列非沖突操作執(zhí)行順序的交換變成調(diào)度S1,則稱調(diào)度S和S1 沖突等價 沖突操作是指不同的事務(wù)對同一個數(shù)據(jù)的讀寫操作和寫寫操作,其他操作是不沖突操作 不同事務(wù)的沖突操作和同一事務(wù)的兩個操作不能交換,77,調(diào)度的沖突等價性,可串行化調(diào)度的充分條件: 一個調(diào)度S在保證沖突操作的次序不變的情況下, 通過交換兩個事務(wù)不沖突操作的次序得到另一個串行調(diào)度S , 則調(diào)度S為可串行化的調(diào)度,78,9.2.2 調(diào)度的沖突等價性,例 9-3】證明調(diào)度S是否是可串行化調(diào)度。 S=R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2

41、(B)W2(B) 把W2(A)與R1(B)W1(B)交換,得到: R1(A)W1(A)R2(A)R1(B)W1(B)W2(A)R2(B)W2(B,79,9.2.2 調(diào)度的沖突等價性,例 9-3】證明調(diào)度S是否是可串行化調(diào)度。 S=R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2(B)W2(B) 把W2(A)與R1(B)W1(B)交換,得到: R1(A)W1(A)R2(A)R1(B)W1(B)W2(A)R2(B)W2(B) 再把r2(A)與r1(B)w1(B)交換: L= R1(A)W1(A)R1(B)W1(B)R2(A)W2(A)R2(B)W2(B) 因為L等價于一個串行調(diào)度T

42、1,T2 所以調(diào)度S是可串行化的調(diào)度,80,2.基于封鎖的并發(fā)控制技術(shù),封鎖的類型 共享鎖(Share lock,簡記S鎖,又稱為讀鎖) 若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖 排它鎖(eXclusive lock,簡記X鎖,又稱為寫鎖) 若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖,81,2.基于封鎖的并發(fā)控制技術(shù),封鎖協(xié)議 在給數(shù)據(jù)對象加鎖時,要考慮何時請求鎖、持有鎖的時間和何時釋放等,要遵從一定規(guī)則。這些規(guī)則被稱為封鎖協(xié)議 一級封鎖協(xié)議 事務(wù)T在修改數(shù)據(jù)A前必須先對其

43、加X鎖,直到事務(wù)結(jié)束才釋放 可以避免丟失修改 不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù),82,2.基于封鎖的并發(fā)控制技術(shù),二級封鎖協(xié)議規(guī)定: 在一級封鎖協(xié)議基礎(chǔ)上,事務(wù)T在讀數(shù)據(jù)A之前必須先對其加S鎖,讀完后即可釋放S鎖 可以避免:丟失修改、讀“臟”數(shù)據(jù)。 不能保證避免不可重復(fù)讀的問題 三級封鎖協(xié)議 在二級封鎖協(xié)議基礎(chǔ)上,某一事務(wù)施加的S鎖要保持到該事務(wù)結(jié)束時才釋放。 三級封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重復(fù)讀,83,2.基于封鎖的并發(fā)控制技術(shù),三級協(xié)議的主要區(qū)別 什么操作需要申請封鎖 何時釋放鎖(即持鎖時間,84,2.基于封鎖的并發(fā)控制技術(shù),封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來

44、一些新的問題: 活鎖:指某個事務(wù)由于請求封鎖,但總也得不到鎖而長時間處于等待狀態(tài) 避免方法:采用先來先服務(wù)的策略 當(dāng)多個事務(wù)請求封鎖同一數(shù)據(jù)對象時,按請求封鎖的先后次序?qū)@些事務(wù)排隊 該數(shù)據(jù)對象上的鎖一旦釋放,首先批準(zhǔn)申請隊列中第一個事務(wù)獲得鎖,85,2.基于封鎖的并發(fā)控制技術(shù),封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題(續(xù)) 死鎖:指在同時處于等待狀態(tài)的兩上或多個事務(wù)中相互封鎖了對方請求的資源,使得沒有任何一個事物可以獲得足夠的資源運行完畢,而永遠等待下去 預(yù)防死鎖方法:一次封鎖法 允許死鎖發(fā)生,一旦檢測到死鎖,解除死鎖的方法:選擇一個處理死鎖代價最小的事務(wù),將其撤消,

45、釋放此事務(wù)持有的所有的鎖,使其它事務(wù)能繼續(xù)運行下去,86,兩階段封鎖協(xié)議,兩階段封鎖協(xié)議(Two-Phase Locking,簡稱2PL)是最常用的一種封鎖協(xié)議,理論上證明使用兩段封鎖協(xié)議產(chǎn)生的是可串行化調(diào)度 是指所有事務(wù)必須分兩個階段對數(shù)據(jù)項加鎖和解鎖 第一階段是獲得封鎖,也稱為擴展階段。在這階段,事務(wù)可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖 第二階段是釋放封鎖,也稱為收縮階段。在這階段,事務(wù)可以釋放任何數(shù)據(jù)項上的任何類型的鎖,但是不能再申請任何鎖。 兩階段封鎖協(xié)議可以保證并發(fā)事務(wù)執(zhí)行的可串行化,87,3. 多粒度封鎖,多粒度封鎖:在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事

46、務(wù)選擇 引進意向鎖(intention lock)目的 提高對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率 什么是意向鎖 對任一結(jié)點加基本鎖,必須先對它的上層結(jié)點加意向鎖,88,常用意向鎖,意向共享鎖(IS鎖) 如果對一個數(shù)據(jù)對象加IS鎖,表示它的后裔結(jié)點擬(意向)加S鎖。例:要對某個元組加S鎖,則要先對關(guān)系和數(shù)據(jù)庫加IS鎖 意向排它鎖(IX鎖) 如果對一個數(shù)據(jù)對象加IX鎖,表示它的后裔結(jié)點擬(意向)加X鎖。例:要對某個元組加X鎖,先要對關(guān)系和數(shù)據(jù)庫加IX鎖 共享意向排它鎖(SIX鎖) 如果對一個數(shù)據(jù)對象加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。例:對某個表加SIX鎖,則表示該事

47、務(wù)要讀整個表(所以要對該表加S鎖),同時會更新個別元組(所以要對該表加IX鎖,89,內(nèi)容,第1章 數(shù)據(jù)庫系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫 第4章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫的安全性 第7章 數(shù)據(jù)庫的完整性 第8章 數(shù)據(jù)庫恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論 第11章 數(shù)據(jù)庫設(shè)計 第12章 數(shù)據(jù)庫編程,90,第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論,關(guān)系模型的存儲異常 數(shù)據(jù)冗余 大量的數(shù)據(jù)冗余不僅造成存儲空間的浪費,而且存在著潛在的數(shù)據(jù)不一致。 插入異常 刪除異常 更新異常,91,第10章 關(guān)系數(shù)據(jù)庫設(shè)計理論,1. 函數(shù)依賴的定義

48、定義10.1 設(shè)關(guān)系模式R(U),X,YU,r是R(U)上的任一關(guān)系。對任意元組t1 、t2r, 如果t1、t2在X上的屬性值相等, t1、t2在Y上的屬性值亦相等, 則稱X函數(shù)決定Y,或Y函數(shù)依賴于X,記為FD XY 稱X為決定因素,或稱X為函數(shù)依賴的左部, 稱Y為函數(shù)依賴的右部。 平凡函數(shù)依賴與非平凡函數(shù)依賴 完全函數(shù)依賴與部分函數(shù)依賴 傳遞函數(shù)依賴,92,函數(shù)依賴的蘊涵性,若關(guān)系模式R上的任一關(guān)系都能滿足一個確定的函數(shù)依賴集F,則稱F為R滿足的函數(shù)依賴集 定義10.5 設(shè)函數(shù)依賴集F和關(guān)系模式R(U),屬性集X,YU。如果關(guān)系模式R滿足F,R必定滿足FD XY,則稱F邏輯蘊涵FD XY,

49、或稱XY邏輯蘊涵于F。記為 F |= XY。 定義10.6 設(shè)函數(shù)依賴集F,所有被F邏輯蘊涵的函數(shù)依賴稱為F的閉包,記為F+。 F+ = XY| 所有F 蘊涵的FD XY 定義10.8 設(shè)關(guān)系模式R(U, F),U=A1,A2,An, XU。所有用公理推出的函數(shù)依賴XAi中Ai的屬性集合稱屬性集X對于F的屬性閉包,記為XF+,93,2.函數(shù)依賴公理,Armstrong公理系統(tǒng)就是一個有效而完備的公理系統(tǒng),是模式分解算法的理論基礎(chǔ) 從一組函數(shù)依賴求得蘊含的函數(shù)依賴 求給定關(guān)系模式的關(guān)鍵字,94,2.函數(shù)依賴公理,Armstrong公理 設(shè)關(guān)系模式R(U,F(xiàn)),并且X、Y、Z和W是U的子集 A1

50、自反律(Reflexivity) 若YXU, 則 F|=XY; A2 增廣律(Augmentation) 若XY且ZU,則 F|=XZYZ; A3 傳遞律(Transitivity) 若XY, YZ,則 F|=XZ. 三條很有用的推論: 合成規(guī)則 由XY,XZ,則XYZ 分解規(guī)則 由XY及 ZY,則XZ 偽傳遞規(guī)則 由XY, YZW,則XZW,95,求閉包的算法,只要F中的函數(shù)依賴的左部屬性包含在中間結(jié)果X(i)中,就可以將沒有出現(xiàn)在X(i)中的右部屬性A并入X(i)中。XA顯然成立,算法10.1 計算屬性集X關(guān)于F的閉包X+ 輸入:模式R的屬性全集U,U上的函數(shù)依賴集F及屬性集X 輸出:屬性

51、集X的閉包X+ 方法:計算X(i)(i=0, 1, ) (1) 初值 X(0) = X,i=0; (2) X(i+1) = X(i) Z;其中, 屬性集Z=A | 存在VWF,VX(i)且AW而A X(i) (3) 判斷X(i+1) = X(i)或X(i+1) =U是否成立,若成立轉(zhuǎn)(5) (4) i=i+1,轉(zhuǎn)(2); 輸出X+的結(jié)果X(i+1,96,求閉包的算法,只要F中的函數(shù)依賴的左部屬性包含在中間結(jié)果X(i)中,就可以將沒有出現(xiàn)在X(i)中的右部屬性A并入X(i)中。XA顯然成立,例10-1】設(shè)關(guān)系模式R(U,F),U=A,B,C,D,E,G,F= ABC,BCD,ACDB,DEG,B

52、EC,CEAG。 求:(BD)+ 解:令X=BD (1) 初值 (X)(0)=BD (2) 在F中尋找左部是BD子集的函數(shù)依賴,DEG滿足條件。結(jié)果為:(X)(1)=BDEG。X(0) X (1)。 在F中繼續(xù)尋找左部是BDEG子集的函數(shù)依賴,得 BEC,C不包含在BDEG中,結(jié)果為(X)(2)=BCDEG 在F中繼續(xù)尋找左部是BCDEG子集的函數(shù)依賴,得:BCD,CEAG。這里僅有右部屬性A是未出現(xiàn)在(X)(2) 中的屬性,結(jié)果為 (X)(3)= ABCDEG。 X(3) X(2),雖然F中還有未考察過的函數(shù)依賴,但X(3) 已包含了R中的所有屬性,結(jié)束。 輸出結(jié)果:(BD)+ = ABCD

53、EG,97,4. 關(guān)系模式的規(guī)范化,定義10. 15 如果關(guān)系模式R的每一個屬性對應(yīng)的域值都是不可再分的,則R1NF。 定義10.17 如果一個關(guān)系模式R1NF,且所有非主屬性都完全依賴于R的每個候選鍵,則R2NF。 定義10.18 設(shè)R1NF,若在R中沒有非主屬性傳遞依賴于R的候選鍵,則關(guān)系模式R3NF,98,4. 關(guān)系模式的規(guī)范化,定義10.19 若R1NF,而且R中沒有任何屬性傳遞依賴于R中的任一關(guān)鍵字,則RBCNF 。 定義10.20 設(shè)關(guān)系模式R1NF,F(xiàn)是R上的函數(shù)依賴集,對于F中的每一個函數(shù)依賴XY,必有X是R的一個候選鍵,則RBCNF 如果RBCNF,則R上的每一個函數(shù)依賴中,每個決定因素都包含侯選鍵 多值依賴定義,99,4. 關(guān)系模式的規(guī)范化,關(guān)系模式規(guī)范化的基本步驟,1NF 消除非主

溫馨提示

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

最新文檔

評論

0/150

提交評論