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

下載本文檔

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

文檔簡介

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

與應用技術(shù)

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

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

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

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

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

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

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

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

6.1.1事務

6.1.2事務的特征

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

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

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

一致性(Consistency)

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

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

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

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

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

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

(3)介質(zhì)故障

(4)計算機病毒

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

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ù)庫中的數(shù)據(jù)是一個共享的資源,因此會有很多用戶同時使用數(shù)據(jù)庫中的數(shù)據(jù),在多用戶系統(tǒng)中,可能同時運行著多個事務,而事務的運行需要時間,并且事務中的操作是在一定的數(shù)據(jù)上進行的。當系統(tǒng)中同時有多個事務在運行時,特別是當這些事務是對同一段數(shù)據(jù)進行操作時,彼此之間就有可能產(chǎn)生相互干擾的情況。

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

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

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

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

意向排他(IX)鎖

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

加密方法主要有兩種:

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

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

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

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

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

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

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

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

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

1.PRIMARYKEY約束標識列或列集,這些列或列集的值唯一標識表中的行。

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

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

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

3.UNIQUE約束

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

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

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

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

7.規(guī)則

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論