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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、 一個(gè)模式對(duì)應(yīng)一個(gè)內(nèi)模式。當(dāng)數(shù)據(jù)庫(kù)的物理存儲(chǔ)結(jié)構(gòu)改變時(shí),僅需要修改模式與內(nèi)模式間的映像關(guān)系,而可以使模式保持不變,從而使應(yīng)用程序保持不變,提供了數(shù)據(jù)的物理獨(dú)立性,10,5. 數(shù)據(jù)庫(kù)管理系統(tǒng),數(shù)據(jù)庫(kù)的定義功能 數(shù)據(jù)庫(kù)的操縱功能 數(shù)據(jù)庫(kù)的保護(hù)功能 數(shù)據(jù)庫(kù)維護(hù)功能,11,內(nèi)容,第1章 數(shù)據(jù)庫(kù)系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫(kù) 第4章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫(kù)的安全性 第7章 數(shù)據(jù)庫(kù)的完整性 第8章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論 第11章 數(shù)據(jù)庫(kù)設(shè)計(jì) 第12章 數(shù)據(jù)庫(kù)編程,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ù)庫(kù)研究的一個(gè)核心問(wèn)題。 概念模型, 按用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模。不涉及信息在計(jì)算機(jī)中如何表示;如實(shí)體-聯(lián)系模型 邏輯模型 按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模 主要包括網(wǎng)狀模型、層次模型、關(guān)系模型、面向?qū)ο竽P?、?duì)象關(guān)系模型等 物理模型 它描述數(shù)據(jù)在系統(tǒng)內(nèi)部的表示方式和存取方法,在磁盤(pán)或磁帶上的存儲(chǔ)方式和存取方法,14,1. E-R概念模型,1) 實(shí)體:客觀存在并可相互區(qū)別的事物稱為實(shí)體。 (2) 屬性:實(shí)體所具有的某一特征稱為屬性。 (3) 聯(lián)系:在現(xiàn)實(shí)世界中,事物內(nèi)部以及事物之間是有聯(lián)系的

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

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

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

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

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

12、交()、差()運(yùn)算要求 參加運(yùn)算的二個(gè)關(guān)系R和S具有相同的目 且其對(duì)應(yīng)屬性定義在同一個(gè)域上, 稱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) 選擇運(yùn)算是關(guān)系上的一元運(yùn)算,是從關(guān)系中選擇滿足一定條件的元組子集 F(R)ttR t(F),26,2. 關(guān)系

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

14、詢語(yǔ)言SQL(Structured Query Language)是一種介于關(guān)系代數(shù)與關(guān)系演算之間的語(yǔ)言,是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言 SQL語(yǔ)言集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML、數(shù)據(jù)控制語(yǔ)言DCL的功能于一體,充分體現(xiàn)了關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn)和優(yōu)點(diǎn),29,第4章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言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ù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL,SQL的數(shù)據(jù)定義功能主要包括表、視圖、索

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

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

17、 ALL短語(yǔ):不取消重復(fù)值; ALL為缺省值,34,對(duì)查詢結(jié)果分組GROUP BY,細(xì)化集函數(shù)的作用對(duì)象 沒(méi)有分組時(shí),集函數(shù)將作用于整個(gè)查詢結(jié)果 有分組時(shí),集函數(shù)將作用于每個(gè)組 分組方法 按指定的一列或多列值分組,值相等的為一組 使用GROUP BY子句后, SELECT子句的中只能出現(xiàn)分組屬性和集函數(shù) 使用HAVING短語(yǔ)篩選最終輸出結(jié)果 只有滿足HAVING短語(yǔ)指定條件的組才輸出,35,對(duì)查詢結(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) 插入單個(gè)元組 語(yǔ)句格式 INSERT INTO (,) VALUES ( , ) (2) 插入子查詢結(jié)果 語(yǔ)句格式 INSERT INTO (, ),37,3. 數(shù)據(jù)更新,修改數(shù)據(jù) UPDATE SET 列名1=,列名2= WHERE ; 刪除數(shù)據(jù) DELETE FROM WHERE,38,4. SQL中的視圖,視圖是建立在一個(gè)或多個(gè)基本表上的虛表。視圖提供了用戶從不同角度觀察數(shù)據(jù)庫(kù)的方法。 視圖的定義 CREATE VIEW

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

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

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

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

23、) 找出公共子表達(dá)式,47,3.代數(shù)優(yōu)化,代數(shù)優(yōu)化算法 遵循代數(shù)優(yōu)化的啟發(fā)式規(guī)則 ,應(yīng)用關(guān)系代數(shù)等價(jià)變換公式來(lái)優(yōu)化關(guān)系表達(dá)式的算法 (1) 把形如F1F2Fn(E)變換為F1(F2(Fn(E) (2) 對(duì)每一個(gè)選擇,盡可能把它移到樹(shù)的葉端 (3) 對(duì)每一個(gè)投影,盡可能把它移向樹(shù)的葉端 (4) 利用等價(jià)變換規(guī)則把選擇和投影的串接合并,使多個(gè)選擇或投影能同時(shí)執(zhí)行,或在一次掃描中全部完成 (5) 把語(yǔ)法樹(shù)的內(nèi)節(jié)點(diǎn)分組。每一雙目運(yùn)算和它所有的直接祖先為一組,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=計(jì)算機(jī)學(xué)院Course.Cname=DataBase (StudentSC)Course,49,50,內(nèi)容,第1章 數(shù)據(jù)庫(kù)系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫(kù) 第4章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫(kù)的安全性 第7章 數(shù)據(jù)庫(kù)的完整性 第8章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論 第11章 數(shù)據(jù)庫(kù)設(shè)計(jì) 第12章 數(shù)據(jù)庫(kù)編程,51,第6章 數(shù)據(jù)庫(kù)的安全性,數(shù)據(jù)庫(kù)中所采用的安全性方

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

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

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

28、設(shè)計(jì) 第12章 數(shù)據(jù)庫(kù)編程,56,第7章 數(shù)據(jù)庫(kù)的完整性,數(shù)據(jù)的完整性是指數(shù)據(jù)的正確性、有效性和相容性 為維護(hù)數(shù)據(jù)庫(kù)的完整性,DBMS必須提供哪些功能? 提供定義完整性約束條件的機(jī)制 提供完整性檢查的方法 違約處理 即如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性 完整性約束條件的作用對(duì)象可以是: 關(guān)系、元組和屬性(列,57,1. 實(shí)體完整性約束,實(shí)體完整性是指主鍵的值不能為空或部分為空 如果一個(gè)元組的鍵為空值,或部分為空,該元組將不能表示任何實(shí)體,因而無(wú)意義 通過(guò)對(duì)主鍵值的約束實(shí)現(xiàn)實(shí)體完整性,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. 參照完整性約束,參照完整性約束是對(duì)關(guān)系中作為外鍵的值的約束 若關(guān)系R1中屬性A定義為外鍵,參照關(guān)系R2中的主鍵,則對(duì)于關(guān)系R1中的任一個(gè)元組在屬性A上的值或者為空值,或者為另一個(gè)關(guān)系R2中某個(gè)元組的主鍵的值 用FOREIGN KEY短語(yǔ)定義哪些列為外鍵

30、,用REFERENCES短語(yǔ)指明外鍵參照哪些表的主鍵,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) 級(jí)聯(lián)操作(CASCADE) 設(shè)置為空值( SET-NULL,60,3. 用戶定義的完整性,用戶定義的完整性反映應(yīng)

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

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

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

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

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

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

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

38、把Tj從Undo隊(duì)列移到REDO隊(duì)列 (4)對(duì)Undo隊(duì)列事務(wù)進(jìn)行UNDO處理;對(duì)Redo隊(duì)列事務(wù)進(jìn)行REDO處理,74,內(nèi)容,第1章 數(shù)據(jù)庫(kù)系統(tǒng)引論 第2章 數(shù)據(jù)模型 第3章 關(guān)系數(shù)據(jù)庫(kù) 第4章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL 第5章 查詢處理和查詢優(yōu)化 第6章 數(shù)據(jù)庫(kù)的安全性 第7章 數(shù)據(jù)庫(kù)的完整性 第8章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù) 第9章 并發(fā)控制 第10章 關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論 第11章 數(shù)據(jù)庫(kù)設(shè)計(jì) 第12章 數(shù)據(jù)庫(kù)編程,75,第9章 并發(fā)控制,并發(fā)操作帶來(lái)的數(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無(wú)法再現(xiàn)前一次讀取結(jié)果。 讀“臟”數(shù)據(jù)(dirty read) 事務(wù)T1修改某一數(shù)據(jù)并將其寫(xiě)回磁盤(pán),事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷,這時(shí)T1已修改過(guò)的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。 避免不一致性的方法和技術(shù)就是并發(fā)控制。最常用的技術(shù)是封鎖技術(shù),76,1.并發(fā)調(diào)度的可串行性,定義9.1 多個(gè)事務(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 如果一個(gè)調(diào)度S能通過(guò)一系列非沖突操作執(zhí)行順序的交換變成調(diào)度S1,則稱調(diào)度S和S1 沖突等價(jià) 沖突操作是指不同的事務(wù)對(duì)同一個(gè)數(shù)據(jù)的讀寫(xiě)操作和寫(xiě)寫(xiě)操作,其他操作是不沖突操作 不同事務(wù)的沖突操作和同一事務(wù)的兩個(gè)操作不能交換,77,調(diào)度的沖突等價(jià)性,可串行化調(diào)度的充分條件: 一個(gè)調(diào)度S在保證沖突操作的次序不變的情況下, 通過(guò)交換兩個(gè)事務(wù)不沖突操作的次序得到另一個(gè)串行調(diào)度S , 則調(diào)度S為可串行化的調(diào)度,78,9.2.2 調(diào)度的沖突等價(jià)性,例 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)度的沖突等價(jià)性,例 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) 因?yàn)長(zhǎng)等價(jià)于一個(gè)串行調(diào)度T

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

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

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

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

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

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

48、定義10.1 設(shè)關(guān)系模式R(U),X,YU,r是R(U)上的任一關(guān)系。對(duì)任意元組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ù)依賴的蘊(yùn)涵性,若關(guān)系模式R上的任一關(guān)系都能滿足一個(gè)確定的函數(shù)依賴集F,則稱F為R滿足的函數(shù)依賴集 定義10.5 設(shè)函數(shù)依賴集F和關(guān)系模式R(U),屬性集X,YU。如果關(guān)系模式R滿足F,R必定滿足FD XY,則稱F邏輯蘊(yùn)涵FD XY,

49、或稱XY邏輯蘊(yùn)涵于F。記為 F |= XY。 定義10.6 設(shè)函數(shù)依賴集F,所有被F邏輯蘊(yùn)涵的函數(shù)依賴稱為F的閉包,記為F+。 F+ = XY| 所有F 蘊(yùn)涵的FD XY 定義10.8 設(shè)關(guān)系模式R(U, F),U=A1,A2,An, XU。所有用公理推出的函數(shù)依賴XAi中Ai的屬性集合稱屬性集X對(duì)于F的屬性閉包,記為XF+,93,2.函數(shù)依賴公理,Armstrong公理系統(tǒng)就是一個(gè)有效而完備的公理系統(tǒng),是模式分解算法的理論基礎(chǔ) 從一組函數(shù)依賴求得蘊(yùn)含的函數(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)中,就可以將沒(méi)有出現(xiàn)在X(i)中的右部屬性A并入X(i)中。XA顯然成立,算法10.1 計(jì)算屬性集X關(guān)于F的閉包X+ 輸入:模式R的屬性全集U,U上的函數(shù)依賴集F及屬性集X 輸出:屬性

51、集X的閉包X+ 方法:計(jì)算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)中,就可以將沒(mé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中還有未考察過(guò)的函數(shù)依賴,但X(3) 已包含了R中的所有屬性,結(jié)束。 輸出結(jié)果:(BD)+ = ABCD

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論