




版權(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ù)原理及應(yīng)用復(fù)習(xí)知識(shí)第一章 緒論一、基本概念:1.數(shù)據(jù)(data):數(shù)據(jù)庫(kù)中存儲(chǔ)的基本對(duì)象,是描述事物的符號(hào)記錄,如:數(shù)字、文字、圖形、圖像、聲音等,數(shù)據(jù)與其語(yǔ)義是不可分的。2.數(shù)據(jù)庫(kù)(database,db) :是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的大量數(shù)據(jù)集合。其特征是: 數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存。 可為各種用戶共享。 冗余度較小。 數(shù)據(jù)獨(dú)立性較高、易擴(kuò)展。3.數(shù)據(jù)庫(kù)管理系統(tǒng)(database management system,dbms):是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。dbms的主要功能有: 4.數(shù)據(jù)管理功能:數(shù)據(jù)定義功能,數(shù)據(jù)組織、存儲(chǔ)和管理,數(shù)據(jù)操縱功
2、能,數(shù)據(jù)庫(kù)的事物管理和運(yùn)行管理,數(shù)據(jù)庫(kù)的建立和維護(hù)功能,其他功能:提供數(shù)據(jù)庫(kù)的用戶接口5.數(shù)據(jù)庫(kù)系統(tǒng)(database system,dbs):是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng) “db+dbms+應(yīng)用系統(tǒng)+數(shù)據(jù)庫(kù)管理員(database administration, dba )”二、數(shù)據(jù)庫(kù)管理階段:1.人工管理階段(40年代中-50年代中)應(yīng)用需求:科學(xué)計(jì)算 硬 件:無(wú)直接存取存儲(chǔ)設(shè)備 軟 件:無(wú)通用的操作系統(tǒng) 處理方式:批處理數(shù)據(jù)管理者:應(yīng)用程序,數(shù)據(jù)不保存。 數(shù)據(jù)面向的對(duì)象:某一應(yīng)用程序。 數(shù)據(jù)共享程度:無(wú)共享、冗余度極大。 數(shù)據(jù)獨(dú)立性:不獨(dú)立,完全依賴于程序。 數(shù)據(jù)結(jié)構(gòu)化:無(wú)結(jié)構(gòu)。
3、 數(shù)據(jù)控制能力:應(yīng)用程序自己控制。2.文件系統(tǒng)階段(50年代末-60年代中)應(yīng)用需求:科學(xué)計(jì)算、數(shù)據(jù)處理 硬 件:出現(xiàn)磁盤、磁鼓等 軟 件:操作系統(tǒng)、高級(jí)語(yǔ)言 處理方式:批處理、共享的實(shí)時(shí)處理方式數(shù)據(jù)管理者:文件系統(tǒng),數(shù)據(jù)長(zhǎng)期保存。 數(shù)據(jù)面向的對(duì)象:某一應(yīng)用程序。 數(shù)據(jù)共享程度:共享性差、冗余度大。 數(shù)據(jù)結(jié)構(gòu)化:記錄內(nèi)有結(jié)構(gòu),整體無(wú)結(jié)構(gòu)。 數(shù)據(jù)獨(dú)立性:邏輯結(jié)構(gòu)改變須修改應(yīng)用程序。 數(shù)據(jù)控制能力:應(yīng)用程序自己控制。3.數(shù)據(jù)庫(kù)系統(tǒng)階段(60年代末以來(lái))應(yīng)用需求:大規(guī)模管理 硬 件:出現(xiàn)大容量磁盤、磁盤陣列 軟 件:數(shù)據(jù)庫(kù)管理系統(tǒng) 處理方式:聯(lián)機(jī)實(shí)時(shí)處理、分布處理和批處理數(shù)據(jù)管理者:dbms 數(shù)據(jù)面
4、向的對(duì)象:整個(gè)系統(tǒng) 數(shù)據(jù)高度結(jié)構(gòu)化:數(shù)據(jù)庫(kù)與文件系統(tǒng)的根本區(qū)別 數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充 數(shù)據(jù)的獨(dú)立性高:物理獨(dú)立性和邏輯獨(dú)立性 數(shù)據(jù)控制能力:由dbms統(tǒng)一管理和控制4.數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充數(shù)據(jù)獨(dú)立性高數(shù)據(jù)由dbms統(tǒng)一管理和控制三、三級(jí)模式、兩級(jí)映像從數(shù)據(jù)庫(kù)管理系統(tǒng)角度看數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的模式結(jié)構(gòu)。 三級(jí)模式結(jié)構(gòu):外模式、模式 、內(nèi)模式應(yīng)用a應(yīng)用b應(yīng)用c應(yīng)用d應(yīng)用e內(nèi)模式外模式1外模式3模式外模式2數(shù)據(jù)庫(kù)1.模式(邏輯模式) 是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖,綜合了所有用戶的需求。 一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)模式。 模式
5、是數(shù)據(jù)庫(kù)系統(tǒng)模式結(jié)構(gòu)的中間層,與數(shù)據(jù)的物理存儲(chǔ)細(xì)節(jié)和硬件環(huán)境無(wú)關(guān),與具體的應(yīng)用程序、開(kāi)發(fā)工具及高級(jí)程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)。2.外模式(子模式或用戶模式) 數(shù)據(jù)庫(kù)用戶使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。 外模式通常是模式的子集,一個(gè)數(shù)據(jù)庫(kù)可以有多個(gè)外模式 同一外模式可以為某一用戶的多個(gè)應(yīng)用系統(tǒng)所使用。 外模式是保證數(shù)據(jù)庫(kù)安全性的一個(gè)有力措施3.內(nèi)模式(存儲(chǔ)模式) 數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的存儲(chǔ)方式 一個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)內(nèi)模式三級(jí)模式是對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的三個(gè)抽象級(jí)別,兩級(jí)映象是在dbms內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換。
6、4.外模式模式映象定義了外模式與模式之間的對(duì)應(yīng)關(guān)系,每一個(gè)外模式都對(duì)應(yīng)一個(gè)外模式模式映象。 保證了數(shù)據(jù)的邏輯獨(dú)立性5.模式內(nèi)模式映象定義了數(shù)據(jù)全局邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)關(guān)系,數(shù)據(jù)庫(kù)中模式內(nèi)模式映象是唯一的。 保證了數(shù)據(jù)的物理獨(dú)立性應(yīng)用1應(yīng)用2應(yīng)用3應(yīng)用4外模式1外模式2外模式3模 式映 像內(nèi)模式映像1映像2映像3外模式/模式映像數(shù)據(jù)庫(kù)模式/內(nèi)模式映像數(shù)據(jù)庫(kù)系統(tǒng):數(shù)據(jù)庫(kù)+數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)+應(yīng)用系統(tǒng)+數(shù)據(jù)庫(kù)管理員6.數(shù)據(jù)庫(kù)管理員(dba)的主要職責(zé)是負(fù)責(zé)全面管理和控制數(shù)據(jù)庫(kù)系統(tǒng),包括:決定數(shù)據(jù)庫(kù)中的信息內(nèi)容與結(jié)構(gòu)決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略定義數(shù)據(jù)的安全性和完整性約束條件監(jiān)控
7、數(shù)據(jù)庫(kù)的使用和運(yùn)行(例如定義和實(shí)施備份和恢復(fù)策略)數(shù)據(jù)庫(kù)的改進(jìn)與重組重構(gòu)第二章 數(shù)據(jù)模型一、數(shù)據(jù)模型的組成要素1.數(shù)據(jù)結(jié)構(gòu)系統(tǒng)的靜態(tài)特性數(shù)據(jù)結(jié)構(gòu)不僅要描述數(shù)據(jù)庫(kù)組成對(duì)象,還要描述對(duì)象之間的聯(lián)系。通常所說(shuō)的層狀、網(wǎng)狀和關(guān)系模型,就是按照此處的數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行劃分的。2.數(shù)據(jù)操作系統(tǒng)的動(dòng)態(tài)特性是指對(duì)數(shù)據(jù)庫(kù)中的各種對(duì)象運(yùn)行執(zhí)行的操作的集合,包括操作及有關(guān)的操作規(guī)則。數(shù)據(jù)庫(kù)的操作包括查詢和更新。3.數(shù)據(jù)的完整性約束條件一組完整性規(guī)則的集合完整性規(guī)則是數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的約束規(guī)則,用來(lái)限定數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確。4.關(guān)系模型是以集合論中的關(guān)系(relation)概念為基礎(chǔ)發(fā)展
8、起來(lái)的數(shù)據(jù)模型。5.基本關(guān)系的性質(zhì)列是同質(zhì)的(homogeneous),即每一列中的分量是同一類型的數(shù)據(jù),來(lái)自同一個(gè)域。不同的列可出自同一個(gè)域,稱其中的每一列為一個(gè)屬性,不同的屬性要給予不同的屬性名。列的順序無(wú)關(guān)緊要,即列的次序可以任意交換。任意兩個(gè)元組不能完全相同。但在大多數(shù)實(shí)際關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品中,例如oracle、foxpro等,如果用戶沒(méi)有定義有關(guān)的約束條件,它們都允許關(guān)系表中存在兩個(gè)完全相同的元組。行的順序無(wú)關(guān)緊要,即行的次序可以任意交換。分量必須取原子值,即每一個(gè)分量都必須是不可分的數(shù)據(jù)項(xiàng)。 二、關(guān)系模型:用二維表的形式表示實(shí)體和實(shí)體間聯(lián)系的數(shù)據(jù)模型1.關(guān)系模型特點(diǎn):數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)操作
9、關(guān)系數(shù)據(jù)操作是集合操作 關(guān)系模型將操作中的存取路徑對(duì)用戶屏蔽 完整性約束 實(shí)體完整性、參照完整性、用戶自定義完整性優(yōu)點(diǎn): 建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上 概念單一,實(shí)體和聯(lián)系都用關(guān)系表示,數(shù)據(jù)操作結(jié)果為關(guān)系 數(shù)據(jù)的存取路徑對(duì)用戶是透明的。缺點(diǎn): 由于存取路徑透明,使得數(shù)據(jù)存取的效率不如非關(guān)系模型第三章 關(guān)系數(shù)據(jù)庫(kù)一、概念、性質(zhì):關(guān)系數(shù)據(jù)庫(kù),是建立在關(guān)系數(shù)據(jù)庫(kù)模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。選擇運(yùn)算是從關(guān)系的水平方向進(jìn)行運(yùn)算,是從關(guān)系r中選擇滿足給定條件的諸元組,記作,其形式定義如下:其中,f中的運(yùn)算對(duì)象是屬性名(或列的序號(hào))或常數(shù),運(yùn)算符算術(shù)比較府(,=,)和
10、邏輯運(yùn)算符( ,) 。等值連接:當(dāng)為“=”時(shí),稱之為等值連接,記為,其形式定義如下: 自然連接: 是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中將重復(fù)屬性列去掉 。記為,其形式定義如下: 自然連接可以由基本的關(guān)系運(yùn)算投影、選取和笛卡兒積導(dǎo)出。連接運(yùn)算符是“=”的連接運(yùn)算稱為等值連接。它是從關(guān)系r與s的廣義笛卡爾積中選取a,b屬性值相等的那些元組二、等值連接與自然連接的區(qū)別:自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉第四章 sql語(yǔ)句一、sql概念:實(shí)際上它的功能包括查詢(query),操縱
11、(manipulation),定義(definition)和控制(control)四個(gè)方面,是一個(gè)綜合的、通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言。二、sql的主要特點(diǎn)1. 綜合統(tǒng)一2. 高度非過(guò)程化3. 面向集合的操作方式4. 兩種使用方式,統(tǒng)一的語(yǔ)法結(jié)構(gòu)5. 語(yǔ)言簡(jiǎn)潔,易學(xué)易用(1).數(shù)據(jù)庫(kù)查詢 select (2). 數(shù)據(jù)定義 create, drop (3). 數(shù)據(jù)操縱 insert, update, delete (5). 數(shù)據(jù)控制 grant, revoke6.常用語(yǔ)句:創(chuàng)建數(shù)據(jù)庫(kù)create database database-name刪除數(shù)據(jù)庫(kù)drop database dbname備
12、份sql server創(chuàng)建 備份數(shù)據(jù)的 deviceuse masterexec sp_addumpdevice disk, testback, c:mssql7backupmynwind_1.dat開(kāi)始 備份backup database pubs to testback創(chuàng)建新表create table tabname(col1 type1 not null primary key,col2 type2 not null,.)根據(jù)已有的表創(chuàng)建新表:a:create table tab_new like tab_old (使用舊表創(chuàng)建新表)b:create table tab_new as s
13、elect col1,col2 from tab_old definition only刪除新表drop table tabname增加一個(gè)列alter table tabname add column col type注:列增加后將不能刪除。db2中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長(zhǎng)度。添加主鍵: alter table tabname add primary key(col)說(shuō)明:刪除主鍵: alter table tabname drop primary key(col)創(chuàng)建索引:create unique index idxname on tabnam
14、e(col.)刪除索引:drop index idxname注:索引是不可更改的,想更改必須刪除重新建。創(chuàng)建視圖:create view viewname as select statement刪除視圖:drop view viewname幾個(gè)簡(jiǎn)單的基本的sql語(yǔ)句選擇:select * from table1 where 范圍插入:insert into table1(field1,field2) values(value1,value2)刪除:delete from table1 where 范圍更新:update table1 set field1=value1 where 范圍查找:s
15、elect * from table1 where field1 like %value1% -like的語(yǔ)法很精妙,查資料!排序:select * from table1 order by field1,field2 desc總數(shù):select count as totalcount from table1求和:select sum(field1) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue from table1最?。簊elect
16、min(field1) as minvalue from table1子查詢(表名1:a 表名2:b)select a,b,c from a where a in (select d from b 或者: select a,b,c from a where a in (1,2,3)外連接查詢(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a left out join b on a.a = b.c在線視圖查詢(表名1:aselect * from (select a,b,c from a) t where t.a 1;between的
17、用法,between限制查詢數(shù)據(jù)范圍時(shí)包括了邊界值,not between不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 數(shù)值1 and 數(shù)值2三、視圖與基表:視圖:在sql中,視圖是外模式一級(jí)數(shù)據(jù)結(jié)構(gòu)的基本單位。它是從一個(gè)或幾個(gè)基本表中導(dǎo)出的 表,是從現(xiàn)有基本表中抽取若干子集組成用戶的“專用表”。 基本表:基本表的定義指建立基本關(guān)系模式,而變更則是指對(duì)數(shù)據(jù)庫(kù)中已存在的基本表進(jìn)行刪除與修改。四、視圖與基表區(qū)別:1、視圖是已經(jīng)編譯好的sq
18、l語(yǔ)句。而表不是 2、視圖沒(méi)有實(shí)際的物理記錄。而表有。 3、表是內(nèi)容,視圖是窗口 4、表只用物理空間而視圖不占用物理空間,視圖只是邏輯概念的存在,表可以及時(shí)四對(duì)它進(jìn)行修改,但視圖只能有創(chuàng)建的語(yǔ)句來(lái)修改 5、表是內(nèi)模式,試圖是外模式 6、視圖是查看數(shù)據(jù)表的一種方法,可以查詢數(shù)據(jù)表中某些字段構(gòu)成的數(shù)據(jù),只是一些sql語(yǔ)句的集合。從安全的角度說(shuō),視圖可以不給用戶接觸數(shù)據(jù)表,從而不知道表結(jié)構(gòu)。 7、表屬于全局模式中的表,是實(shí)表;視圖屬于局部模式的表,是虛表。 8、視圖的建立和刪除只影響視圖本身,不影響對(duì)應(yīng)的基本表。視圖的作用1. 視圖能夠簡(jiǎn)化用戶的操作.2. 視圖使用戶能以多種角度看待同一數(shù)據(jù).3.視
19、圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性.關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)的重構(gòu)造是不可避免的。最常見(jiàn)的情況是把一個(gè)表垂直地分為兩個(gè)以上的表。例如把學(xué)生關(guān)系 student(sno,sname,ssex,sage,sdept) 分為: sx(sno,sname,sage) sy(sno,ssex,sdept) 如果視圖涉及兩個(gè)表,意味著有兩個(gè)表的連接操作,而在視圖上執(zhí)行的更新都是最終在基本表上的更新,視圖本身只是一個(gè)用來(lái)簡(jiǎn)化用戶操作的邏輯概念,執(zhí)行時(shí)都是將對(duì)視圖的操作翻譯成基本表的操作。對(duì)視圖的更新無(wú)法翻譯成對(duì)基本表的操作時(shí),就不允許更新了。除了兩個(gè)基本表的視圖不允許更新外,聚合操作導(dǎo)出的視圖也不允許更新
20、五、模糊查詢:第五章 數(shù)據(jù)庫(kù)安全性一、計(jì)算機(jī)系統(tǒng)安全性:為計(jì)算機(jī)系統(tǒng)建立和采取的各種安全保護(hù)措施,以保護(hù)計(jì)算機(jī)系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止其因偶然或惡意的原因使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等。二、三類計(jì)算機(jī)系統(tǒng)安全性問(wèn)題技術(shù)安全類管理安全類政策法律類三、授權(quán)與收權(quán):1、grantgrant語(yǔ)句的一般格式: grant ,. on to ,. with grant option;語(yǔ)義:將對(duì)指定操作對(duì)象的指定操作權(quán)限授予指定的用戶發(fā)出grant:dba數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建者(即屬主owner)擁有該權(quán)限的用戶按受權(quán)限的用戶 一個(gè)或多個(gè)具體用戶public(全體用戶) with grant opti
21、on子句:指定:可以再授予沒(méi)有指定:不能傳播不允許循環(huán)授權(quán)2、revoke授予的權(quán)限可以由dba或其他授權(quán)者用revoke語(yǔ)句收回revoke語(yǔ)句的一般格式為: revoke ,. on from ,.;第六章 數(shù)據(jù)庫(kù)完整性一、數(shù)據(jù)的完整性:防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義的數(shù)據(jù),也就是防止數(shù)據(jù)庫(kù)中存在不正確的數(shù)據(jù)防范對(duì)象:不合語(yǔ)義的、不正確的數(shù)據(jù)數(shù)據(jù)的安全性保護(hù)數(shù)據(jù)庫(kù)防止惡意的破壞和非法的存取防范對(duì)象:非法用戶和非法操作二、實(shí)體完整性規(guī)則:若屬性(指一個(gè)或一組屬性)a是基本關(guān)系r的主屬性,則a不能取空值或重復(fù)值。關(guān)系模型的實(shí)體完整性create table中用primary key定義單屬性構(gòu)成的
22、碼有兩種說(shuō)明方法 定義為列級(jí)約束條件定義為表級(jí)約束條件對(duì)多個(gè)屬性構(gòu)成的碼只有一種說(shuō)明方法定義為表級(jí)約束條件三、參照完整性規(guī)則:若屬性(或?qū)傩越M)f是基本關(guān)系r的外碼,它與基本關(guān)系s的主碼ks相對(duì)應(yīng),則對(duì)于r中每個(gè)元組在f上的值必須為: f或者取空值(f的每個(gè)屬性值均為空值) f或者s中某個(gè)元組的主碼值關(guān)系模型的參照完整性定義在create table中用foreign key短語(yǔ)定義那些列為外碼用references短語(yǔ)指明這些外碼參照那些表的主碼四、用戶定義的完整性就是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的語(yǔ)義要求 rdbms提供,而不必由應(yīng)用程序承擔(dān)create table時(shí)定義列值非空(not
23、 null)列值唯一(unique)檢查列值是否滿足一個(gè)布爾表達(dá)式(check)索引分為聚簇索引和非聚簇索引兩種,聚簇索引 是按照數(shù)據(jù)存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對(duì)于單行的檢索很快。五、兩類索引1.聚簇索引也叫簇類索引,是一種對(duì)磁盤上實(shí)際數(shù)據(jù)重新組織以按指定的一個(gè)或多個(gè)列的值排序。由于聚簇索引的索引頁(yè)面指針指向數(shù)據(jù)頁(yè)面,所以使用聚簇索引查找數(shù)據(jù)幾乎總是比使用非聚簇索引快。每張表只能建一個(gè)聚簇索引,并且建聚簇索引需要至少相當(dāng)該表120%的附加空間,以存放該表的副本和索引中間頁(yè)。2.非聚簇索引,索引的一種。索引分為聚簇索引和非聚簇索引兩
24、種。建立索引的目的是加快對(duì)表中記錄的查找或排序。牽引順序與數(shù)據(jù)物理排列順序無(wú)關(guān)。第七章 事務(wù)一、概念、特性事務(wù)(transaction)是訪問(wèn)并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)。事務(wù)通常由高級(jí)數(shù)據(jù)庫(kù)操縱語(yǔ)言或編程語(yǔ)言(如sql,c+或java)書寫的用戶程序的執(zhí)行所引起,并用形如begin transaction和end transaction語(yǔ)句(或函數(shù)調(diào)用)來(lái)界定。事務(wù)由事務(wù)開(kāi)始(begin transaction)和事務(wù)結(jié)束(end transaction)之間執(zhí)行的全體操作組成。特性:事務(wù)是恢復(fù)和并發(fā)控制的基本單位。 事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性
25、、持久性。這四個(gè)屬性通常稱為acid特性。 原子性(atomicity)。一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。 一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。 隔離性(isolation)。一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。 持久性(durability)。持續(xù)性也稱永久性(permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其有任
26、何影響。二、故障:1、事務(wù)內(nèi)部的故障 事務(wù)內(nèi)部的故障有的是可以通過(guò)事務(wù)程序本身發(fā)現(xiàn)的,有的是非預(yù)期的,不能由事務(wù)程序處理的。事務(wù)內(nèi)部更多的故障是非預(yù)期的,是不能由應(yīng)用程序處理的。如運(yùn)算溢出、并發(fā)事務(wù)發(fā)生死鎖而被選中撤消該事務(wù)、違反了某些完整性限制等。以后,事務(wù)故障僅指這類非預(yù)期的故障。事務(wù)故障意味著事務(wù)沒(méi)有達(dá)到預(yù)期的終點(diǎn)(commit或者顯式的rollback),因此,數(shù)據(jù)庫(kù)可能處于不正確狀態(tài)。恢復(fù)程序要在不影響其它事務(wù)運(yùn)行的情況下,強(qiáng)行回滾(rollback)該事務(wù),即撤消該事務(wù)已經(jīng)作出的任何對(duì)數(shù)據(jù)庫(kù)的修改,使得該事務(wù)好象根本沒(méi)有啟動(dòng)一樣。這類恢復(fù)操作稱為事務(wù)撤消(undo)。2、系統(tǒng)故障
27、系統(tǒng)故障是指造成系統(tǒng)停止運(yùn)轉(zhuǎn)的任何事件,使得系統(tǒng)要重新啟動(dòng)。例如,特定類型的硬件錯(cuò)誤(cpu故障)、操作系統(tǒng)故障、dbms代碼錯(cuò)誤、突然停電等等。這類故障影響正在運(yùn)行的所有事務(wù),但不破壞數(shù)據(jù)庫(kù)。這時(shí)主存內(nèi)容,尤其是數(shù)據(jù)庫(kù)緩沖區(qū)(在內(nèi)存)中的內(nèi)容都被丟失,所有運(yùn)行事務(wù)都非正常終止。發(fā)生系統(tǒng)故障時(shí),一些尚未完成的事務(wù)的結(jié)果可能已送入物理數(shù)據(jù)庫(kù),有些已完成的事務(wù)可能有一部分甚至全部留在緩沖區(qū),尚未寫回到磁盤上的物理數(shù)據(jù)庫(kù)中,從而造成數(shù)據(jù)庫(kù)可能處于不正確的狀態(tài)。為保證數(shù)據(jù)一致性,恢復(fù)子系統(tǒng)必須在系統(tǒng)重新啟動(dòng)時(shí)讓所有非正常終止的事務(wù)回滾,強(qiáng)行撤消(undo)所有未完成事務(wù)。重做(redo)所有已提交的事
28、務(wù),以將數(shù)據(jù)庫(kù)真正恢復(fù)到一致?tīng)顟B(tài)。 3、介質(zhì)故障 系統(tǒng)故障常稱為軟故障(soft crash),介質(zhì)故障稱為硬故障(hard crash)。硬故障指外存故障,如磁盤損壞、磁頭碰撞,瞬時(shí)強(qiáng)磁場(chǎng)干擾等。這類故障將破壞數(shù)據(jù)庫(kù)或部分?jǐn)?shù)據(jù)庫(kù),并影響正在存取這部分?jǐn)?shù)據(jù)的所有事務(wù)。這類故障比前兩類故障發(fā)生的可能性小得多,但破壞性最大。四、數(shù)據(jù)庫(kù)恢復(fù)技術(shù)恢復(fù)操作的基本原理:冗余用存儲(chǔ)在系統(tǒng)其它地方的冗余數(shù)據(jù)來(lái)重建數(shù)據(jù)庫(kù)中已被破壞或不正確的那部分?jǐn)?shù)據(jù)。恢復(fù)機(jī)制涉及的關(guān)鍵問(wèn)題:如何建立冗余數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)儲(chǔ)(backup)登錄日志文件(logging)如何利用這些冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫(kù)恢復(fù)1.事務(wù)故障:事務(wù)在運(yùn)行至正常終止
29、點(diǎn)前被終止恢復(fù)方法由恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤消(undo)此事務(wù)已對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改事務(wù)故障的恢復(fù)由系統(tǒng)自動(dòng)完成,對(duì)用戶是透明的,不需要用戶干預(yù)事務(wù)故障的恢復(fù)步驟:(1)反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。(2)對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值” 寫入數(shù)據(jù)庫(kù)。插入操作, “更新前的值”為空,則相當(dāng)于做刪除操作刪除操作,“更新后的值”為空,則相當(dāng)于做插入操作若是修改操作,則相當(dāng)于用修改前值代替修改后值(3)繼續(xù)反向掃描日志文件,查找該事務(wù)的其他更新操作,并做同樣處理。(4)如此處理下去,直至讀到此事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障恢復(fù)就完成了。2、
30、系統(tǒng)故障的恢復(fù)系統(tǒng)故障造成數(shù)據(jù)庫(kù)不一致?tīng)顟B(tài)的原因未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新已寫入數(shù)據(jù)庫(kù)已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新還留在緩沖區(qū)沒(méi)來(lái)得及寫入數(shù)據(jù)庫(kù)恢復(fù)方法1. undo 故障發(fā)生時(shí)未完成的事務(wù)2. redo 已完成的事務(wù)系統(tǒng)故障的恢復(fù)由系統(tǒng)在重新啟動(dòng)時(shí)自動(dòng)完成,不需要用戶干預(yù)系統(tǒng)故障的恢復(fù)步驟(1)正向掃描日志文件(即從頭掃描日志文件)重做(redo) 隊(duì)列: 在故障發(fā)生前已經(jīng)提交的事務(wù)這些事務(wù)既有begin transaction記錄,也有commit記錄撤銷 (undo)隊(duì)列:故障發(fā)生時(shí)尚未完成的事務(wù) 這些事務(wù)只有begin transaction記錄,無(wú)相應(yīng)的commit記錄(2)對(duì)撤銷(und
31、o)隊(duì)列事務(wù)進(jìn)行撤銷(undo)處理反向掃描日志文件,對(duì)每個(gè)undo事務(wù)的更新操作執(zhí)行逆操作即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù) (3)對(duì)重做(redo)隊(duì)列事務(wù)進(jìn)行重做(redo)處理正向掃描日志文件,對(duì)每個(gè)redo事務(wù)重新執(zhí)行登記的操作即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫(kù)3、介質(zhì)故障的恢復(fù)(1)重裝數(shù)據(jù)庫(kù)(2)重做已完成的事務(wù)恢復(fù)步驟(1) 裝入最新的后備數(shù)據(jù)庫(kù)副本(離故障發(fā)生時(shí)刻最近的轉(zhuǎn)儲(chǔ)副本) ,使數(shù)據(jù)庫(kù)恢復(fù)到最近一次轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)。對(duì)于靜態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,裝入后數(shù)據(jù)庫(kù)即處于一致性狀態(tài)對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還須同時(shí)裝入轉(zhuǎn)儲(chǔ)時(shí)刻的日志文件副本,利用與恢復(fù)系統(tǒng)故障的方法(即r
32、edo+undo),才能將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)。(2) 裝入有關(guān)的日志文件副本(轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的日志文件副本),重做已完成的事務(wù)。首先掃描日志文件,找出故障發(fā)生時(shí)已提交的事務(wù)的標(biāo)識(shí),將其記入重做隊(duì)列。然后正向掃描日志文件,對(duì)重做隊(duì)列中的所有事務(wù)進(jìn)行重做處理。即將日志記錄中“更新后的值”寫入數(shù)據(jù)庫(kù)。介質(zhì)故障的恢復(fù)需要dba介入dba的工作重裝最近轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本和有關(guān)的各日志文件副本執(zhí)行系統(tǒng)提供的恢復(fù)命令具體的恢復(fù)操作仍由dbms完成第八章 并發(fā)控制一、并發(fā)控制 數(shù)據(jù)不一致發(fā)控制機(jī)制的任務(wù)對(duì)并發(fā)操作進(jìn)行正確調(diào)度保證事務(wù)的隔離性保證數(shù)據(jù)庫(kù)的一致性二、并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性1.丟失修改(lost
33、 update)指兩個(gè)事務(wù)t1與t2從數(shù)據(jù)庫(kù)中讀入同一數(shù)據(jù)并修改,t2的提交結(jié)果破壞了t1提交的結(jié)果,導(dǎo)致t1的修改被丟失。2.不可重復(fù)讀(non-repeatable read)指t1讀取數(shù)據(jù)后,t2執(zhí)行更新操作,使t1無(wú)法再現(xiàn)前一次讀取結(jié)果。3.讀“臟”數(shù)據(jù)(dirty read)指t1修改某一數(shù)據(jù),并將其寫回磁盤,t2讀取同一數(shù)據(jù)后,t1由于某種原因被撤消,這時(shí)t1已修改過(guò)的數(shù)據(jù)恢復(fù)原值,t2讀到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),又稱為“臟”數(shù)據(jù)。三、封鎖類型的相容矩陣t2t1xs-xnnysnyy-yyy四、 活鎖如何避免活鎖先來(lái)先服務(wù)當(dāng)多個(gè)事務(wù)請(qǐng)求封鎖同一數(shù)據(jù)對(duì)象時(shí):按
34、請(qǐng)求封鎖的先后次序?qū)@些事務(wù)排隊(duì);該數(shù)據(jù)對(duì)象上的鎖一旦釋放,首先批準(zhǔn)申請(qǐng)隊(duì)列中第一個(gè)事務(wù)獲得鎖。五. 死鎖解決方法預(yù)防死鎖死鎖的診斷與解除兩段封鎖協(xié)議(two-phase locking,簡(jiǎn)稱2pl)是最常用的一種封鎖協(xié)議,理論上證明使用兩段封鎖協(xié)議產(chǎn)生的是可串行化調(diào)度.指所有事務(wù)必須分兩個(gè)階段對(duì)數(shù)據(jù)項(xiàng)加鎖和解鎖:在對(duì)任何數(shù)據(jù)進(jìn)行讀、寫操作之前,事務(wù)首先要申請(qǐng)并獲得對(duì)該數(shù)據(jù)的封鎖;在釋放一個(gè)封鎖之后,事務(wù)不再申請(qǐng)和獲得任何其他封鎖。“兩段”鎖的含義:事務(wù)分為兩個(gè)階段 第一階段是獲得封鎖,也稱為擴(kuò)展階段; 第二階段是釋放封鎖,也稱為收縮階段。六、兩段鎖協(xié)議slock b讀b=2y=bxlock aa=y+1寫回a=3unlock bunlock aslock a 等待 等待 等待 等待slock a讀a=3y=a xlock bb=y+1寫回b=4unlock bunlock aslock b讀b=2y=bunlock bxlock aa=y+1寫回a=3unlock aslock a等待等待等待slock a讀a=3x=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 買家秀模特合同范本
- 中超教練合同范例
- 2025年多肉花盆項(xiàng)目合作計(jì)劃書
- 上海家庭裝修服務(wù)合同范例
- 5折購(gòu)車合同范例
- 啟東無(wú)塵室施工方案
- 共享展廳運(yùn)營(yíng)合同范例
- 公司與廚師合同范例
- 個(gè)人住宅木工合同范例
- 共享汽車托管合同范本
- 廣東省廣州市海珠區(qū)南武小學(xué)2023-2024學(xué)年三年級(jí)下學(xué)期3月期中語(yǔ)文試題
- 金融糾紛調(diào)解培訓(xùn)課件模板
- 高速公路日常保潔管理管理標(biāo)準(zhǔn)化方案
- 村(社區(qū))“兩委”班子五年任期規(guī)劃和2024年工作目標(biāo)10篇
- 《皮內(nèi)注射技術(shù)》課件
- 三年級(jí)下冊(cè)口算天天100題(A4打印版)
- 部編版初中語(yǔ)文文言文對(duì)比閱讀 九年級(jí)下冊(cè)(下)(解析版)
- 停電計(jì)劃現(xiàn)場(chǎng)勘查培訓(xùn)課件
- 變電運(yùn)維講安全
- 《合理使用零花錢》課件
- 網(wǎng)絡(luò)溝通教學(xué)課件
評(píng)論
0/150
提交評(píng)論