數(shù)據(jù)庫系統(tǒng)教程(第3版):第7章 系統(tǒng)實現(xiàn)技術(shù)_3_第1頁
數(shù)據(jù)庫系統(tǒng)教程(第3版):第7章 系統(tǒng)實現(xiàn)技術(shù)_3_第2頁
數(shù)據(jù)庫系統(tǒng)教程(第3版):第7章 系統(tǒng)實現(xiàn)技術(shù)_3_第3頁
數(shù)據(jù)庫系統(tǒng)教程(第3版):第7章 系統(tǒng)實現(xiàn)技術(shù)_3_第4頁
數(shù)據(jù)庫系統(tǒng)教程(第3版):第7章 系統(tǒng)實現(xiàn)技術(shù)_3_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章 系統(tǒng)實現(xiàn)技術(shù) 主要內(nèi)容7.1 事務(wù)7.2 數(shù)據(jù)庫的恢復(fù)7.3 數(shù)據(jù)庫的并發(fā)控制7.4 數(shù)據(jù)庫的完整性7.5 數(shù)據(jù)庫的安全性7.6 小結(jié)7.1 事務(wù)7.1.1 事務(wù)的定義 7.1.2 事務(wù)的ACID性質(zhì) 7.1.3 事務(wù)的狀態(tài)變遷圖7.1.1 事務(wù)的定義(1)定義7.1 事務(wù)(transaction)是構(gòu)成單一邏輯工作單元的操作集合,要么完整地執(zhí)行,要么完全不執(zhí)行。不論發(fā)生何種情況,DBS必須保證事務(wù)能正確、完整地執(zhí)行。在程序中,事務(wù)以BEGIN TRANSACTION語句開始,以COMMIT語句或ROLLBACK語句結(jié)束。 COMMIT語句表示事務(wù)執(zhí)行成功地結(jié)束(提交),此時告訴系統(tǒng),

2、數(shù)據(jù)庫要進入一個新的正確狀態(tài),該事務(wù)對數(shù)據(jù)庫的所有更新都已交付實施(寫入磁盤)。 ROLLBACK語句表示事務(wù)執(zhí)行不成功地結(jié)束(應(yīng)該“回退”),此時告訴系統(tǒng),已發(fā)生錯誤,數(shù)據(jù)庫可能處在不正確的狀態(tài),該事務(wù)對數(shù)據(jù)庫的所有更新必須被撤消,數(shù)據(jù)庫應(yīng)恢復(fù)該事務(wù)到初始狀態(tài)。7.1.1 事務(wù)的定義(2)例7.1 設(shè)銀行數(shù)據(jù)庫中有一轉(zhuǎn)賬事務(wù)T,從賬號A轉(zhuǎn)一筆款子($50)到賬號B。相應(yīng)的事務(wù): T:read(A); A:=A50; write(A); read(B); B:=B + 50; write(B). 組織成如下事務(wù):T:BEGIN RANSACTION; read(A); A:=A-50;writ

3、e(A);if(A0)ROLLBACK;else read(B); B:=B+50; write(B); COMMIT;7.1.1 事務(wù)的定義(3)對數(shù)據(jù)庫的訪問是建立在讀和寫兩個操作的基礎(chǔ)上的:read(X):把數(shù)據(jù)X,從磁盤的數(shù)據(jù)庫中讀到內(nèi)存的緩沖區(qū)中。write(X):把數(shù)據(jù)X,從內(nèi)存緩沖區(qū)中寫回磁盤的數(shù)據(jù)庫。在系統(tǒng)運行時,write操作未必導(dǎo)致數(shù)據(jù)立即寫回磁盤,很可能先暫存在內(nèi)存緩沖區(qū)中,稍后再寫回磁盤。這件事情是DBMS實現(xiàn)時必須注意的問題。7.1.2 事務(wù)的ACID性質(zhì)性質(zhì)原子性(Atomicity):事務(wù)是一個不可分割的工作單元。 一致性(Consistency):即數(shù)據(jù)不會應(yīng)事

4、務(wù)的執(zhí)行而遭受破壞。 隔離性(Isolation):在多個事務(wù)并發(fā)執(zhí)行時,系統(tǒng)應(yīng)保證與這些事務(wù)先后單獨執(zhí)行時的結(jié)果一樣。 持久性(Durability):一個事務(wù)一旦完成全部操作后,它對數(shù)據(jù)庫的所有更新應(yīng)永久地反映在數(shù)據(jù)庫中。 SQL SERVER中的事務(wù)MS SQL Server 以三種事務(wù)模式運行:自動提交事務(wù)(默認(rèn)模式)每條單獨的語句都是一個事務(wù)。顯式事務(wù)每個事務(wù)均以 BEGIN TRANSACTION 語句顯式開始,以 COMMIT 或 ROLLBACK 語句顯式結(jié)束。隱性事務(wù)在前一個事務(wù)完成時新事務(wù)隱式啟動,但每個事務(wù)仍以 COMMIT 或 ROLLBACK 語句顯式完成。SQL S

5、ERVER對事務(wù)的支持舉例BEGIN TRANSACTIONUSE teachinsert S values (S0,shen,25,m)select * from SSAVE TRAN MYTRANdelete from S where s#=S0select * from SROLLBACK TRAN MYTRANselect * from SCOMMIT TRANSACTION7.2 數(shù)據(jù)庫的恢復(fù)7.2.1 存儲器結(jié)構(gòu) 7.2.2 恢復(fù)的基本原則和實現(xiàn)方法7.2.3 故障類型和恢復(fù)方法7.2.4 檢查點技術(shù)7.2.5 SQL對事務(wù)的支持?jǐn)?shù)據(jù)庫的可恢復(fù)性在DBS運行時,可能會出現(xiàn)各種故障,

6、在發(fā)生故障時,可能丟失數(shù)據(jù)庫中的數(shù)據(jù)。定義7.2 系統(tǒng)能把數(shù)據(jù)庫從被破壞、不正確的狀態(tài)恢復(fù)到最近一個正確的狀態(tài),DBMS的這種能力稱為數(shù)據(jù)庫的可恢復(fù)性(Recovery)7.2.1 存儲器結(jié)構(gòu)(1)易失性存儲器(volatile storage)內(nèi)存、cache存儲器 非易失性存儲器(nonvolatile storage)磁盤和磁帶 穩(wěn)定存儲器(stable storage)這是一個理論上的概念。存儲在穩(wěn)定存儲器中的信息是決不會丟失的。 穩(wěn)定存儲器的實現(xiàn)數(shù)據(jù)備份 數(shù)據(jù)銀行 7.2.2 恢復(fù)的基本原則和實現(xiàn)方法 基本原則 :“冗余”,即數(shù)據(jù)庫重復(fù)存儲具體實現(xiàn)方法 平時做好兩件事:轉(zhuǎn)儲和建立日志

7、 周期地(比如一天一次)對整個數(shù)據(jù)庫進行拷貝,轉(zhuǎn)儲到另一個磁盤或磁帶一類存儲介質(zhì)中。 建立日志數(shù)據(jù)庫。記錄事務(wù)的開始、結(jié)束及數(shù)據(jù)每一次插入、刪除和修改前后的值,并寫到“日志”庫中。 一旦發(fā)生數(shù)據(jù)庫故障,分兩種情況進行處理 如果數(shù)據(jù)庫已被破壞,則裝入last數(shù)據(jù)庫備份,再利用日志庫將這兩個數(shù)據(jù)庫狀態(tài)之間的所有更新重新做一遍。如果數(shù)據(jù)庫未被破壞,但某些數(shù)據(jù)不可靠,則撤消所有不可靠的修改,把數(shù)據(jù)庫恢復(fù)到正確的狀態(tài)。 7.2.3 故障類型和恢復(fù)方法(1)1.事務(wù)故障可以預(yù)期的事務(wù)故障,如存款余額透支等非預(yù)期事務(wù)故障,如運算溢出、數(shù)據(jù)錯誤、死鎖等2.系統(tǒng)故障:硬件故障、軟件錯誤或掉電等重新啟動時,具體處

8、理分兩種情況考慮。對未完成事務(wù)作UNDO處理;對已提交事務(wù)但更新還留在緩沖區(qū)的事務(wù)進行REDO處理。7.2.3 故障類型和恢復(fù)方法(2)3介質(zhì)故障在發(fā)生介質(zhì)故障和遭受病毒破壞時,磁盤上的物理數(shù)據(jù)庫遭到毀滅性破壞。此時恢復(fù)的過程如下:重裝最近轉(zhuǎn)儲的后備副本到新的磁盤,使數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲時的一致狀態(tài)。在日志中找出最近轉(zhuǎn)儲以后所有已提交的事務(wù)。對這些已提交的事務(wù)進行REDO處理,將數(shù)據(jù)庫恢復(fù)到故障前某一時刻的一致狀態(tài)。在實際中,系統(tǒng)故障通常稱為軟故障(Soft Crash),介質(zhì)故障通常稱為硬故障(Hard Crash)。7.4 數(shù)據(jù)庫的完整性7.4 數(shù)據(jù)庫的完整性7.4.1 完整性子系統(tǒng)和完整性規(guī)

9、則7.4.2 SQL中的完整性約束7.4.3 SQL3中的觸發(fā)器7.4.1 完整性子系統(tǒng)定義7.12 數(shù)據(jù)庫中完整性(Integrity)一詞是指數(shù)據(jù)的正確性(Correctness)、有效性(Validity)和相容性(Consistency),防止錯誤的數(shù)據(jù)進入數(shù)據(jù)庫。DBMS必須保證數(shù)據(jù)庫中數(shù)據(jù)是正確的。檢查數(shù)據(jù)庫中數(shù)據(jù)是否滿足規(guī)定的條件稱為“完整性檢查”。數(shù)據(jù)庫中數(shù)據(jù)應(yīng)該滿足的條件稱為“完整性約束條件”,有時也稱為完整性規(guī)則。完整性子系統(tǒng)完整性子系統(tǒng)的主要功能 監(jiān)督事務(wù)的執(zhí)行,并測試是否違反完整性規(guī)則 若有違反現(xiàn)象,則采取恰當(dāng)?shù)牟僮?,譬如拒絕操作、報告違反情況、改正錯誤等方法來處理 S

10、QL中的完整性約束1-域約束和斷言域約束 用“CREATE DOMAIN”語句定義新的域,并且還可出現(xiàn)CHECK子句 斷言如果完整性約束牽涉面較廣,與多個關(guān)系有關(guān),或者與聚合操作有關(guān),那么SQL2提供“斷言”(Assertions)機制讓用戶書寫完整性約束 CHECK ASSERTION CHECK() DROP ASSERTION 定義一個新的域COLOR,可用下列語句實現(xiàn):CREATE DOMAIN COLOR CHAR(6) DEFAULT ?CONSTRAINT V_COLORS CHECK(VALUE IN (Red,Yellow,Blue,Green,?);每位教師開設(shè)的課程不能超

11、過10門。CREATE ASSERTION ASSE1 CHECK(10 = ALL(SELECT COUNT(C#)FROM C GROUP BY TNAME); SQL中的完整性約束2-基本標(biāo)的約束候選鍵的定義UNIQUE(列名序列)或 PRIMARY KEY(列名序列)外鍵的定義FOREIGN KEY(列名序列)REFERENCES () ON DELETE ON UPDATE “檢查約束”的定義CHECK(條件表達式) 關(guān)于外鍵約束完整性的補充刪除參照表中元組時的考慮NO ACTIONCASCADE方式 RESTRICT方式 SET NULL方式 SET DEFAULT方式修改參照表中

12、主鍵值時的考慮、NO ACTIONCASCADE方式 RESTRICT方式 SET NULL方式 SET DEFAULT方式 關(guān)于數(shù)據(jù)庫完整性的例子學(xué)生關(guān)系S(S#,SNAME,AGE,SEX,SDEPT)選課關(guān)系SC(S#,C#,GRADE)課程關(guān)系C(C#,CNAME,CDEPT,TNAME) 在教學(xué)數(shù)據(jù)庫中,要求S中的元組滿足條件:男生年齡在1535歲之間,女生年齡在1530歲之間 。對應(yīng)的語句為:CHECK(AGE = 15 AND((SEX =男 AND AGE = 35) OR (SEX =女 AND AGE = 30)); CREATE TABLE SC(S# CHAR(4),C

13、# CHAR4),GRADE SMALLINT,PRIMARY KEY(SNO,NO),CHECK(S# IN(SELECT S# FROM S),CHECK(C# IN(SELECT C# FROM C) 在SC中插入一個元組,若C#值在C中不存在,則系統(tǒng)將拒絕這個插入操作。 在SC中插入一個元組,若S#值在S中不存在,則系統(tǒng)將拒絕這個插入操作。 在S中刪除一個元組,這個操作將與關(guān)系SC中的檢查子句無關(guān)。若此時SC中存在被刪學(xué)生的選課元組時,SC將違反檢查子句中條件。7.5 數(shù)據(jù)庫的安全性7.5.1 安全性問題7.5.2 SQL中的安全性機制7.5.3 常用的安全性措施7.5.1 安全性問題

14、(1)定義7.14 DB的安全性(Security)是指保護DB,防止不合法的使用,以免數(shù)據(jù)的泄密、更改或破壞。安全性級別環(huán)境級:計算機系統(tǒng)的機房和設(shè)備應(yīng)加以保護,防止有人進行物理破壞。職員級:工作人員應(yīng)清正廉潔,正確授予用戶訪問數(shù)據(jù)庫的權(quán)限。OS級:應(yīng)防止未經(jīng)授權(quán)的用戶從OS處著手訪問數(shù)據(jù)庫。網(wǎng)絡(luò)級:由于大多數(shù)DBS都允許用戶通過網(wǎng)絡(luò)進行遠程訪問,因此網(wǎng)絡(luò)軟件內(nèi)部的安全性是很重要的。DBS級:DBS的職責(zé)是檢查用戶的身份是否合法及使用數(shù)據(jù)庫的權(quán)限是否正確。(1)讀權(quán)限:允許用戶讀數(shù)據(jù),但不能改數(shù)據(jù)。 插入權(quán)限:允許用戶插入新數(shù)據(jù),但不能改數(shù)據(jù)。 修改權(quán)限:允許用戶改數(shù)據(jù),但不能刪除數(shù)據(jù)。 刪

15、除權(quán)限 權(quán)限訪問數(shù)據(jù)的權(quán)限 索引(Index)權(quán)限:允許用戶創(chuàng)建和刪除索引。資源(Resourse)權(quán)限:允許用戶創(chuàng)建新的關(guān)系。修改(Alteration)權(quán)限:允許用戶在關(guān)系結(jié)構(gòu)中加入或刪除屬性。撤消(Drop)權(quán)限:允許用戶撤消關(guān)系。 DBAU1U2U3權(quán)限的授予和回收DBAU1U4U2U5U3權(quán)限轉(zhuǎn)授圖 一個用戶擁有權(quán)限的充分必要條件是在權(quán)限圖中從根結(jié)點到該用戶結(jié)點存在一條路經(jīng) DBAU1U2U3DBAU1U2U3DBAU1U2U37.5.2 SQL中的安全性機制(1)1視圖視圖(View)是從一個或多個基本表導(dǎo)出的表。但視圖僅是一個定義,視圖本身沒有數(shù)據(jù),不占磁盤空間。視圖一經(jīng)定義就可

16、以和基本表一樣被查詢,也可以用來定義新的視圖,但更新(插、刪、改)操作將有一定限制。視圖機制使系統(tǒng)具有三個優(yōu)點:數(shù)據(jù)安全性、邏輯數(shù)據(jù)獨立性和操作簡便性。視圖被用來對無權(quán)用戶屏蔽數(shù)據(jù)。用戶只能使用視圖定義中的數(shù)據(jù),而不能使用視圖定義外的其他數(shù)據(jù),從而保證了數(shù)據(jù)安全性。7.5.2 SQL中的安全性機制(2)DBMS的授權(quán)的授權(quán)子系統(tǒng)允許有特定存取權(quán)限的用戶有選擇地和動態(tài)地把這些權(quán)限授予其他用戶。(1)用戶權(quán)限:六類權(quán)限供用戶選擇使用:SELECT INSERT DELETEUPDATE REFERENCES USAGE(2)授權(quán)語句:GRANT ON TO WITH GRANT 2權(quán)限D(zhuǎn)BMS O

17、PTION(3)回收語句REVOKE ON FROMRESTRICT | CASCADE7.5.2 SQL中的安全性機制(3)GRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION GRANT INSERT(S#,C#)ON SC TO LOU WITH GRANT OPTION GRANT UPDATE(SCORE)ON SC TO WEN GRANT REFERENCES(C#)ON C TO BAO WITH GRANT OPTION GRANT USAGE ON DOMAIN AGE TO CHEN REVOKE SELECT,UPDATE

18、 ON S FROM WANG CASCADE REVOKE INSERT(S#,C#)ON SC FROM ZHANG RESTRICT REVOKE GRANT OPTION FOR REFERENCES(C#)ON C FROM BAO 7.5.2 SQL中的安全性機制(4)3.角色定義7.16 在SQL中,用戶(User)是實際的人或是訪問數(shù)據(jù)庫的應(yīng)用程序。而角色(Role)是一組具有相同權(quán)限的用戶,實際上角色是屬于目錄一級的概念。有關(guān)用戶與角色有以下幾點內(nèi)容: SQL標(biāo)準(zhǔn)并不包含CREATE USER和DROP USER語句。 用戶和角色之間存在著多對多聯(lián)系。 可以把使用權(quán)限用GRA

19、NT語句授予角色,再把角色授予用戶。也可以用REVOKE語句把權(quán)限或角色收回。 角色之間可能存在一個角色鏈。即可以把一個角色授予另一角色,則后一個角色也就擁有了前一個角色的權(quán)限。7.5.2 SQL中的安全性機制(5)4審計定義7.17 用于安全性目的的數(shù)據(jù)庫日志,稱為審計追蹤(Audit Trail)。審計追蹤是一個對數(shù)據(jù)庫作更改(插、刪、修)的日志,還包括一些其他信息,如哪個用戶執(zhí)行了更新和什么時候執(zhí)行的更新等。如果懷疑數(shù)據(jù)庫被篡改了,那么就開始執(zhí)行DBMS的審計軟件。該軟件將掃描審計追蹤中某一時間段內(nèi)的日志,以檢查所有作用于數(shù)據(jù)庫的存取動作和操作。當(dāng)發(fā)現(xiàn)一個非法的或未授權(quán)的操作時,DBA就

20、可以確定執(zhí)行這個操作的賬號。當(dāng)然也可以用觸發(fā)器來建立審計追蹤,但相比之下,用DBS的內(nèi)置機制來建立審計追蹤更為方便。7.5.3 常用的安全性措施(1)1. 強制存取控制每個數(shù)據(jù)對象賦予一定的密級,從高到低有: 絕密級、機密級、秘密級和公用級。每個用戶也具有相應(yīng)的級別,稱為許可證級別(clearance level)。密級和許可證級別都是嚴(yán)格有序的,如:絕密 機密 秘密 公用。在系統(tǒng)運行時,采用如下兩條簡單規(guī)則: 用戶i只能查看比它級別低或同級的數(shù)據(jù); 用戶i只能修改和它同級的數(shù)據(jù)。7.5.3 常用的安全性措施(2)2. 統(tǒng)計數(shù)據(jù)庫的安全性例7.19 有一個用戶LIU欲竊取ZHANG的工資數(shù)目。LIU可通過下面兩步實現(xiàn):(1)用SELECT命令查找LIU自己和其它n-1個人(譬如30歲的女職工)的工資總額 x;(2)用SELECT命令查找ZHANG和上述的n-1個人的工資總額 y。隨后,

溫馨提示

  • 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

提交評論