第6章 數(shù)據(jù)庫(kù)保護(hù)_第1頁(yè)
第6章 數(shù)據(jù)庫(kù)保護(hù)_第2頁(yè)
第6章 數(shù)據(jù)庫(kù)保護(hù)_第3頁(yè)
第6章 數(shù)據(jù)庫(kù)保護(hù)_第4頁(yè)
第6章 數(shù)據(jù)庫(kù)保護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)系統(tǒng)原理

與應(yīng)用技術(shù)

主講:陳漫紅chmh1@263.net北京聯(lián)合大學(xué)師范學(xué)院電氣信息系第6章

數(shù)據(jù)庫(kù)保護(hù)6.1事務(wù)的概念

6.2數(shù)據(jù)庫(kù)恢復(fù)概述

6.3并發(fā)控制與封鎖

6.4數(shù)據(jù)庫(kù)的安全性

6.5數(shù)據(jù)庫(kù)的完整性

6.6數(shù)據(jù)庫(kù)的備份與恢復(fù)

6.7本章小結(jié)6.1事務(wù)的概念

6.1.1事務(wù)

6.1.2事務(wù)的特征

6.1.1事務(wù)事務(wù)是用戶定義的數(shù)據(jù)操作系列,這些操作作為一個(gè)完整的工作單元,一個(gè)事務(wù)內(nèi)的所有語句被作為一個(gè)整體,要么全部執(zhí)行,要么全部不執(zhí)行。

例如:對(duì)于一個(gè)轉(zhuǎn)帳活動(dòng):A帳戶轉(zhuǎn)帳給B帳戶n元錢,這個(gè)活動(dòng)包含兩個(gè)動(dòng)作:第一個(gè)動(dòng)作:A帳戶-n第二個(gè)動(dòng)作:B帳戶+n6.1.2事務(wù)的特征原子性(Atomicity)

:指事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中的操作要么都做,要么都不做。

一致性(Consistency)

:指事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。隔離性(Isolation)

:指數(shù)據(jù)庫(kù)中一個(gè)事務(wù)的執(zhí)行不能被其它事務(wù)干擾。持久性(Durability)

:也稱為永久性,是指事務(wù)一旦提交,則其對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久的。

6.1.2事務(wù)的特征保證事務(wù)的ACID特性是事務(wù)處理的重要任務(wù)。事務(wù)的ACID特性可能遭到破壞的因素有:多個(gè)事務(wù)并行運(yùn)行時(shí),不同事務(wù)的操作有交叉情況;這種情況DBMS應(yīng)保證事務(wù)的原子性。事務(wù)在運(yùn)行過程中被強(qiáng)迫停止,這種情況DBMS應(yīng)保證被終止的事物對(duì)其他的事物沒有影響。6.2數(shù)據(jù)庫(kù)恢復(fù)概述

數(shù)據(jù)庫(kù)的恢復(fù):數(shù)據(jù)庫(kù)管理系統(tǒng)必須具有把數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為完整狀態(tài)或一致狀態(tài))的功能。數(shù)據(jù)庫(kù)系統(tǒng)中可能發(fā)生的故障:(1)事務(wù)內(nèi)部的故障

(2)系統(tǒng)故障

(3)介質(zhì)故障

(4)計(jì)算機(jī)病毒

6.2數(shù)據(jù)庫(kù)恢復(fù)概述數(shù)據(jù)轉(zhuǎn)儲(chǔ)是數(shù)據(jù)庫(kù)恢復(fù)中采用的基本技術(shù)。即DBA定期地將整個(gè)數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤上保存起來的過程。當(dāng)數(shù)據(jù)庫(kù)遭到破壞后就可以利用后備副本把數(shù)據(jù)庫(kù)恢復(fù)。轉(zhuǎn)儲(chǔ)是十分耗費(fèi)時(shí)間和資源的,不能頻繁進(jìn)行。DBA應(yīng)該根據(jù)數(shù)據(jù)庫(kù)使用情況確定一個(gè)適當(dāng)?shù)霓D(zhuǎn)儲(chǔ)周期,制定合適的轉(zhuǎn)儲(chǔ)策略。日志文件是用來記錄對(duì)數(shù)據(jù)庫(kù)每一次更新活動(dòng)的文件。在轉(zhuǎn)儲(chǔ)中必須建立日志文件,后援副本和日志文件綜合起來才能有效地恢復(fù)數(shù)據(jù)庫(kù)。

6.3并發(fā)控制與封鎖

6.3.1并發(fā)控制概述6.3.2封鎖6.3.3封鎖協(xié)議6.3.4死鎖6.3.5兩段鎖協(xié)議

6.3.1并發(fā)控制概述

數(shù)據(jù)庫(kù)中的數(shù)據(jù)是一個(gè)共享的資源,因此會(huì)有很多用戶同時(shí)使用數(shù)據(jù)庫(kù)中的數(shù)據(jù),在多用戶系統(tǒng)中,可能同時(shí)運(yùn)行著多個(gè)事務(wù),而事務(wù)的運(yùn)行需要時(shí)間,并且事務(wù)中的操作是在一定的數(shù)據(jù)上進(jìn)行的。當(dāng)系統(tǒng)中同時(shí)有多個(gè)事務(wù)在運(yùn)行時(shí),特別是當(dāng)這些事務(wù)是對(duì)同一段數(shù)據(jù)進(jìn)行操作時(shí),彼此之間就有可能產(chǎn)生相互干擾的情況。

并發(fā)事務(wù)的相互干擾示例A、B兩個(gè)訂票點(diǎn)恰巧同時(shí)辦理同一架航班的飛機(jī)訂票業(yè)務(wù)。設(shè)其操作過程及順序如下:

A訂票點(diǎn)(事務(wù)A)讀出航班目前的機(jī)票余額數(shù),假設(shè)為10張;B訂票點(diǎn)(事務(wù)B)讀出航班目前的機(jī)票余額數(shù),也為10張;A訂票點(diǎn)訂出6張機(jī)票,修改機(jī)票余額為10-6=4,并將4寫回到數(shù)據(jù)庫(kù)中;B訂票點(diǎn)訂出5張機(jī)票,修改機(jī)票余額為10-5=5,并將5寫回到數(shù)據(jù)庫(kù)中;可見這兩個(gè)事務(wù)不能反映出飛機(jī)票數(shù)不夠的情況,而且B事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改,使數(shù)據(jù)庫(kù)中的數(shù)據(jù)不可信,這種情況稱為數(shù)據(jù)的不一致。DBMS必須想辦法避免出現(xiàn)這種情況,這就是DBMS在并發(fā)控制中要解決的問題。并發(fā)操作所帶來的數(shù)據(jù)不一致情況大致分為:丟失修改,不可重復(fù)讀,讀“臟”數(shù)據(jù)和產(chǎn)生“幽靈”數(shù)據(jù)。以下分別介紹。丟失數(shù)據(jù)修改是指兩個(gè)事務(wù)T1和T2讀入同一數(shù)據(jù)并進(jìn)行修改,T2提交的結(jié)果破壞了T1提交的結(jié)果,導(dǎo)致T1的修改被T2覆蓋掉。例如:讀“臟”數(shù)據(jù)是指一個(gè)事務(wù)讀取了某個(gè)失敗事務(wù)運(yùn)行過程中的數(shù)據(jù)。不可重復(fù)讀是指事務(wù)T1讀取數(shù)據(jù)后,事務(wù)T2執(zhí)行了更新操作,修改了T1讀取的數(shù)據(jù),T1操作完數(shù)據(jù)后,又重新讀取了同樣的數(shù)據(jù),但此次讀完后,當(dāng)T1再對(duì)這些數(shù)據(jù)進(jìn)行相同操作時(shí),所得的結(jié)果與前一次不一樣。產(chǎn)生“幽靈”數(shù)據(jù)屬于不可重復(fù)讀的范疇。指當(dāng)事務(wù)T1按一定條件從數(shù)據(jù)庫(kù)中讀取了某些數(shù)據(jù)記錄后,事務(wù)T2刪除了其中的部分記錄,或者在其中添加了部分記錄,則當(dāng)T1再次按相同條件讀取數(shù)據(jù)時(shí),發(fā)現(xiàn)其中莫名其妙地少了(對(duì)刪除)或多了(對(duì)插入)一些記錄。這樣的數(shù)據(jù)對(duì)T1來說就是“幽靈”數(shù)據(jù)或稱“幻影”數(shù)據(jù)。產(chǎn)生這四種數(shù)據(jù)不一致現(xiàn)象的主要原因是并發(fā)操作破壞了事務(wù)的隔離性。并發(fā)控制是要用正確的方法來調(diào)度并發(fā)操作,使一個(gè)事務(wù)的執(zhí)行不受其他事務(wù)的干擾,避免造成數(shù)據(jù)的不一致情況。6.3.2封鎖

并發(fā)控制的主要技術(shù)是采用封鎖機(jī)制。封鎖就是事務(wù)T可以向系統(tǒng)發(fā)出請(qǐng)求,對(duì)某個(gè)數(shù)據(jù)對(duì)象(最常用的是記錄)加鎖(Locking)。于是事務(wù)T對(duì)這個(gè)數(shù)據(jù)對(duì)象就有一定的控制權(quán)?;镜姆怄i類型:(1)排它(X)鎖若事務(wù)T對(duì)數(shù)據(jù)R加上X鎖,則只允許T讀取和修改R。其他一切事務(wù)對(duì)R的任何封鎖請(qǐng)求都不能成功,直至T釋放R上的X鎖。(2)共享鎖(S鎖或讀鎖):指對(duì)于讀操作(檢索)來說,可以多個(gè)事務(wù)同時(shí)獲得共享鎖,但阻止其它事務(wù)對(duì)已獲得共享鎖的數(shù)據(jù)進(jìn)行排它封鎖。若事務(wù)T給數(shù)據(jù)對(duì)象A加了共享鎖,則事務(wù)T可以讀A,但不能修改A,其它事務(wù)只能再給A加S鎖,而不能加X鎖,直到T釋放了A上的S鎖為止.

封鎖類型(3)更新(U)鎖當(dāng)一個(gè)事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加更新鎖,首先對(duì)數(shù)據(jù)對(duì)象做更新鎖鎖定,這樣數(shù)據(jù)將不能被修改,但可以讀取,等到執(zhí)行數(shù)據(jù)更新操作時(shí),自動(dòng)將更新鎖轉(zhuǎn)換為獨(dú)占鎖,但當(dāng)對(duì)象上有其他鎖存在時(shí),無法對(duì)其作更新鎖鎖定。(4)意向鎖對(duì)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象,可用如圖所示的層次樹表示。意向鎖表示一個(gè)事務(wù)為了訪問數(shù)據(jù)庫(kù)對(duì)象層次結(jié)構(gòu)中的某些底層資源(如表中的元組)而加共享鎖或排他鎖的意向。包括:意向共享(IS)鎖

意向排他(IX)鎖

意向排他共享(SIX)鎖封鎖類型

(IS)鎖:如果對(duì)一個(gè)數(shù)據(jù)對(duì)象加IS鎖,表示擬對(duì)它的后裔節(jié)點(diǎn)加S鎖,讀取底層的數(shù)據(jù)。例如,若要對(duì)某個(gè)元組加S鎖,則首先應(yīng)對(duì)元組所在的關(guān)系或數(shù)據(jù)庫(kù)加IS鎖。

意向排他(IX)鎖:如果對(duì)一個(gè)數(shù)據(jù)對(duì)象加IX鎖,表示擬對(duì)它的后裔節(jié)點(diǎn)加X鎖,更新底層的數(shù)據(jù)。例如,若要對(duì)某個(gè)關(guān)系加X鎖,以便插入一個(gè)元組,則首先應(yīng)對(duì)數(shù)據(jù)庫(kù)加IX鎖。

意向排他共享(SIX)鎖:如果對(duì)一個(gè)數(shù)據(jù)對(duì)象加SIX鎖,表示對(duì)它加S鎖,再加IX鎖,即SIX=S+IX。例如,對(duì)某個(gè)表加SIX鎖,則表示該事務(wù)要讀整個(gè)表(所以要對(duì)該表加S鎖),同時(shí)會(huì)更新個(gè)別元組(所以要對(duì)該表加IX鎖)。鎖類型及其作用鎖類型及其作用鎖模式描述共享(S)用于只讀操作,如SELECT語句更新(U)用于可更新的資源中,防止當(dāng)多個(gè)會(huì)話在讀取、鎖定及隨后可能進(jìn)行的資源更新時(shí)發(fā)生常見形式的死鎖排他(X)用于數(shù)據(jù)修改操作,如INSERT,UPDATE或DELETE,確保不會(huì)同時(shí)對(duì)同一資源進(jìn)行多重更新意向用于建立鎖的層次結(jié)構(gòu),意向鎖的類型為意向共享(IS)、意向排他(IX)及意向排他共享(SIX)加鎖類型的相容矩陣鎖模式意向共享(IS)共享(S)更新(U)意向排他(IX)意向排他共享(SIX)排他(X)意向共享(IS)相容相容相容相容相容不相容共享(S)相容相容相容不相容不相容不相容更新(U)相容相容不相容不相容不相容不相容意向排他(IX)相容不相容不相容相容不相容不相容意向排他共享(SIX)相容不相容不相容不相容不相容不相容排他(X)不相容不相容不相容不相容不相容不相容封鎖粒度

被鎖定的對(duì)象的數(shù)據(jù)量稱為封鎖粒度。封鎖對(duì)象可以是邏輯單元,也可以是物理單元。以關(guān)系數(shù)據(jù)庫(kù)為例,封鎖對(duì)象可以是行、列、索引項(xiàng)、頁(yè)、擴(kuò)展盤區(qū)、表和數(shù)據(jù)庫(kù)等。

鎖定粒度大,系統(tǒng)開銷小,但并發(fā)度會(huì)降低鎖定粒度小,系統(tǒng)開銷大,但可提高并發(fā)度

6.3.3封鎖協(xié)議在運(yùn)用X鎖和S鎖對(duì)數(shù)據(jù)對(duì)象進(jìn)行加鎖時(shí),還需要約定一些規(guī)則,如何時(shí)申請(qǐng)X鎖或S鎖、持鎖時(shí)間、何時(shí)釋放鎖等。稱這些規(guī)則為封鎖協(xié)議或加鎖協(xié)議(LockingProtocel)。對(duì)封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同級(jí)別的封鎖協(xié)議。不同級(jí)別的封鎖協(xié)議達(dá)到的系統(tǒng)一致性級(jí)別不同。一級(jí)封鎖協(xié)議對(duì)事務(wù)T要修改的數(shù)據(jù)加X鎖,直到事務(wù)結(jié)束(包括正常結(jié)束和非正常結(jié)束)時(shí)才釋放。一級(jí)封鎖協(xié)議可以防止丟失修改,并保證事務(wù)T是可恢復(fù)的。但不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。一級(jí)封鎖協(xié)議示例二級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議加上對(duì)事務(wù)T對(duì)要讀取的數(shù)據(jù)加S鎖,讀完后即釋放S鎖。除了可以防止丟失修改外,還可以防止讀“臟”數(shù)據(jù)。但不能保證可重復(fù)讀數(shù)據(jù)。二級(jí)封鎖協(xié)議示例三級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議加上事務(wù)T對(duì)要讀取的數(shù)據(jù)加S鎖,并直到事務(wù)結(jié)束才釋放。除了可以防止丟失修改和不讀“臟”數(shù)據(jù)之外,還進(jìn)一步防止了不可重復(fù)讀。三級(jí)封鎖協(xié)議示例不同級(jí)別的封鎖協(xié)議總結(jié)

6.3.4死鎖1.死鎖的種類(1)活鎖是指當(dāng)若干事務(wù)要對(duì)同一數(shù)據(jù)項(xiàng)加鎖時(shí),造成一些事務(wù)的永遠(yuǎn)等待,得不到控制權(quán)的現(xiàn)象。假設(shè)T1、T2、T3、T4都要讀取R的值,則它們依次對(duì)R加鎖,如圖所示,這時(shí)T2可能永遠(yuǎn)處于等待狀態(tài)。

(2)死鎖是指兩個(gè)以上事務(wù)集合中的每個(gè)事務(wù)都在等待加鎖當(dāng)前已被另一事務(wù)加鎖的數(shù)據(jù)項(xiàng),從而造成相互等待的現(xiàn)象。如圖所示。死鎖的診斷

(1)超時(shí)法如果一個(gè)事務(wù)的等待時(shí)間超過了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖。這種方法實(shí)現(xiàn)簡(jiǎn)單,但存在兩個(gè)問題:一是可能誤判死鎖,如果事務(wù)是由于其他原因而使等待時(shí)間長(zhǎng),系統(tǒng)會(huì)認(rèn)為是發(fā)生了死鎖;二是時(shí)限的設(shè)置問題,若時(shí)限設(shè)置得太長(zhǎng),可能導(dǎo)致死鎖發(fā)生后不能及時(shí)發(fā)現(xiàn)。(2)等待圖法等待圖法是動(dòng)態(tài)地根據(jù)并發(fā)事務(wù)之間的資源等待關(guān)系構(gòu)造一個(gè)有向圖,并發(fā)控制子系統(tǒng)周期性地檢測(cè)該有向圖是否出現(xiàn)環(huán)路,若有,則說明出現(xiàn)了死鎖。數(shù)據(jù)庫(kù)中解決死鎖的常用方法

一次封鎖法一次封鎖法是每個(gè)事務(wù)一次將所有要使用的數(shù)據(jù)全部加鎖。順序封鎖法順序封鎖法是預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序封鎖。采用診斷的方式

構(gòu)造一些算法,選擇代價(jià)小的撤銷讓路6.3.5兩段鎖協(xié)議具體內(nèi)容為:①在對(duì)任何數(shù)據(jù)進(jìn)行讀,寫操作之前,首先要封鎖該數(shù)據(jù);②在釋放一個(gè)封鎖之后,事務(wù)不再申請(qǐng)和獲得任何其他封鎖.兩段鎖協(xié)議是實(shí)現(xiàn)可串行化調(diào)度的充分條件??梢詫⒚總€(gè)事務(wù)分成兩個(gè)時(shí)期:申請(qǐng)封鎖期和釋放封鎖期,申請(qǐng)期申請(qǐng)要進(jìn)行的封鎖,釋放期釋放所占有的封鎖。在申請(qǐng)期不允許釋放任何鎖,在釋放期不允許申請(qǐng)任何鎖,這就是兩段式封鎖。6.4數(shù)據(jù)庫(kù)的安全性6.4.1數(shù)據(jù)庫(kù)安全性控制概述6.4.2用戶標(biāo)識(shí)與鑒別6.4.3用戶身份認(rèn)證6.4.4訪問控制6.4.5視圖機(jī)制6.4.6審計(jì)6.4.7數(shù)據(jù)加密6.4.1數(shù)據(jù)庫(kù)安全性控制概述用戶DBMSOSDB用戶標(biāo)識(shí)和鑒定存取控制操作系統(tǒng)安全保護(hù)數(shù)據(jù)密碼存儲(chǔ)安全保護(hù)在計(jì)算機(jī)系統(tǒng)中,安全措施一般是一級(jí)一級(jí)層層設(shè)置的,如圖所示就是一種很常用的安全模型。

6.4.2用戶標(biāo)識(shí)與鑒別用戶標(biāo)識(shí)和鑒定是系統(tǒng)提供的最外層安全保護(hù)措施。其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識(shí)自己的身份。

目前常用的確用戶鑒定方法有:(1)口令(password)是最常用的方法。當(dāng)進(jìn)入系統(tǒng)時(shí),系統(tǒng)常常要求用戶輸入口令,并對(duì)輸入的口令進(jìn)行鑒別,核實(shí)用戶的身份。(2)利用用戶的物理特征鑒別利用用戶的物理特征,如指紋、聲波、相貌等鑒別用戶的身份。這些鑒別的方法操作簡(jiǎn)單,而且技術(shù)日趨成熟。6.4.3用戶身份認(rèn)證系統(tǒng)認(rèn)證模式是指當(dāng)用戶進(jìn)行訪問數(shù)據(jù)庫(kù)系統(tǒng)時(shí)系統(tǒng)給予的確認(rèn)方式,這是數(shù)據(jù)庫(kù)管理系統(tǒng)提供的最外層安全保護(hù)措施,主要體現(xiàn)在當(dāng)用戶登錄時(shí),系統(tǒng)對(duì)該用戶的賬號(hào)和口令進(jìn)行認(rèn)證。例如,SQLServer2005提供了Windows認(rèn)證模式和SQLServer認(rèn)證模式。在Windows認(rèn)證模式下,用戶的身份驗(yàn)證由操作系統(tǒng)完成。SQLServer認(rèn)證模式下,由DBMS進(jìn)行用戶認(rèn)證機(jī)制。

6.4.4訪問控制1.存取控制:數(shù)據(jù)庫(kù)安全最重要的一點(diǎn)就是確保只授權(quán)給有資格的用戶訪問數(shù)據(jù)庫(kù)的權(quán)限。2.自主存取控制方法:是一種基于存取者身份或所屬工作組對(duì)數(shù)據(jù)的訪問權(quán)限進(jìn)行控制的手段,大多數(shù)DBMS都支持DAC,其控制機(jī)制主要包括兩部分:①提供定義用戶權(quán)限的功能,并將實(shí)際的權(quán)限定義登記到數(shù)據(jù)字典中;②進(jìn)行權(quán)限檢查,當(dāng)用戶發(fā)出數(shù)據(jù)庫(kù)存取操作請(qǐng)求時(shí),DBMS根據(jù)數(shù)據(jù)字典中登記的權(quán)限和安全性規(guī)則進(jìn)行訪問的合法性檢查,若用戶的操作請(qǐng)求不合法,則拒絕數(shù)據(jù)訪問。

3.強(qiáng)制存取控制方法相對(duì)于DAC,強(qiáng)制訪問控制(MAC)是一種不允許主體干涉的訪問控制,它由系統(tǒng)或數(shù)據(jù)庫(kù)管理員決定整個(gè)系統(tǒng)的安全策略,MAC的實(shí)現(xiàn)機(jī)制主要由兩部分內(nèi)容構(gòu)成:①針對(duì)主體的權(quán)限和客體的安全性要求,分別指派相應(yīng)的敏感度標(biāo)記,主體的敏感度標(biāo)記稱為許可證級(jí)別,客體的敏感度標(biāo)記稱為密級(jí)。②當(dāng)主體對(duì)客體進(jìn)行訪問時(shí),依據(jù)“不準(zhǔn)上讀,不準(zhǔn)下寫”的規(guī)則進(jìn)行訪問控制。

6.4.5視圖機(jī)制視圖技術(shù)是保證數(shù)據(jù)庫(kù)安全的一個(gè)重要手段,它可以把要保密的數(shù)據(jù)對(duì)無權(quán)存取的用戶隱藏起來,從而對(duì)數(shù)據(jù)提供一定程度的安全保護(hù)。通過視圖可實(shí)現(xiàn)如下功能:①可以限制用戶只看到表中的某些行

②可以限制用戶只看到表中的某些列

③將多個(gè)表中的列組合起來。使得這些列看起來就像一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)表。

6.4.6審計(jì)審計(jì)功能就是把用戶對(duì)數(shù)據(jù)庫(kù)的所有操作自動(dòng)記錄下來放入審計(jì)日志中,一旦發(fā)生數(shù)據(jù)被非法存取,DBA可以利用審計(jì)跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫(kù)現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時(shí)間和內(nèi)容等。

6.4.7數(shù)據(jù)加密加密是根據(jù)一定的算法將原始數(shù)據(jù)(明文,Plaintext)變換為不可直接識(shí)別的格式(密文,Ciphertext),從而使得不知道解密算法的人無法獲得數(shù)據(jù)的內(nèi)容。

加密方法主要有兩種:

1)替換方法。使用密鑰將明文中的每一個(gè)字符轉(zhuǎn)換為密文中的字符。

2)置換方法。僅將明文的字符按不同的順序重新排列。常用的加密算法有:對(duì)稱算法,指加密和解密使用同一個(gè)密鑰,主要包括替換密碼、變位密碼、DES算法等方法;非對(duì)稱算法,指加密和解密使用兩個(gè)不同但是數(shù)學(xué)上相關(guān)的密鑰,最典型的是RSA算法。

6.4.7數(shù)據(jù)加密SQLServer可以加密下列方面:(1)密碼

SQLServer自動(dòng)將分配給登錄和應(yīng)用角色的密碼加密。(2)存儲(chǔ)過程、視圖、觸發(fā)器、用戶自定義函數(shù)、默認(rèn)值和規(guī)則例如,為了加密一個(gè)存儲(chǔ)過程,使用下面形式的CREATEPROCEDURE語句:CREATEPROCEDUREprocedurename[;number][@parameter

datatype[VARYING][=defaultvalue][OUTPUT]][,…][WITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]其中,人們關(guān)心的僅僅是可選的WITH參數(shù)。ENCRYPTION關(guān)鍵字保護(hù)SQLServer不被公開在進(jìn)程中,在激活的時(shí)候系統(tǒng)存儲(chǔ)過程sp_helptext就會(huì)被忽視。

(3)在服務(wù)器和用戶之間傳輸?shù)臄?shù)據(jù)6.5數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)的完整性是為了防止數(shù)據(jù)庫(kù)中存在不符合語義的數(shù)據(jù)。DBMS檢查數(shù)據(jù)是否滿足完整性條件的機(jī)制就稱為完整性檢查。DBMS的完整性控制機(jī)制應(yīng)具有兩方面的功能:(1)定義功能:為數(shù)據(jù)庫(kù)用戶提供定義完整性約束條件的機(jī)制。(2)檢查功能:檢查用戶發(fā)出的操作請(qǐng)求是否違背了完整性約束條件,如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違背了完整性約束條件,則執(zhí)行相應(yīng)的處理,以保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性。如下的二元組描述了DBMS實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)完整性的機(jī)制:數(shù)據(jù)庫(kù)完整性機(jī)制=(完整性約束集,完整性約束檢查)6.5.1數(shù)據(jù)完整性約束從不同角度對(duì)數(shù)據(jù)庫(kù)的完整性進(jìn)行如下分類:1.完整性約束條件作用的對(duì)象可以是關(guān)系、元組、列3種,根據(jù)完整性約束條件作用的對(duì)象,可分為:①列約束②元組約束③關(guān)系約束

2.按照完整性約束對(duì)象的狀態(tài)來分,可將完整性分為靜態(tài)完整性約束和動(dòng)態(tài)完整性約束。3.根據(jù)完整性的應(yīng)用特征,可將完整性分為:實(shí)體完整性、用戶定義完整性與參照完整性。6.5.2SQLServer2005的數(shù)據(jù)完整性控制

實(shí)現(xiàn)數(shù)據(jù)的完整性控制一般是在服務(wù)器上完成的。主要有以下兩種方法:一種是在定義表時(shí)聲明數(shù)據(jù)完整性,稱為聲明完整性,另一種是在服務(wù)器端編寫觸發(fā)器來實(shí)現(xiàn),稱為過程完整性。不管使用哪一種方法,只要用戶定義好數(shù)據(jù)完整性,以后在執(zhí)行對(duì)數(shù)據(jù)的增、刪、改操作時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)自動(dòng)檢查用戶定義的完整性約束條件。

在SQLServer2005中提供多種強(qiáng)制數(shù)據(jù)完整性的機(jī)制。

1.PRIMARYKEY約束標(biāo)識(shí)列或列集,這些列或列集的值唯一標(biāo)識(shí)表中的行。

?作為表定義的一部分在創(chuàng)建表時(shí)創(chuàng)建。

?添加到還沒有PRIMARYKEY約束的表中。?如果已有PRIMARYKEY約束,則可對(duì)其進(jìn)行修改或刪除。2.FOREIGNKEY約束

FOREIGNKEY約束(外鍵約束)標(biāo)識(shí)表之間的關(guān)系,用于強(qiáng)制參照完整性,為表中一列或者多列數(shù)據(jù)提供參照完整性。?作為表定義的一部分在創(chuàng)建表時(shí)創(chuàng)建。?對(duì)已有的FOREIGNKEY約束進(jìn)行修改或刪除。注意:外碼所引用的列必須是有PRIMARYKEY約束或UNIQUE約束的列。一個(gè)表可以有多個(gè)FOREIGNKEY約束。

3.UNIQUE約束

在列集內(nèi)強(qiáng)制執(zhí)行值的唯一性。

唯一約束與主鍵的區(qū)別為:主鍵不但不允許為空值,而且每個(gè)表中只能有一個(gè),但UNIQUE約束的列在表中可以有多個(gè)。UNIQUE約束優(yōu)先于唯一索引。4.CHECK約束通過限制用戶輸入的值來加強(qiáng)域完整性。用于限制列的取值在指定的范圍內(nèi),使數(shù)據(jù)庫(kù)中存放的值都是有意義的。

系統(tǒng)在執(zhí)行INSERT語句和UPDATE語句時(shí)自動(dòng)檢查CHECK約束。5.NOTNULL非空約束

用于指定列的非空性。6.DEFAULT默認(rèn)值約束用于提供列的默認(rèn)值。

7.規(guī)則

規(guī)則作為一個(gè)獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象存在,表中的每列或者每個(gè)用戶定義數(shù)據(jù)類型只能和一個(gè)規(guī)則綁定。

(1)創(chuàng)建規(guī)則語法格式如下:CREATERULE規(guī)則名AS條件表達(dá)式【例6-9】在test數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為rule1的規(guī)則,限定輸入的值必須在0~10之間。UsetestGoCREATERULErule1as@c1between0and10(2)綁定規(guī)則要使用規(guī)則,必須首先將其和列或者用戶定義數(shù)據(jù)類型綁定。綁定的方法為使用SQLServer的系統(tǒng)存儲(chǔ)過程sp_bindrule,也可以使用SQLServer的管理控制器。語法格式為:sp_bindrule[@rulename=]'規(guī)則名',[@objname=]'列名或者用戶定義數(shù)據(jù)類型'【例6-10】將【例6-9】建立的rule1規(guī)則1綁定到test數(shù)據(jù)庫(kù)的table1表中的c1列上;UsetestGoExecsp_bindrule‘rule1’,’table1.c1’(3)解除和刪除規(guī)則對(duì)于不再使用的規(guī)則,可使用droprule刪除。要?jiǎng)h除規(guī)則首先要解除規(guī)則的綁定。解除規(guī)則的綁定可以使用sp_unbindrule存儲(chǔ)過程。sp_unbindrule存儲(chǔ)過程的語法格式如下:sp_unbindrule[@objname=]'列名或者用戶定義數(shù)據(jù)類型

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論