




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
北京林業(yè)大學(xué)數(shù)據(jù)庫原理與應(yīng)用數(shù)據(jù)庫安全內(nèi)容概述背景企業(yè)的業(yè)務(wù)過程信息國家機構(gòu)的業(yè)務(wù)管理信息國防情報等具有密級的信息數(shù)據(jù)庫······管理存儲和使用存儲和使用············DBMS為了適應(yīng)和滿足數(shù)據(jù)共享的環(huán)境和要求,DBMS要保證整個系統(tǒng)的正常運轉(zhuǎn),防止數(shù)據(jù)泄露,惡意修改,不一致產(chǎn)生,產(chǎn)生問題后的及時恢復(fù),需要一整套而有效的保護措施。數(shù)據(jù)庫安全內(nèi)容概述DBMS對數(shù)據(jù)安全的保護功能安全性控制完整性控制并發(fā)性控制數(shù)據(jù)庫恢復(fù)數(shù)據(jù)庫安全內(nèi)容針對的問題數(shù)據(jù)庫安全內(nèi)容概述安全性控制完整性控制并發(fā)性控制數(shù)據(jù)庫恢復(fù)防止數(shù)據(jù)泄露,惡意修改產(chǎn)生問題后的及時恢復(fù)防止數(shù)據(jù)的不一致性數(shù)據(jù)庫安全性含義、控制方法及SQLServer安全性機制數(shù)據(jù)庫安全性含義安全性控制的一般方法SQLServer數(shù)據(jù)庫安全性機制總結(jié)本章目錄CONTENTS數(shù)據(jù)庫安全性含義數(shù)據(jù)庫安全性含義法律、社會和倫理方面環(huán)境控制方面政策方面計算機軟硬件的安全性運行方面系統(tǒng)軟件方面物理控制方面數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止非法使用所造成的數(shù)據(jù)泄露、更改或破壞。安全性控制的一般方法編寫合法的程序繞過DBMS的安全管理機制,直接在操作系統(tǒng)上,讀取、修改相關(guān)數(shù)據(jù)。用戶登錄數(shù)據(jù)庫管理系統(tǒng)后,使用了不在其權(quán)限范圍中的數(shù)據(jù)?!踩钥刂剖侵敢M可能地杜絕所有可能的數(shù)據(jù)庫非法訪問。安全性控制的主要問題面臨的問題:安全性不僅是數(shù)據(jù)庫層面的問題,在計算機系統(tǒng)中都存在這個問題。在計算機系統(tǒng)中,安全措施是通過層層設(shè)置的,安全模型的層次如下:安全性控制模型用戶DBMS數(shù)據(jù)庫操作系統(tǒng)安全控制模型的層次用戶標(biāo)識和鑒定數(shù)據(jù)庫安全性控制的手段用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密數(shù)據(jù)審計數(shù)據(jù)庫安全性控制手段由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識。每次用戶要求進入系統(tǒng)時,由系統(tǒng)進行核實,通過鑒定后才提供機器的使用權(quán)。用戶標(biāo)識和鑒定手段概述用戶提供標(biāo)識系統(tǒng)用戶提供標(biāo)識存儲合法標(biāo)識比較服務(wù)器級別安全性管理SQLServer登錄賬號的相關(guān)操作SQLServer身份驗證模式SQLServer服務(wù)器角色總結(jié)主要內(nèi)容CONTENTSSQLServer登錄賬號的相關(guān)操作登錄賬號和用戶賬號在SQLServer中,賬號有兩種:登錄賬號(LoginName)數(shù)據(jù)庫的用戶賬號(UserName)數(shù)據(jù)庫及其管理系統(tǒng)服務(wù)器表和視圖登錄賬號數(shù)據(jù)庫的用戶賬號創(chuàng)建登錄賬號的過程創(chuàng)建登錄賬號的用戶名和密碼等登錄標(biāo)識信息。創(chuàng)建登錄賬號的服務(wù)器角色創(chuàng)建登錄賬號的登錄名、驗證模式和密碼步驟如下:‘對象資源管理器’;展開‘安全性’節(jié)點;右鍵單擊‘登錄名’;選擇‘新建登錄名’;輸入登錄名;選擇身份驗證模式;輸入密碼并確認(rèn);選擇密碼策略。指定登錄賬號的服務(wù)器角色步驟如下:選擇‘服務(wù)器角色’;確定服務(wù)器角色并點擊‘確認(rèn)’。修改和刪除登錄賬號修改登錄賬號在‘對象資源管理器’中展開‘安全性’節(jié)點下面的‘登錄名’節(jié)點,右鍵選擇要修改的登錄名,選擇彈出菜單中的‘屬性’菜單就可以對登錄賬號進行修改。刪除登錄賬號在‘對象資源管理器’中展開‘安全性’節(jié)點下面的‘登錄名’節(jié)點,右鍵選擇要刪除的登錄名,選擇彈出菜單中的‘刪除’菜單即可刪除指定的登錄賬號。SQLServer身份驗證模式SQLServer身份驗證方法的設(shè)置步驟如下:‘對象資源管理器’中右鍵‘服務(wù)器’彈出菜單中選擇‘屬性’‘服務(wù)器屬性’窗口中‘選擇左側(cè)的‘安全性’選擇身份驗證模式重啟SQLServer兩種主要的驗證模式Windows身份驗證使用Windows操作系統(tǒng)進行用戶的登錄身份驗證將驗證用戶的工作讓windows進行。只支持windows環(huán)境的驗證?;旌向炞C方式SQLServer自行進行用戶的登錄身份驗證支持非windows用戶登錄。一般用于各類Web程序應(yīng)用使用數(shù)據(jù)庫的情況。SQLServer服務(wù)器角色SQLServer服務(wù)器角色的查看主要步驟:角色是權(quán)限的集合,將不同權(quán)限根據(jù)業(yè)務(wù)關(guān)系,組成角色。SQLServer默認(rèn)提供的角色如圖所示:默認(rèn)安裝的角色權(quán)限概述數(shù)據(jù)庫管理員不能創(chuàng)建服務(wù)器角色,只能夠?qū)⑵渌巧蛘哂脩籼砑拥椒?wù)器角色中。服務(wù)器角色描
述bulkadmin允許非sysadmin用戶運行BULKINSERT語句dbcreator創(chuàng)建、更改、刪除和還原任何數(shù)據(jù)庫diskadmin管理磁盤文件processadmin終止SQLServer實例中運行的進程public每個SQLServer登錄賬號都屬于public服務(wù)器角色securityadmin管理登錄名及其屬性serveradmin更改服務(wù)器范圍的配置選項和關(guān)閉服務(wù)器setupadmin添加和刪除鏈接的服務(wù)器,并且也可以執(zhí)行某些系統(tǒng)存儲過程sysadmin在服務(wù)器中執(zhí)行任何活動總結(jié)知識點總結(jié)賬號登錄賬號用戶賬號創(chuàng)建方法修改方法刪除方法用戶名驗證模式密碼策略windows混合服務(wù)器角色用一個用戶名或用戶標(biāo)識符來標(biāo)明用戶的身份,系統(tǒng)以此來鑒別用戶的合法性。用戶標(biāo)識和鑒定標(biāo)識的表示方法用戶標(biāo)識和鑒定標(biāo)識的表示方法用戶標(biāo)識符是用戶公開的標(biāo)識,它不足以成為鑒別用戶身份的憑證。通過用戶名和口令來鑒定用戶的方法簡單易行,但用戶名和口令的產(chǎn)生和使用比較簡單,也容易被竊取,因此還可采用更復(fù)雜的方法。用戶存取權(quán)限控制手段概述用戶存取權(quán)限指的是不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限。在數(shù)據(jù)庫系統(tǒng)中,定義用戶存取權(quán)限稱為授權(quán)。這些授權(quán)定義經(jīng)過編譯后以一張授權(quán)表的形式存放在數(shù)據(jù)字典中。實施方法建立授權(quán)表用戶標(biāo)識數(shù)據(jù)對象操作類型用戶存取權(quán)限控制存取權(quán)限的例子對于授權(quán)的使用,一個衡量授權(quán)機制的重要指標(biāo)就是授權(quán)粒度,即可以定義的數(shù)據(jù)對象的范圍,在關(guān)系數(shù)據(jù)庫中,授權(quán)粒度包括關(guān)系、記錄或?qū)傩浴J跈?quán)粒度越細(xì),授權(quán)子系統(tǒng)就越靈活,能夠提供的安全性就越完善。數(shù)據(jù)對象操作類型模式模式建立、修改、檢索外模式建立、修改、檢索內(nèi)模式建立、修改、檢索數(shù)據(jù)表查找、插入、修改、刪除屬性列查找、插入、修改、刪除為不同的用戶定義不同的視圖,可以限制各個用戶的訪問范圍。視圖是邏輯存在的,其修改操作會受到限制。定義視圖手段概述實施方法學(xué)生表學(xué)生選課表學(xué)生看到的成績單老師看到的成績單虛擬的視圖替換方法,該方法使用密鑰將明文中的每一個字符轉(zhuǎn)換為密文中的字符。轉(zhuǎn)換方法,該方法將明文中的字符按不同的順序重新排列。數(shù)據(jù)加密實施方法通常將這兩種方法結(jié)合起來使用,就可以達(dá)到相當(dāng)高的安全程度。手段概述加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)加密成為不可直接識別的格式,數(shù)據(jù)以密文的形式存儲和傳輸。數(shù)據(jù)審計手段概述審計功能是一種監(jiān)視措施,它跟蹤記錄有關(guān)數(shù)據(jù)的訪問活動。審計追蹤把用戶對數(shù)據(jù)庫的所有操作自動記錄下來,存放在一個特殊文件中,即審計日志中。操作類型(如修改、查詢等),操作終端標(biāo)識與操作者標(biāo)識,操作日期和時間,操作所涉及到的相關(guān)數(shù)據(jù)(如基本表、視圖、記錄、屬性等),數(shù)據(jù)的前象和后象等。記錄的內(nèi)容一般包括:SQLServer數(shù)據(jù)安全性機制三層安全結(jié)構(gòu)結(jié)合安全性模式以及安全性控制手段,SQLServer使用了2層結(jié)構(gòu)的數(shù)據(jù)庫安全機制,表現(xiàn)為:用戶提供標(biāo)識服務(wù)器數(shù)據(jù)庫及其管理系統(tǒng)具體數(shù)據(jù)庫及其對象級別安全性表和視圖總結(jié)總結(jié)安全性控制的一般方法用戶標(biāo)識與鑒定用戶存取權(quán)限控制定義視圖數(shù)據(jù)加密數(shù)據(jù)審計SQLServer數(shù)據(jù)安全機制服務(wù)器級別的安全性具體數(shù)據(jù)庫及其對象的安全性SQLServer具體數(shù)據(jù)庫級安全管理數(shù)據(jù)庫用戶賬號的相關(guān)操作數(shù)據(jù)庫角色用戶權(quán)限管理總結(jié)CONTENTS主要內(nèi)容數(shù)據(jù)庫用戶賬號的相關(guān)操作用戶賬號要在特定的數(shù)據(jù)庫內(nèi)創(chuàng)建,并關(guān)聯(lián)一個登錄賬號(當(dāng)一個數(shù)據(jù)庫的用戶創(chuàng)建時,必須關(guān)聯(lián)一個登錄賬號)。每個登錄賬號在一個數(shù)據(jù)庫中只能有一個用戶賬號,但每個登錄賬號可以在不同的數(shù)據(jù)庫中各有一個用戶賬號。數(shù)據(jù)庫用戶賬號登錄賬號用戶賬號用戶賬號用戶賬號創(chuàng)建賬戶的方式使用‘對象資源管理器’使用SQL語句創(chuàng)建數(shù)據(jù)庫用戶賬號1.打開‘對象資源管理器’2.開展要創(chuàng)建用戶的數(shù)據(jù)庫3.找到其下的‘安全性’節(jié)點創(chuàng)建數(shù)據(jù)庫用戶賬號使用‘對象資源管理器’4.右鍵點擊出現(xiàn)的用戶文件夾1.右鍵‘用戶’文件夾2.點擊‘新建用戶’3.添加‘常規(guī)選項卡’中信息創(chuàng)建數(shù)據(jù)庫用戶賬號使用‘對象資源管理器’登錄名:對應(yīng)的登錄賬號默認(rèn)架構(gòu):該用戶所屬架構(gòu)擁有的架構(gòu)查看和設(shè)置該用戶擁有的架構(gòu)。創(chuàng)建數(shù)據(jù)庫用戶賬號使用‘對象資源管理器’使用用戶映射查看數(shù)據(jù)庫用戶賬號和登錄賬號的綁定關(guān)系。創(chuàng)建數(shù)據(jù)庫用戶賬號使用‘對象資源管理器’user_name:數(shù)據(jù)庫用戶名。login_name:登錄用戶名。創(chuàng)建數(shù)據(jù)庫用戶賬號使用語句創(chuàng)建CreateUseruser_name
[{For|From}{Loginlogin_name|Certificatecert_name|AsymmetricKeyasym_key_name}|WithoutLogin]和創(chuàng)建用戶的方法類似,找到數(shù)據(jù)庫下的‘安全’文件夾節(jié)點。在文件夾下找到所要修改的用戶。右鍵該用戶,選擇屬性,則可以按照對話框修改用戶信息。修改步驟如下:修改和刪除數(shù)據(jù)庫用戶賬號和創(chuàng)建用戶的方法類似,找到數(shù)據(jù)庫下的‘安全’文件夾節(jié)點。在文件夾下找到所要刪除的用戶。右鍵該用戶,選擇刪除對象,則可以刪除用戶信息。刪除步驟如下:修改和刪除數(shù)據(jù)庫用戶賬號數(shù)據(jù)庫角色數(shù)據(jù)庫角色概述角色名稱權(quán)限public最基本的數(shù)據(jù)庫角色db_accessadmin可以添加或刪除用戶標(biāo)識db_backupoperator可以發(fā)出DBCC、CHECKPOINT和BACKUP語句db_datareader可以選擇(取)數(shù)據(jù)庫內(nèi)任何用戶表中的所有數(shù)據(jù)db_datawriter可以更改數(shù)據(jù)庫內(nèi)任何用戶表中的所有數(shù)據(jù)db_ddladmin可以發(fā)出所有DDL語句,但不能發(fā)出GRANT(授權(quán))、REVOKE或DENY語句db_denydatareader不能選擇(?。?shù)據(jù)庫內(nèi)任何用戶表中的任何數(shù)據(jù)db_denydatawriter不能更改數(shù)據(jù)庫內(nèi)任何用戶表中的任何數(shù)據(jù)db_owner在數(shù)據(jù)庫中有全部權(quán)限db_securityadmin
可以管理全部權(quán)限、對象所有權(quán)、角色和角色成員資格用戶權(quán)限管理權(quán)限管理分類用戶對數(shù)據(jù)庫的權(quán)限操作系統(tǒng)權(quán)限對象權(quán)限用戶權(quán)限管理分類創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表、存儲過程等。用戶對特定數(shù)據(jù)庫對象操作對表和視圖的操作總結(jié)數(shù)據(jù)庫安全知識點總結(jié)創(chuàng)建用戶的方式修改用戶的方式刪除用戶的方式用戶權(quán)限管理數(shù)據(jù)庫完整性含義、描述方式及分類方式數(shù)據(jù)庫完整性含義數(shù)據(jù)庫完整性的描述方式數(shù)據(jù)庫完整性約束的分類總結(jié)本章目錄CONTENTS數(shù)據(jù)庫完整性的含義數(shù)據(jù)庫完整性的定義確保數(shù)據(jù)庫中的數(shù)據(jù)數(shù)據(jù)庫的完整性數(shù)據(jù)的正確性數(shù)據(jù)的有效性數(shù)據(jù)的相容性數(shù)據(jù)庫完整性的定義防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中加入不符合語義的數(shù)據(jù)。完整性措施的防范對象是不合語義的數(shù)據(jù)。在安全性的基礎(chǔ)上,完整性可以理解為:數(shù)據(jù)庫完整性的描述方式使用規(guī)則描述數(shù)據(jù)庫完整性的方法違約響應(yīng):規(guī)定系統(tǒng)如果發(fā)現(xiàn)用戶發(fā)出的操作請求違背了完整性約束條件,應(yīng)該采取一定的動作來保證數(shù)據(jù)的完整性,即違約時要做的事情。WHEN約束條件:規(guī)定系統(tǒng)檢查用戶發(fā)出的操作請求違背了什么樣的完整性約束條件。觸發(fā)條件:規(guī)定系統(tǒng)什么時候使用規(guī)則來檢查數(shù)據(jù)。ConditionWhat描述完整性的3個部分規(guī)則的執(zhí)行時間立即執(zhí)行:在執(zhí)行多個語句構(gòu)成的事務(wù)時,執(zhí)行完用戶事務(wù)的一條語句后,系統(tǒng)立即對數(shù)據(jù)進行完整性條件檢查。延遲執(zhí)行:執(zhí)行完事務(wù)的所有語句后,系統(tǒng)才數(shù)據(jù)進行完整性條件檢查。規(guī)則的執(zhí)行時間完整性的形式化描述一條完整性可以用一個五元組(D,O,A,C,P)來形式化地表示代表約束作用的數(shù)據(jù)對象??梢允顷P(guān)系、元組和列三種對象;D(Data):代表觸發(fā)完整性檢查的數(shù)據(jù)庫操作,即當(dāng)用戶發(fā)出什么操作請求時需要檢查該完整性規(guī)則,是立即執(zhí)行還是延遲執(zhí)行;O(Operation)代表數(shù)據(jù)對象必須滿足的語義約束,這是規(guī)則的主體;A(Assertion)完整性的形式化描述代表選擇A作用的數(shù)據(jù)對象值的謂詞;C(Condition)代表違反完整性規(guī)則時觸發(fā)執(zhí)行的操作過程。P(Procedure)完整性的形式化舉例例如,對于“學(xué)號(SNo)不能為空”的這條完整性約束中,D、O、A、C、P的含義分別如下:D:代表約束作用的數(shù)據(jù)對象為SNo屬性;O:當(dāng)用戶插入或修改數(shù)據(jù)時需要檢查該完整性規(guī)則;A:SNo不能為空;C:A可作用于所有記錄的SNo屬性;P:拒絕執(zhí)行用戶請求。數(shù)據(jù)庫完整性約束的分類數(shù)據(jù)庫完整性約束的分類根據(jù)約束條件:值的約束和結(jié)構(gòu)的約束(1)對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位和精度等。例如:規(guī)定學(xué)生的姓名數(shù)據(jù)類型為字符型,長度為8值的約束即對數(shù)據(jù)類型、數(shù)據(jù)格式、取值范圍和空值等進行規(guī)定數(shù)據(jù)庫完整性約束的分類(2)對數(shù)據(jù)格式的約束。例如:規(guī)定出生日期的格式為YY.MM.DD(3)對取值范圍的約束。例如:月份的取值范圍為1~12(4)對空值的約束,空值表示未定義或者未知數(shù)值。例如,在SC關(guān)系中,學(xué)號和課程號不可以為空。數(shù)據(jù)庫完整性約束的分類結(jié)構(gòu)的約束即對數(shù)據(jù)之間聯(lián)系的約束(1)函數(shù)依賴約束。例如:2NF,3NF和BCNF需要滿足的函數(shù)依賴。(2)實體完整性約束。例如:在學(xué)生關(guān)系中,主碼學(xué)號不能為空。(3)參照完整性約束。例如:在學(xué)生關(guān)系中,外碼系別的約束。(4)統(tǒng)計約束。例如:規(guī)定某一個的數(shù)值不得高于這一列的平均值等。數(shù)據(jù)庫完整性約束的分類根據(jù)約束狀態(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)約束數(shù)據(jù)庫完整性約束的分類根據(jù)約束狀態(tài):靜態(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)變遷的約束。例如,學(xué)生年齡在更改時只能增長,職工工資在調(diào)整時不得低于其原來的工資。動態(tài)約束總結(jié)知識點總結(jié)含義描述方式形式化表達(dá)分類觸發(fā)條件約束條件違約條件D,O,A,C,P值和結(jié)構(gòu)靜態(tài)和動態(tài)數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性的實施規(guī)則默認(rèn)總結(jié)本章目錄CONTENTS規(guī)則使用規(guī)則進行數(shù)據(jù)庫完整性控制規(guī)則(Rule)就是數(shù)據(jù)庫對存儲在表中的列或用戶自定義數(shù)據(jù)類型中的值的規(guī)定和限制。規(guī)則與其作用的表或用戶自定義數(shù)據(jù)類型是相互獨立的,即表或用戶自定義對象的刪除、修改不會對與之相連的規(guī)則產(chǎn)生影響。規(guī)則和約束可以同時使用,表的列可以有一個規(guī)則及多個check約束。規(guī)則的使用步驟創(chuàng)建規(guī)則將規(guī)則綁定到數(shù)據(jù)庫的對象上,或者將規(guī)則從數(shù)據(jù)庫的對象上松綁。CREATERULErule_nameAScondition_expression創(chuàng)建規(guī)則規(guī)則的使用步驟CREATERULEage_ruleAS@age>=18and@age<=50【例】創(chuàng)建學(xué)生年齡規(guī)則規(guī)則的使用步驟創(chuàng)建規(guī)則將規(guī)則綁定到數(shù)據(jù)庫的對象上,或者將規(guī)則從數(shù)據(jù)庫的對象上松綁。創(chuàng)建規(guī)則后,規(guī)則僅僅是一個存在于數(shù)據(jù)庫中的對象,并未發(fā)生作用。需要將規(guī)則與數(shù)據(jù)庫表或用戶自定義對象聯(lián)系起來,才能達(dá)到創(chuàng)建規(guī)則的目的。所謂綁定就是指定規(guī)則作用于哪個表的哪一列或哪個用戶自定義數(shù)據(jù)類型。解除規(guī)則與對象的綁定稱為“松綁”。綁定規(guī)則和松綁規(guī)則的方法sp_bindrule[@rulename=]'rule',[@objname=]'object_name'[,'futureonly’][例]綁定規(guī)則age_rule到S表的字段Age。EXECsp_bindrule'age_rule','S.Age‘用存儲過程sp_bindrule綁定規(guī)則規(guī)則對已經(jīng)輸入表中的數(shù)據(jù)不起作用。綁定規(guī)則和松綁規(guī)則的方法用存儲過程sp_unbindrule松綁規(guī)則的綁定sp_unbindrule[@objname=]'object_name'[,'futureonly'][例]解除已綁定到S表的字段Age的規(guī)則age_rule。EXECsp_unbindrule'S.Age'刪除規(guī)則的方法刪除規(guī)則使用DROPRULE命令刪除規(guī)則DROPRULE{rule_name}[,...n][例]刪除age_rule規(guī)則。DROPRULEage_rule在刪除一個規(guī)則前必須先將與其綁定的對象解除綁定。默認(rèn)默認(rèn)的定義及創(chuàng)建方法默認(rèn)(Default)是向用戶輸入記錄時沒有指定具體數(shù)據(jù)的列中自動插入的數(shù)據(jù)。表的一列或一個用戶自定義數(shù)據(jù)類型只能與一個默認(rèn)綁定。默認(rèn)的定義及創(chuàng)建方法創(chuàng)建默認(rèn)綁定默認(rèn)到數(shù)據(jù)庫中的對象默認(rèn)的使用步驟默認(rèn)的定義及創(chuàng)建方法創(chuàng)建默認(rèn)CREATEDEFAULTdefault_nameASconstant_expression[例]創(chuàng)建出生日期默認(rèn)birthday_defa。CREATEDEFAULTbirthday_defaAS'1978-1-1'默認(rèn)的查看、綁定和松綁使用sp_helptext存儲過程可以查看默認(rèn)的信息。[例]查看默認(rèn)birthday_defa。EXECsp_helptextbirthday_defa查看默認(rèn)默認(rèn)的查看、綁定和松綁默認(rèn)的綁定與松綁用存儲過程sp_bindefault綁定默認(rèn)sp_bindefault[@defname=]'default', [@objname=]'object_name' [,'futureonly']用存儲過程sp_unbindefault解除默認(rèn)的綁定sp_unbindefault[@objname=]'object_name'[,'futureonly']默認(rèn)的綁定和松綁的舉例、刪除默認(rèn)[例]綁定默認(rèn)birthday_defa到數(shù)據(jù)表S的Birthday列上。EXECsp_bindefaultbirthday_defa,‘S.[Birthday]’[例]解除默認(rèn)birthday_defa與表S的Birthday列的綁定EXECsp_unbindefault‘S.[Birthday]’默認(rèn)的綁定和松綁的舉例、刪除默認(rèn)使用DROPDEFAULT命令刪除默認(rèn)DROPDEFAULT{default_name}[,…n][例5-21]刪除學(xué)生生日默認(rèn)birthday_defa.DROPDEFGAULTbirthday_defa刪除默認(rèn)在刪除一個默認(rèn)前必須先將與其綁定的對象解除綁定總結(jié)知識點總結(jié)數(shù)據(jù)庫完整性的實施使用規(guī)則使用默認(rèn)數(shù)據(jù)庫并發(fā)性的含義事務(wù)及其特性并發(fā)操作帶來的不一致性封鎖協(xié)議本章目錄CONTENTS總結(jié)數(shù)據(jù)庫并發(fā)性的含義多個用戶同時訪問數(shù)據(jù)庫,如果對并發(fā)操作不加控制可能會產(chǎn)生不正確的數(shù)據(jù),破壞數(shù)據(jù)的完整性。并發(fā)控制就是解決這類問題,以保持?jǐn)?shù)據(jù)庫中數(shù)據(jù)的一致性,即在任何一個時刻數(shù)據(jù)庫都將以相同的形式給用戶提供數(shù)據(jù)。數(shù)據(jù)庫并發(fā)性的含義事務(wù)及其特性事務(wù)的開始事務(wù)是數(shù)據(jù)庫系統(tǒng)中執(zhí)行的一個工作單位,它是由用戶定義的一組操作序列。一個事務(wù)可以是一組SQL語句、一條SQL語句或整個程序,一個應(yīng)用程序可以包括多個事務(wù)。事務(wù)(Transaction)定義事務(wù)的語句有三條:BEGINTRANSACTION事務(wù)的提交COMMIT事務(wù)的回滾ROLLBACK持久性指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是持久的,即使數(shù)據(jù)庫因故障而受到破壞,DBMS也應(yīng)該能夠恢復(fù)。如果多個事務(wù)并發(fā)地執(zhí)行,應(yīng)像各個事務(wù)獨立執(zhí)行一樣,一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。事務(wù)對數(shù)據(jù)庫的作用是數(shù)據(jù)庫從一個一致狀態(tài)轉(zhuǎn)變到另一個一致狀態(tài)。所謂數(shù)據(jù)庫的一致狀態(tài)是指數(shù)據(jù)庫中的數(shù)據(jù)滿足完整性約束。一個事務(wù)是一個不可分割的工作單位,事務(wù)在執(zhí)行時,應(yīng)該遵守“要么不做,要么全做”(NothingorAll)的原則,即不允許完成部分的事務(wù)。事務(wù)(Transaction)原子性(Atomicity)一致性(Consistency)隔離性(Isolation)持久性(Durability)并發(fā)操作帶來的不一致性舉例說明不一致問題的產(chǎn)生過程并發(fā)取款操作。假設(shè)存款余額R=1000元,甲事務(wù)T1取走存款100元,乙事務(wù)T2取走存款200元,如果正常操作,即甲事務(wù)T1執(zhí)行完畢再執(zhí)行乙事務(wù)T2,存款余額更新后應(yīng)該是700元。但是如果按照如下順序操作,則會有不同的結(jié)果:例:舉例說明不一致問題的產(chǎn)生過程結(jié)果兩個事務(wù)共取走存款300元,而數(shù)據(jù)庫中的存款卻只少了200元。得到這種錯誤的結(jié)果是由甲乙兩個事務(wù)并發(fā)操作引起的。甲事務(wù)T1讀取存款余額R=1000元;01乙事務(wù)T2讀取存款余額R=1000元;02甲事務(wù)T1取走存款100元,修改存款余額R=R-100=900,把R=900寫回到數(shù)據(jù)庫;03乙事務(wù)T2取走存款200元,修改存款余額R=R-200=800,把R=800寫回到數(shù)據(jù)庫;04引起數(shù)據(jù)不一致性的主要問題數(shù)據(jù)庫的并發(fā)操作導(dǎo)致的數(shù)據(jù)庫不一致性主要有以下三種:丟失更新(LostUpdate)污讀(DirtyRead)不可重讀(UnrepeatableRead)引起數(shù)據(jù)不一致性的主要問題數(shù)據(jù)庫的并發(fā)操作導(dǎo)致的數(shù)據(jù)庫不一致性主要有以下三種:丟失更新(LostUpdate)時
間事務(wù)T1數(shù)據(jù)庫中R的值事務(wù)T2t0
1000
t1FINDR
t2
FINDRt3R=R-100
t4
R=R-200t5UPDATER
t6
900UPDATERt7
800
當(dāng)兩個事務(wù)T1和T2讀入同一數(shù)據(jù),并發(fā)執(zhí)行修改操作時,T2把T1或T1把T2的修改結(jié)果覆蓋掉,造成了數(shù)據(jù)的丟失更新問題,導(dǎo)致數(shù)據(jù)的不一致。引起數(shù)據(jù)不一致性的主要問題數(shù)據(jù)庫的并發(fā)操作導(dǎo)致的數(shù)據(jù)庫不一致性主要有以下三種:污讀(DirtyRead)時
間事務(wù)T1數(shù)據(jù)庫中R的值事務(wù)T2t0
1000
t1FINDR
t2R=R-100
t3UPDATER
t4
900FINDRt5ROLLBACK
t6
1000事務(wù)T1更新了數(shù)據(jù)R,事務(wù)T2讀取了更新后的數(shù)據(jù)R,事務(wù)T1由于某種原因被撤銷,修改無效,數(shù)據(jù)R恢復(fù)原值。事務(wù)T2得到的數(shù)據(jù)與數(shù)據(jù)庫的內(nèi)容不一致,這種情況稱為“污讀”。引起數(shù)據(jù)不一致性的主要問題數(shù)據(jù)庫的并發(fā)操作導(dǎo)致的數(shù)據(jù)庫不一致性主要有以下三種:不可重讀(UnrepeatableRead)時
間事務(wù)T1數(shù)據(jù)庫中R的值事務(wù)T2t0
1000
t1FINDR
t2
FINDRt3
R=R-200
t4
UPDATERt5
800
事務(wù)T1讀取了數(shù)據(jù)R,事務(wù)T2讀取并更新了數(shù)據(jù)R,當(dāng)事務(wù)T1再讀取數(shù)據(jù)R以進行核對時,得到的兩次讀取值不一致,這種情況稱為“不可重讀”。封鎖協(xié)議封鎖分類所謂封鎖就是當(dāng)一個事務(wù)在對某個數(shù)據(jù)對象(可以是數(shù)據(jù)項、記錄、數(shù)據(jù)集以至整個數(shù)據(jù)庫)進行操作之前,必須獲得相應(yīng)的鎖,以保證數(shù)據(jù)操作的正確性和一致性。封鎖的定義封鎖(Lock)技術(shù)和時標(biāo)(Timestamping)技術(shù),重點介紹封鎖技術(shù)。實現(xiàn)并發(fā)控制的方法主要有兩種:封鎖分類基本的封鎖類型有兩種排它型封鎖又稱寫封鎖,簡稱為X封鎖,它采用的原理是禁止并發(fā)操作。排它型封鎖(ExclusiveLock)共享封鎖又稱讀封鎖,簡稱為S鎖,它采用的原理是允許其他用戶對同一數(shù)據(jù)對象進行查詢,但不能對該數(shù)據(jù)對象進行修改。共享封鎖(ShareLock)封鎖可以保證合理地進行并發(fā)控制,保證數(shù)據(jù)的一致性。在封鎖時,要考慮一定的封鎖規(guī)則,例如,何時開始封鎖、封鎖多長時間、何時釋放等,這些封鎖規(guī)則稱為封鎖協(xié)議。封鎖協(xié)議的定義(LockProtocol)使用封鎖協(xié)議的過程使用封鎖協(xié)議的過程通過三級封鎖協(xié)議在不同程度上給予解決:一級封鎖協(xié)議二級封鎖協(xié)議三級封鎖協(xié)議使用封鎖協(xié)議的過程事務(wù)T在修改數(shù)據(jù)對象之前必須對其加X鎖,直到事務(wù)結(jié)束。一級封鎖協(xié)議時
間事務(wù)T1數(shù)據(jù)庫中R的值事務(wù)T2t0
XLOCKR1000
t1FINDR
t2
XLOCKRt3R=R-100
WAITt4UPDATER
WAITt5UNLOCKX900WAITt6
XLOCKRt7
R=R?200
t8UPDATERt9700UNLOCKX使用封鎖協(xié)議的過程在一級封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后釋放S鎖。二級封鎖協(xié)議時
間事務(wù)T1數(shù)據(jù)庫中R的值事務(wù)T2t0
XLOCKR1000
t1FINDR
t2
R=R-100
t3UPDATER
t4900SLOCKRt5ROLLBACKWAITt6UNLOCKX1000SLOCKRt7
FINDRt8UNLOCKS使用封鎖協(xié)議的過程在一級封鎖協(xié)議的基礎(chǔ)上,另外加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后并不釋放S鎖,而直到事務(wù)T結(jié)束才釋放。三級封鎖協(xié)議時
間事務(wù)T1數(shù)據(jù)庫中R的值事務(wù)T2t01000
t1SLOCKR
t2FINDR
t3
XLOCKRt4COMMIT
WAITt5UNLOCKSWAITt6
XLOCKRt7
FINDRt8R=R?200t9UPDATERt10800UNLOCKX封鎖粒度封鎖粒度指封鎖的單位。根據(jù)對數(shù)據(jù)的不同處理,封鎖的對象可以是這樣一些邏輯單元:字段、記錄、表、數(shù)據(jù)庫等,封鎖的數(shù)據(jù)對象的大小叫封鎖粒度。封鎖粒度的含義封鎖粒度封鎖粒度越小,系統(tǒng)中能夠被封鎖的對象就越多,并發(fā)度越高,但封鎖機構(gòu)復(fù)雜,系統(tǒng)開銷也就越大。封鎖粒度越大,系統(tǒng)中能夠被封鎖的對象就越少,并發(fā)度越低,封鎖機構(gòu)越簡單,相應(yīng)系統(tǒng)開銷也就越小。死鎖和活鎖封鎖所產(chǎn)生的額問題當(dāng)某個事務(wù)請求對某一數(shù)據(jù)進行排它性封鎖時,由于其他事務(wù)對該數(shù)據(jù)的操作而使這個事務(wù)處于永久等待狀態(tài),這種狀態(tài)稱為活鎖?;铈i(Livelock)時
間事務(wù)T1事務(wù)T2事務(wù)T3事務(wù)T4t0LOCKR
t1
LOCKR
t2
WAITLOCKR
t3UNLOCKWAITWAITLOCKRt4
WAITLOCKRWAITt5
WAIT
WAITt6
WAITUNLOCKWAITt7
WAIT
LOCKRt8
WAIT
死鎖和活鎖封鎖所產(chǎn)生的額問題在同時處于等待狀態(tài)的兩個或多個事務(wù)中,其中的每一個在它能夠進行之前,都等待著某個數(shù)據(jù),而這個數(shù)據(jù)已被它們中的某個事務(wù)所封鎖,這種狀態(tài)稱為死鎖。死鎖(Deadlock)時
間事務(wù)T1事務(wù)T2t0LOCKR1
t1
LOCKR2t2
t3LOCKR1t4WAITt5WAITLOCKR1t6WAITWAITt7WAITWAIT解決封鎖的方法死鎖的預(yù)防一次性對所有資源加鎖,如果有一個資源無法加鎖,則等待。一次加鎖法:規(guī)定資源的序號,按序號加鎖順序加鎖法:解決封鎖的方法死鎖的預(yù)防如果在事務(wù)依賴圖中沿著箭頭方向存在一個循環(huán),那么死鎖的條件就形成了,系統(tǒng)就會出現(xiàn)死鎖。選擇一個處理死鎖代價最小的事
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人消費借款質(zhì)押合同7篇
- 反應(yīng)釜盤管的那個啊驗收合同7篇
- 公路運輸合同范本
- 培訓(xùn)機構(gòu)轉(zhuǎn)讓合同書
- 軟件開發(fā)外包合同18930
- 外貿(mào)付款三方協(xié)議合同(2025年版)
- 二零二五年度新能源項目合伙人投資合同
- 二零二五年度臨時項目經(jīng)理聘用與項目風(fēng)險評估合同
- 2025年度高新技術(shù)企業(yè)勞動合同變更三方協(xié)議模板
- 2025年度時尚店鋪轉(zhuǎn)讓合同書模板
- 北師大版二年級下冊數(shù)學(xué)教案(含教學(xué)反思)
- 2024年江蘇省南通市中考英語試卷(含答案解析)
- 2024年秋季新人教版八年級上冊物理全冊教案(2024年新教材)
- 2024年共青團發(fā)展對象、入團積極分子考試題庫及答案
- GJB5765-2006 軍用機場場道工程質(zhì)量評定標(biāo)準(zhǔn)
- SH/T 3227-2024 石油化工裝置固定水噴霧和水(泡沫)噴淋滅火系統(tǒng)技術(shù)標(biāo)準(zhǔn)(正式版)
- 平安銀行的混沌工程實踐
- 2024醫(yī)療機構(gòu)重大事故隱患判定清單(試行)學(xué)習(xí)課件
- 學(xué)校體育學(xué)(唐炎-劉昕版)重點、知識點
- 江蘇省徐州市2023-2024學(xué)年八年級下學(xué)期期中語文試題
- 債務(wù)清償協(xié)議書
評論
0/150
提交評論