數(shù)據(jù)庫原理及應(yīng)用教程 第5章_第1頁
數(shù)據(jù)庫原理及應(yīng)用教程 第5章_第2頁
數(shù)據(jù)庫原理及應(yīng)用教程 第5章_第3頁
數(shù)據(jù)庫原理及應(yīng)用教程 第5章_第4頁
數(shù)據(jù)庫原理及應(yīng)用教程 第5章_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理及應(yīng)用教程 (第4版)中國工信出版集團 人民郵電出版社“十二五”普通高等教育本科國家級規(guī)劃教材微課版,對重點和難點進行視頻詳解北京林業(yè)大學 信息學院第5章 數(shù)據(jù)庫安全保護第5章北京林業(yè)大學 信息學院本章重點為了適應(yīng)和滿足數(shù)據(jù)共享的環(huán)境和要求,DBMS要保證整個系統(tǒng)的正常運轉(zhuǎn),防止數(shù)據(jù)意外丟失和不一致數(shù)據(jù)的產(chǎn)生,以及當數(shù)據(jù)庫遭受破壞后能迅速地恢復正常,這就是數(shù)據(jù)庫的安全保護。DBMS對數(shù)據(jù)安全的保護功能安全性控制完整性控制并發(fā)性控制數(shù)據(jù)庫恢復5.1 數(shù)據(jù)庫的安全性5.2 完整性控制5.3 并發(fā)控制與封鎖5.4 數(shù)據(jù)庫的恢復5.5 小結(jié)北京林業(yè)大學 信息學院第5章北京林業(yè)大學 信息學院5

2、.1 數(shù)據(jù)庫的安全性5.1.1 數(shù)據(jù)庫安全性的含義安全性問題有許多方面 : (1)法律、社會和倫理方面時問題。(2)物理控制方面的問題。(3)政策方面的問題。(4)運行方面的問題。(5)硬件控制方面的問題。(6)操作系統(tǒng)安全性方面的問題。(7)數(shù)據(jù)庫系統(tǒng)本身的安全性方面的問題。數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性5.1.2 安全性控制的一般方法圖5-1 安全控制模型 安全性控制是指要盡可能地杜絕所有可能的數(shù)據(jù)庫非法訪問。 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性用戶標識和鑒定 用戶存取權(quán)限控制 定義

3、視圖 數(shù)據(jù)加密 審計(Audit) 安全性控制的一般方法 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性用戶標識和鑒定 用戶標識和鑒定是由系統(tǒng)提供一定的方式讓用戶標識自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標識,每次用戶要求進入系統(tǒng)時,由系統(tǒng)進行核實,通過鑒定后才提供計算機的使用權(quán)。 用戶標識和鑒定的方法 用一個用戶名或用戶標識符來標明用戶的身份,系統(tǒng)以此來鑒別用戶的合法性。 用戶標識符是用戶公開的標識,它不足以成為鑒別用戶身份的憑證。 通過用戶名和口令來鑒定用戶的方法簡單易行,但該方法在使用時,由于用戶名和口令的產(chǎn)生和使用比較簡單,也容易被竊取,因此還可采用更復雜的方法。 第5章北

4、京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性 用戶存取權(quán)限指的是不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。 在數(shù)據(jù)庫系統(tǒng)中,定義用戶存取權(quán)限稱為授權(quán) 。用戶存取權(quán)限控制 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性 為不同的用戶定義不同的視圖,可以限制各個用戶的訪問范圍。通過視圖機制把要保密的數(shù)據(jù)對無權(quán)存取這些數(shù)據(jù)的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護。定義視圖第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性數(shù)據(jù)加密 加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)加密成為不可直接識別的格式,數(shù)據(jù)以密文的形式存儲和傳輸。 加密方法替換方法,該方法使用密鑰將明文中的每一個字符

5、轉(zhuǎn)換為密文中的字符。轉(zhuǎn)換方法,該方法將明文中的字符按不同的順序重新排列。 通常將這兩種方法結(jié)合起來使用,就可以達到相當高的安全程度。 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性審計 審計功能是一種監(jiān)視措施,它跟蹤記錄有關(guān)數(shù)據(jù)的訪問活動。 使用審計功能把用戶對數(shù)據(jù)庫的所有操作自動記錄下來,存放在一個特殊文件中,即審計日志中。記錄的內(nèi)容一般包括:操作類型(如修改、查詢等),操作終端標識與操作者標識,操作日期和時間,操作所涉及到的相關(guān)數(shù)據(jù)(如基本表、視圖、記錄、屬性等),數(shù)據(jù)的前象和后象等。 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性5.1.3 SQL Server 2012的數(shù)據(jù)安

6、全性機制SQL Server 2012的安全模型分為三層結(jié)構(gòu),分別為服務(wù)器安全管理、數(shù)據(jù)庫安全管理和數(shù)據(jù)庫對象的訪問權(quán)限管理。第一層安全性是SQL Server服務(wù)器級別的安全性第二層安全性是數(shù)據(jù)庫級別的安全性第三層安全性是數(shù)據(jù)庫對象級別的安全性第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性圖5-2 SQL Server的三層安全機制第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性5.1.4 SQL Server 2012的身份驗證模式Windows身份驗證模式 在該驗證模式下,SQL Server 2012使用Windows操作系統(tǒng)來對登錄的賬號進行身份驗證,支持Windows操作系統(tǒng)

7、的密碼策略和鎖寫策略,賬號和密碼保存在Windows操作系統(tǒng)的賬戶數(shù)據(jù)庫中。 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性5.1.4 SQL Server 2012的身份驗證模式Windows身份驗證模式 Windows驗證模式下主要有以下優(yōu)點:(1)數(shù)據(jù)庫管理員的工作可以集中在管理數(shù)據(jù)庫方面,而不是管理用戶賬戶。(2)Windows有著更強的用戶賬戶管理工具??梢栽O(shè)置賬戶鎖定、密碼期限等。(3)Windows的組策略支持多個用戶同時被授權(quán)訪問SQL Server。如果網(wǎng)絡(luò)中有多個SQL Server服務(wù)器,就可以選擇通過Windows身份驗證機制來完成。 第5章北京林業(yè)大學 信息學院5

8、.1 數(shù)據(jù)庫的安全性TCP/IP Sockets 命名管道 SQL Server身份驗證模式 Windows身份驗證模式 混合身份驗證模式混合身份驗證模式允許以SQL Server身份驗證模式或者Windows身份驗證模式來進行驗證。使用哪種身份驗證取決于最初通信時使用的網(wǎng)絡(luò)庫。在SQL Server身份驗證模式下,賬號和密碼保存在master數(shù)據(jù)庫的syslogins數(shù)據(jù)表中。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性混合驗證模式的優(yōu)點 (1)如果用戶是具有Windows登錄名和密碼的Windows域用戶,則還必須提供另一個用于連接SQL Server的登錄名和密碼,因此,該種驗證模

9、式創(chuàng)建了Windows之上的另外一個安全層次。(2)允許SQL Server支持具有混合操作系統(tǒng)的環(huán)境,在這種環(huán)境中并不是所有用戶均由Windows域進行驗證。(3)允許用戶從未知的或不可信的域進行連接。(4)允許SQL Server支持基于Web的應(yīng)用程序,在這些應(yīng)用程序中用戶可創(chuàng)建自己的標識。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性設(shè)置身份驗證模式 安裝SQL Server 2012時,安裝程序會提示用戶選擇服務(wù)器身份驗證模式,然后根據(jù)用戶的選擇將服務(wù)器設(shè)置為 “Windows 身份驗證模式”或 “SQL Server 和 Windows ”身份驗證模式。在使用過程中,可以根據(jù)需

10、要來重新設(shè)置服務(wù)器的身份驗證模式。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性設(shè)置身份驗證模式 具體的過程如下:(1)在SQL Server Management Studio的【對象資源管理器】中,右鍵單擊服務(wù)器,在彈出的快捷菜單中單擊【屬性】,會彈出“服務(wù)器屬性”窗口。(2)在“服務(wù)器屬性“窗口中,在“選擇頁列表中”選擇”安全性”,之后,在“服務(wù)器身份驗證”下,可以選擇新的服務(wù)器身份驗證模式,再單擊【確定】按鈕,如圖5-3所示。(3)重新啟動 SQL Server,使設(shè)置生效。第5章5.1 數(shù)據(jù)庫的安全性圖5-3 設(shè)置SQL Server服務(wù)器的身份驗證模式第5章北京林業(yè)大學 信息學

11、院5.1 數(shù)據(jù)庫的安全性5.1.5 SQL Server 2012的登錄賬號和服務(wù)器角色 在SQL Server中,賬號有兩種:一種是登錄服務(wù)器的登錄賬號(Login Name),另外一種是使用數(shù)據(jù)庫的用戶賬號(User Name)。 登錄賬號是指能登錄到SQL Server的賬號,它屬于服務(wù)器的層面,本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫,而登錄者要使用服務(wù)器中的數(shù)據(jù)庫時,必須要有用戶賬號才能存取數(shù)據(jù)庫。就如同公司門口先刷卡進入(登錄服務(wù)器),然后再拿鑰匙打開自己的辦公室(進入數(shù)據(jù)庫)一樣。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性創(chuàng)建登錄賬號 (1)在【對象資源管理器】中,展開【安全

12、性】結(jié)點,然后右鍵單擊【登錄名】,在彈出的快捷菜單中選擇【新建登錄名】,會出現(xiàn)“登錄名-新建”窗口。(2)在“登錄名-新建”窗口中,在“選擇頁”列表中選擇“常規(guī)”。(3)在“登錄名”文本框中輸入要創(chuàng)建的登錄賬號的名稱,單擊“SQL Server身份驗證”單選鈕,并輸入密碼,之后,取消勾選“強制實施密碼策略”復選框,如圖5-4所示。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性創(chuàng)建登錄賬號 (4)在圖5-4中,在“選擇頁”列表中選擇“服務(wù)器角色”,如圖5-5所示。這里可以選擇將該登錄賬號添加到某個服務(wù)器角色中成為其成員,并自動具有該服務(wù)器角色的權(quán)限。其中,public角色自動選中,并且不能刪

13、除。在此選擇sysadmin角色,使該登錄賬號具有服務(wù)器層面的任何權(quán)限。(5)設(shè)置完所有需要設(shè)置的選項之后,單擊【確定】按鈕即可創(chuàng)建登錄賬號,并且顯示在登錄名列表中,如圖5-6所示第5章5.1 數(shù)據(jù)庫的安全性圖5-4 創(chuàng)建SQL Server的登錄賬號第5章5.1 數(shù)據(jù)庫的安全性圖5-5 設(shè)置登錄賬號的服務(wù)器角色圖5-6 新建的登錄賬號顯示在登錄名列表中第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性修改登錄賬號的過程和創(chuàng)建登錄賬號的過程類似,在【對象資源管理器】中,展開【安全性】結(jié)點下面的【登錄名】結(jié)點,然后右鍵單擊要修改的登錄名,在彈出的快捷菜單中選擇【屬性】菜單,即可打開【登錄屬性】對

14、話框,接下來就可以對該登錄賬號進行修改。其中各選項的含義和“登錄名-新建”窗口中的選項含義相同,這里不再贅述。修改登錄賬號第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性刪除登錄賬號 SQL Server的服務(wù)器角色 角色(Role)是對權(quán)限集中管理的一種機制,將不同的權(quán)限組合在一起就 形成了一種角色。 服務(wù)器角色是執(zhí)行服務(wù)器級管理操作的用戶權(quán)限的集合。在【對象資源管理器】中,展開【安全性】結(jié)點下面的【登錄名】結(jié)點,然后右鍵單擊要刪除的登錄名,在彈出的快捷菜單中選擇【刪除】,在出現(xiàn)的“刪除對象”窗口中單擊【確定】按鈕即可刪除該登錄賬號。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性5.1

15、.6 SQL Server 2012的數(shù)據(jù)庫用戶賬號和數(shù)據(jù)庫角色數(shù)據(jù)庫的用戶賬號登錄名本身并不能讓用戶訪問服務(wù)器中的數(shù)據(jù)庫資源。要訪問具體數(shù)據(jù)庫中的資源,還必須有該數(shù)據(jù)庫的用戶名。新的登錄名創(chuàng)建以后,才能創(chuàng)建數(shù)據(jù)庫用戶,數(shù)據(jù)庫用戶在特定的數(shù)據(jù)庫內(nèi)創(chuàng)建,必須和某個登錄名相關(guān)聯(lián)。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性 一個登錄賬戶可以與服務(wù)器上的所有數(shù)據(jù)庫進行關(guān)聯(lián),而數(shù)據(jù)庫用戶是一個登錄賬戶在某數(shù)據(jù)庫中的映射,也即一個登錄賬戶可以映射到不同的數(shù)據(jù)庫,產(chǎn)生多個數(shù)據(jù)庫用戶(但一個登錄賬戶在一個數(shù)據(jù)庫至多只能映射一個數(shù)據(jù)庫用戶),一個數(shù)據(jù)庫用戶只能映射到一個登錄賬戶。允許數(shù)據(jù)庫為每個用戶對象

16、分配不同的權(quán)限,這一特性為在組內(nèi)分配權(quán)限提供了最大的自由度與可控性。數(shù)據(jù)庫的用戶賬號第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性創(chuàng)建數(shù)據(jù)庫的用戶賬號 可以通過以下兩種方法創(chuàng)建數(shù)據(jù)庫用戶賬號。一種是利用對象資源管理器創(chuàng)建數(shù)據(jù)庫用戶,另一種是利用T-SQL語句創(chuàng)建。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性查看或修改數(shù)據(jù)庫用戶賬號 (1)在【對象資源管理器】中,展開 “具體的數(shù)據(jù)庫名”(例如數(shù)據(jù)庫“Teach”)下面的“安全性”節(jié)點,再展開其中的“用戶”結(jié)點,在“用戶”文件夾下能看到該數(shù)據(jù)庫的已有用戶。(2)右鍵單擊某個要操作的用戶,在系統(tǒng)彈出的快捷菜單中選擇“屬性”命令。(3)在打

17、開的數(shù)據(jù)庫用戶屬性對話框中可以查看或修改用戶的權(quán)限信息,如“常規(guī)”中的“擁有架構(gòu)”、“角色成員”;“安全對象”中的具體權(quán)限設(shè)置及“擴展屬性”等。(4)設(shè)置完成后,單擊“確定”按鈕,則成功修改數(shù)據(jù)庫用戶。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性刪除數(shù)據(jù)庫用戶賬號 (1)在【對象資源管理器】中,展開 “具體的數(shù)據(jù)庫名”(例如數(shù)據(jù)庫“Teach”)下面的“安全性”節(jié)點,再展開其中的“用戶”結(jié)點,在“用戶”文件夾下能看到該數(shù)據(jù)庫的已有用戶。(2)右鍵單擊某個要刪除的用戶,在系統(tǒng)彈出的快捷菜單中選擇“刪除”命令,打開“刪除對象”對話框。(3)在打開的“刪除對象”對話框中選定要刪除的賬號,然后單

18、擊“確定”按鈕,則成功刪除數(shù)據(jù)庫用戶。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性數(shù)據(jù)庫角色 SQL Server在每個數(shù)據(jù)庫中都提供了10個固定的數(shù)據(jù)庫角色。與服務(wù)器角色不同的是,數(shù)據(jù)庫角色權(quán)限的作用域僅限在特定的數(shù)據(jù)庫內(nèi)。在“對象資源管理器”中展開相應(yīng)數(shù)據(jù)庫下的“安全性”結(jié)點,然后再單擊“數(shù)據(jù)庫角色”,即可看到這10個數(shù)據(jù)庫角色。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性服務(wù)器角色權(quán)限描述 db_accessadmin 訪問權(quán)限管理員,能夠添加或刪除數(shù)據(jù)庫用戶和角色db_backupoperator 數(shù)據(jù)庫備份管理員,能夠備份和還原數(shù)據(jù)庫db_datareader 數(shù)據(jù)庫檢索

19、操作員,能夠讀取數(shù)據(jù)庫中所有用戶表中的所有數(shù)據(jù)db_datawriter 數(shù)據(jù)維護操作員,能夠?qū)?shù)據(jù)庫中的所有用戶表添加、刪除或修改數(shù)據(jù)db_ddladmin 數(shù)據(jù)庫對象管理員,能夠添加、刪除和修改數(shù)據(jù)庫對象,如:表、視圖等 第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性服務(wù)器角色 權(quán)限描述 public每個數(shù)據(jù)庫用戶都屬于 public 數(shù)據(jù)庫角色,具有默認的權(quán)限db_denydatareader 拒絕執(zhí)行檢索操作員,不能讀取數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)db_denydatawriter 拒絕執(zhí)行數(shù)據(jù)維護操作員,不能添加、修改或刪除數(shù)據(jù)庫內(nèi)用戶表中的任何數(shù)據(jù)db_owner 數(shù)據(jù)庫所有者,

20、可以執(zhí)行數(shù)據(jù)庫的所有活動,在數(shù)據(jù)庫中擁有全部權(quán)限db_securityadmin 安全管理員,可以修改角色成員身份和管理權(quán)限第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性用戶管理權(quán)限權(quán)限用來指定授權(quán)用戶可以使用的數(shù)據(jù)庫對象和這些授權(quán)用戶可以對這些數(shù)據(jù)庫對象執(zhí)行的那些操作。當用戶以某個登錄賬號登錄到SQL Server服務(wù)器后,該數(shù)據(jù)庫用戶賬號(一定依附于某個登錄賬號)所歸屬的Windows組(Windows登錄賬號)或所歸屬的數(shù)據(jù)庫角色被賦予的權(quán)限決定了該用戶能夠?qū)δ男?shù)據(jù)庫對象執(zhí)行哪種操作以及能夠訪問、修改哪些數(shù)據(jù)。在每個數(shù)據(jù)庫中,權(quán)限獨立于用戶賬號和用戶在數(shù)據(jù)庫中的角色,每個數(shù)據(jù)庫都有

21、自己獨立的權(quán)限系統(tǒng)。第5章北京林業(yè)大學 信息學院5.1 數(shù)據(jù)庫的安全性用戶管理權(quán)限系統(tǒng)權(quán)限:系統(tǒng)權(quán)限表示用戶對數(shù)據(jù)庫的操作權(quán)限。即創(chuàng)建數(shù)據(jù)庫或者創(chuàng)建數(shù)據(jù)庫中的其他內(nèi)容所需要的權(quán)限類型稱為系統(tǒng)權(quán)限。對象權(quán)限:數(shù)據(jù)庫對象權(quán)限是授予數(shù)據(jù)庫用戶對特定數(shù)據(jù)庫中的表、視圖和存儲過程等對象的操作權(quán)限,它決定了能對表、視圖等數(shù)據(jù)庫對象執(zhí)行哪些操作,相當于數(shù)據(jù)庫操縱語言的語句權(quán)限。第5章北京林業(yè)大學 信息學院5.2 完整性控制5.2.1 數(shù)據(jù)庫完整性的含義數(shù)據(jù)庫的完整性是指保護數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性,防止錯誤的數(shù)據(jù)進入數(shù)據(jù)庫造成無效操作。數(shù)據(jù)庫的完整性是指防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中加入不符

22、合語義的數(shù)據(jù)。完整性措施的防范對象是不合語義的數(shù)據(jù)。 第5章北京林業(yè)大學 信息學院5.2 完整性控制5.2.2 完整性規(guī)則的組成完整性規(guī)則主要由以下三部分構(gòu)成。(1)觸發(fā)條件:規(guī)定系統(tǒng)什么時候使用完整性規(guī)則來檢查數(shù)據(jù)。(2)約束條件:規(guī)定系統(tǒng)檢查用戶發(fā)出的操作請求違背了什么樣的完整性約束條件。(3)違約響應(yīng):規(guī)定系統(tǒng)如果發(fā)現(xiàn)用戶發(fā)出的操作請求違背了完整性約束條件,應(yīng)該采取一定的動作來保證數(shù)據(jù)的完整性,即違約時要做的事情。完整性規(guī)則從執(zhí)行時間上可分為立即執(zhí)行約束(Immediate Constraints)和延遲執(zhí)行約束(Deferred Constraints)。 第5章北京林業(yè)大學 信息學院

23、5.2 完整性控制一條完整性規(guī)則可以用一個五元組(D,O,A,C,P)來形式化地表示 D(Data):代表約束作用的數(shù)據(jù)對象,可以是關(guān)系、元組和列三種對象;O(Operation):代表觸發(fā)完整性檢查的數(shù)據(jù)庫操作,即當用戶發(fā)出什么操作請求時需要檢查該完整性規(guī)則,是立即執(zhí)行還是延遲執(zhí)行;A(Assertion):代表數(shù)據(jù)對象必須滿足的語義約束,這是規(guī)則的主體;C(Condition):代表選擇A作用的數(shù)據(jù)對象值的謂詞;P(Procedure):代表違反完整性規(guī)則時觸發(fā)執(zhí)行的操作過程。第5章北京林業(yè)大學 信息學院5.2 完整性控制完整性約束條件是完整性控制機制的核心。例如,對于“學號(SNo)不能

24、為空”的這條完整性約束中,D、O、A、C、P的含義分別如下:D:代表約束作用的數(shù)據(jù)對象為SNo屬性;O:當用戶插入或修改數(shù)據(jù)時需要檢查該完整性規(guī)則; A:SNo不能為空;C:A可作用于所有記錄的SNo屬性;P:拒絕執(zhí)行用戶請求。 第5章北京林業(yè)大學 信息學院5.2 完整性控制5.2.3 完整性約束條件的分類根據(jù)約束條件:值的約束和結(jié)構(gòu)的約束值的約束即對數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值等進行規(guī)定。(1)對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位和精度等。(2)對數(shù)據(jù)格式的約束。(3)對取值范圍的約束。(4)對空值的約束。 第5章北京林業(yè)大學 信息學院5.2 完整性控制5.2.3 完整性約束條

25、件的分類結(jié)構(gòu)的約束即對數(shù)據(jù)之間聯(lián)系的約束。 (1)函數(shù)依賴約束。(2)實體完整性約束。(3)參照完整性約束。(4)統(tǒng)計約束。根據(jù)約束條件:值的約束和結(jié)構(gòu)的約束第5章北京林業(yè)大學 信息學院5.2 完整性控制根據(jù)約束狀態(tài):靜態(tài)約束和動態(tài)約束靜態(tài)約束靜態(tài)約束是指對數(shù)據(jù)庫每一個確定狀態(tài)所應(yīng)滿足的約束條件,是反映數(shù)據(jù)庫狀態(tài)合理性的約束,這是最重要的一類完整性約束。上面介紹的值的約束和結(jié)構(gòu)的約束均屬于靜態(tài)約束。動態(tài)約束動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時,新舊值之間所應(yīng)滿足的約束條件,動態(tài)約束反映的是數(shù)據(jù)庫狀態(tài)變遷的約束。例如,學生年齡在更改時只能增長,職工工資在調(diào)整時不得低于其原來的工資。第5

26、章北京林業(yè)大學 信息學院5.2 完整性控制5.2.4 數(shù)據(jù)完整性的實施聲明式數(shù)據(jù)完整性 聲明式數(shù)據(jù)完整性是將數(shù)據(jù)所需符合的條件融入到對象的定義中,這樣SQL Server會自動確保數(shù)據(jù)符合事先制定的條件。這是實施數(shù)據(jù)完整性的首選。聲明式數(shù)據(jù)完整性的特點是: 通過針對表和字段定義聲明的約束,可使聲明式數(shù)據(jù)完整性成為數(shù)據(jù)定義的一部分。 使用約束、默認值與規(guī)則實施聲明式數(shù)據(jù)完整性。 第5章北京林業(yè)大學 信息學院5.2 完整性控制程序化數(shù)據(jù)完整性如果所需符合的條件以及該條件的實施均通過所編寫的程序代碼完成,則這種形式的數(shù)據(jù)完整性稱為程序化數(shù)據(jù)完整性。程序化數(shù)據(jù)完整性的特點是:程序化數(shù)據(jù)完整性可以通過相

27、關(guān)的程序語言及工具在客戶端或服務(wù)器端實施。 SQL Server可以使用存儲過程或觸發(fā)器實施程序化數(shù)據(jù)完整性。第5章北京林業(yè)大學 信息學院5.2 完整性控制5.2.5 規(guī)則規(guī)則(Rule)就是數(shù)據(jù)庫對存儲在表中的列或用戶自定義數(shù)據(jù)類型中的值的規(guī)定和限制。 規(guī)則與其作用的表或用戶自定義數(shù)據(jù)類型是相互獨立的,即表或用戶自定義對象的刪除、修改不會對與之相連的規(guī)則產(chǎn)生影響。 第5章北京林業(yè)大學 信息學院5.2 完整性控制創(chuàng)建規(guī)則 CREATE RULE rule_name AS condition_expression 例5-1 創(chuàng)建學生年齡規(guī)則。CREATE RULE age_ruleAS age

28、= 18 and age = 50 第5章北京林業(yè)大學 信息學院5.2 完整性控制創(chuàng)建規(guī)則后,規(guī)則僅僅是一個存在于數(shù)據(jù)庫中的對象,并未發(fā)生作用。需要將規(guī)則與數(shù)據(jù)庫表或用戶自定義對象聯(lián)系起來,才能達到創(chuàng)建規(guī)則的目的。 所謂綁定就是指定規(guī)則作用于哪個表的哪一列或哪個用戶自定義數(shù)據(jù)類型。 解除規(guī)則與對象的綁定稱為“松綁”。 規(guī)則的綁定與松綁 第5章北京林業(yè)大學 信息學院5.2 完整性控制規(guī)則對已經(jīng)輸入表中的數(shù)據(jù)不起作用。 用存儲過程sp_bindrule綁定規(guī)則 sp_bindrule rulename = rule,objname = object_name, futureonly 例5-2 綁定

29、規(guī)則age_rule 到S表的字段Age。EXEC sp_bindrule age_rule, S.Age第5章北京林業(yè)大學 信息學院5.2 完整性控制用存儲過程sp_unbindrule解除規(guī)則的綁定sp_unbindrule objname = object_name,futureonly 例5-3 解除已綁定到S表的字段Age的規(guī)則age_rule。EXEC sp_unbindrule S.Age 第5章北京林業(yè)大學 信息學院5.2 完整性控制在刪除一個規(guī)則前必須先將與其綁定的對象解除綁定。 刪除規(guī)則 使用DROP RULE命令刪除規(guī)則 DROP RULE rule_name ,.n 例

30、5-4 刪除age_rule規(guī)則。 DROP RULE age_rule第5章北京林業(yè)大學 信息學院5.2 完整性控制5.2.6 默認默認(Default)是用戶在向表中添加數(shù)據(jù)時,如果沒有明確地給出一個值,這時SQL Server所自動使用的值。表的一列或一個用戶自定義數(shù)據(jù)類型只能與一個默認綁定。 創(chuàng)建默認 CREATE DEFAULT default_name AS constant_expression 例5-5 創(chuàng)建出生日期默認birthday_defa。CREATE DEFAULT birthday_defa AS 1990-1-1 第5章北京林業(yè)大學 信息學院5.2 完整性控制默認

31、的綁定與松綁 用存儲過程sp_bindefault 綁定默認 sp_bindefault defname = default,objname = object_name, futureonly 用存儲過程sp_unbindefault 解除默認的綁定 sp_unbindefault objname = object_name ,futureonly 第5章北京林業(yè)大學 信息學院5.2 完整性控制例5-6 綁定默認birthday_defa到數(shù)據(jù)表S的Birthday列上。EXEC sp_bindefault birthday_defa, S.Birthday 例5-7 解除默認birthday

32、_defa與表S的Birthday列的綁定。EXEC sp_unbindefault S.Birthday 刪除默認 使用DROP RULE命令刪除默認 DROP DEFAULT default_name ,.n例5-8 刪除學生生日默認birthday_defa。DROP DEFAULT birthday_defa在刪除一個默認前必須先將與其綁定的對象解除綁定 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 5.3.1 數(shù)據(jù)庫并發(fā)性的含義為了充分利用數(shù)據(jù)庫資源,很多時候數(shù)據(jù)庫用戶都是對數(shù)據(jù)庫系統(tǒng)并行存取數(shù)據(jù),這樣就會發(fā)生多個用戶并發(fā)存取同一數(shù)據(jù)的情況,如果對并發(fā)操作不加控制可能會產(chǎn)生不正

33、確的數(shù)據(jù),破壞數(shù)據(jù)的完整性。并發(fā)控制就是解決這類問題,以保持數(shù)據(jù)庫中數(shù)據(jù)的一致性,即在任何一個時刻數(shù)據(jù)庫都將以相同的形式給用戶提供數(shù)據(jù)。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 5.3.2 事務(wù)(Transaction)* 事務(wù)是數(shù)據(jù)庫系統(tǒng)中執(zhí)行的一個工作單位,它是由用戶定義的一組操作序列。 * 一個事務(wù)可以是一組SQL語句、一條SQL語句或整個程序,一個應(yīng)用程序可以包括多個事務(wù)。 定義事務(wù)的語句有三條:BEGIN TRANSACTION 事務(wù)的開始COMMIT 事務(wù)的提交ROLLBACK 事務(wù)的回滾第5章北京林業(yè)大學 信息學院5.3并發(fā)控制與封鎖 原子性(Atomicity)一個

34、事務(wù)是一個不可分割的工作單位,事務(wù)在執(zhí)行時,應(yīng)該遵守“要么不做,要么全做”(Nothing or All)的原則,即不允許完成部分的事務(wù)。 一致性(Consistency) 事務(wù)對數(shù)據(jù)庫的作用是數(shù)據(jù)庫從一個一致狀態(tài)轉(zhuǎn)變到另一個一致狀態(tài)。所謂數(shù)據(jù)庫的一致狀態(tài)是指數(shù)據(jù)庫中的數(shù)據(jù)滿足完整性約束。 事務(wù)的特征第5章北京林業(yè)大學 信息學院5.3并發(fā)控制與封鎖 隔離性(Isolation) 如果多個事務(wù)并發(fā)地執(zhí)行,應(yīng)像各個事務(wù)獨立執(zhí)行一樣,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。 持久性(Durability) 持久性指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫因故障而受到破壞,DBMS

35、也應(yīng)該能夠恢復。 事務(wù)的特征第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 5.3.3 并發(fā)操作與數(shù)據(jù)的不一致性例5-9 并發(fā)取款操作。假設(shè)存款余額R=1000元,甲事務(wù)T1取走存款100元,乙事務(wù)T2取走存款200元,如果正常操作,即甲事務(wù)T1執(zhí)行完畢再執(zhí)行乙事務(wù)T2,存款余額更新后應(yīng)該是700元。但是如果按照如下順序操作,則會有不同的結(jié)果:(1) 甲事務(wù)T1讀取存款余額R=1000元;(2) 乙事務(wù)T2讀取存款余額R=1000元;(3) 甲事務(wù)T1取走存款100元,修改存款余額R=R-100=900,把R=900寫回到數(shù)據(jù)庫;(4) 乙事務(wù)T2取走存款200元,修改存款余額R=R-20

36、0=800,把R=800寫回到數(shù)據(jù)庫;結(jié)果兩個事務(wù)共取走存款300元,而數(shù)據(jù)庫中的存款卻只少了200元。得到這種錯誤的結(jié)果是由甲乙兩個事務(wù)并發(fā)操作引起的。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 數(shù)據(jù)庫的并發(fā)操作導致的數(shù)據(jù)庫不一致性主要有以下三種:丟失更新(Lost Update) 當兩個事務(wù)T1和T2讀入同一數(shù)據(jù),并發(fā)執(zhí)行修改操作時,T2把T1或T1把T2的修改結(jié)果覆蓋掉,造成了數(shù)據(jù)的丟失更新問題,導致數(shù)據(jù)的不一致。污讀(Dirty Read ) 事務(wù)T1更新了數(shù)據(jù)R,事務(wù)T2讀取了更新后的數(shù)據(jù)R,事務(wù)T1由于某種原因被撤銷,修改無效,數(shù)據(jù)R恢復原值。事務(wù)T2得到的數(shù)據(jù)與數(shù)據(jù)庫的

37、內(nèi)容不一致,這種情況稱為“污讀”。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 不可重讀(Unrepeatable Read) 事務(wù)T1讀取了數(shù)據(jù)R,事務(wù)T2讀取并更新了數(shù)據(jù)R,當事務(wù)T1再讀取數(shù)據(jù)R以進行核對時,得到的兩次讀取值不一致,這種情況稱為“不可重讀”。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 5.3.4 封鎖實現(xiàn)并發(fā)控制的方法主要有兩種:封鎖(Lock)技術(shù)和時標(Timestamping)技術(shù)。 封鎖類型(Lock Type)所謂封鎖就是當一個事務(wù)在對某個數(shù)據(jù)對象(可以是數(shù)據(jù)項、記錄、數(shù)據(jù)集以至整個數(shù)據(jù)庫)進行操作之前,必須獲得相應(yīng)的鎖,以保證數(shù)據(jù)操作的正確性

38、和一致性。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 基本的封鎖類型有兩種 排它型封鎖(Exclusive Lock)排它型封鎖又稱寫封鎖,簡稱為X封鎖,它采用的原理是禁止并發(fā)操作。 共享封鎖(Share Lock) 共享封鎖又稱讀封鎖,簡稱為S鎖,它采用的原理是允許其他用戶對同一數(shù)據(jù)對象進行查詢,但不能對該數(shù)據(jù)對象進行修改。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 封鎖協(xié)議(Lock Protocol) 封鎖可以保證合理地進行并發(fā)控制,保證數(shù)據(jù)的一致性。 在封鎖時,要考慮一定的封鎖規(guī)則,例如,何時開始封鎖、封鎖多長時間、何時釋放等,這些封鎖規(guī)則稱為封鎖協(xié)議。 第5章北京

39、林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 通過三級封鎖協(xié)議在不同程度上給予解決 :一級封鎖協(xié)議 事務(wù)T在修改數(shù)據(jù)對象之前必須對其加X鎖,直到事務(wù)結(jié)束。 二級封鎖協(xié)議 在一級封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后釋放S鎖。 三級封鎖協(xié)議 在一級封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后并不釋放S鎖,而直到事務(wù)T結(jié)束才釋放。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 封鎖粒度(Lock Granularity) 封鎖粒度指封鎖的單位。 根據(jù)對數(shù)據(jù)的不同處理,封鎖的對象可以是這樣一些邏輯單元:字段、記錄、表、數(shù)據(jù)庫等,封鎖的數(shù)

40、據(jù)對象的大小叫封鎖粒度。 封鎖粒度越小,系統(tǒng)中能夠被封鎖的對象就越多,并發(fā)度越高,但封鎖機構(gòu)復雜,系統(tǒng)開銷也就越大。封鎖粒度越大,系統(tǒng)中能夠被封鎖的對象就越少,并發(fā)度越低,封鎖機構(gòu)越簡單,相應(yīng)系統(tǒng)開銷也就越小。 第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 死鎖和活鎖 活鎖(Livelock) 當某個事務(wù)請求對某一數(shù)據(jù)進行排他性封鎖時,由于其他事務(wù)對該數(shù)據(jù)的操作而使這個事務(wù)處于永久等待狀態(tài),這種狀態(tài)稱為活鎖。死鎖(Deadlock)在同時處于等待狀態(tài)的兩個或多個事務(wù)中,其中的每一個在它能夠進行之前,都等待著某個數(shù)據(jù),而這個數(shù)據(jù)已被它們中的某個事務(wù)所封鎖,這種狀態(tài)稱為死鎖。第5章北京林業(yè)大

41、學 信息學院5.3 并發(fā)控制與封鎖 死鎖產(chǎn)生的條件 互斥條件:一個數(shù)據(jù)對象一次只能被一個事務(wù)所使用,即對數(shù)據(jù)的封鎖采用排他式。不可搶占條件:一個數(shù)據(jù)對象只能被占有它的事務(wù)所釋放,而不能被別的事務(wù)強行搶占。部分分配條件:一個事務(wù)已經(jīng)封鎖分給它的數(shù)據(jù)對象,但仍然要求封鎖其他數(shù)據(jù)。循環(huán)等待條件:允許等待其他事務(wù)釋放數(shù)據(jù)對象,系統(tǒng)處于加鎖請求相互等待的狀態(tài)。第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 死鎖的預防 一次加鎖法: 一次加鎖法是每個事物必須將所有要使用的數(shù)據(jù)對象全部一次加鎖,并要求加鎖成功,只要一個加鎖不成功,表示本次加鎖失敗,則應(yīng)該立即釋放所有加鎖成功的數(shù)據(jù)對象,然后重新開始加鎖。

42、順序加鎖法:預先對所有可加鎖的數(shù)據(jù)對象規(guī)定一個加鎖順序,每個事務(wù)都需要按此順序加鎖,在釋放時,按逆序進行。第5章北京林業(yè)大學 信息學院5.3 并發(fā)控制與封鎖 死鎖的診斷與解除 死鎖的診斷與解除 如果在事務(wù)依賴圖中沿著箭頭方向存在一個循環(huán),那么死鎖的條件就形成了,系統(tǒng)就會出現(xiàn)死鎖。 選擇一個處理死鎖代價最小的事務(wù),將其撤銷以解除死鎖。 數(shù)據(jù)RT1T2 事務(wù)依賴圖 第5章北京林業(yè)大學 信息學院5.4 數(shù)據(jù)庫的恢復 5.4.1 數(shù)據(jù)庫恢復的含義 系統(tǒng)必須具有檢測故障并把數(shù)據(jù)從錯誤狀態(tài)中恢復到某一正確狀態(tài)的功能,這就是數(shù)據(jù)庫的恢復。第5章北京林業(yè)大學 信息學院5.4 數(shù)據(jù)庫的恢復 5.4.2 數(shù)據(jù)庫恢復的原理及其實現(xiàn)技術(shù) 恢復系統(tǒng)應(yīng)該提供兩種類型的功能:一種是生成冗余數(shù)據(jù),即對可能發(fā)生的故障做某些準備;另一種是冗余重建,即利用這些冗余數(shù)據(jù)恢復數(shù)據(jù)庫。 生成冗余數(shù)據(jù)最常用的技術(shù)是登記日志文件和數(shù)據(jù)轉(zhuǎn)儲,在實際應(yīng)用中,這兩種方法常常結(jié)合在一起使用。第5章北京林業(yè)大學 信息學院5.4 數(shù)據(jù)庫的恢復 登記日志文件 典型的日志文件主要包含以下內(nèi)容:(1)更新數(shù)據(jù)庫的事務(wù)標識(標明是哪個事務(wù));(2)操作的類型(插入、刪除或修改

溫馨提示

  • 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

提交評論