數(shù)據(jù)庫完整性與安全_第1頁
數(shù)據(jù)庫完整性與安全_第2頁
數(shù)據(jù)庫完整性與安全_第3頁
數(shù)據(jù)庫完整性與安全_第4頁
數(shù)據(jù)庫完整性與安全_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 第第9 9章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 現(xiàn)代學(xué)習(xí)理念的四大支柱是:現(xiàn)代學(xué)習(xí)理念的四大支柱是:l 學(xué)會認(rèn)知學(xué)會認(rèn)知l 學(xué)會做事學(xué)會做事l 學(xué)會合作學(xué)會合作l 學(xué)會生存學(xué)會生存學(xué)會學(xué)習(xí)學(xué)會學(xué)習(xí)一書的作者:方州一書的作者:方州2School of Information Technology, Jiangxi University

2、of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 第第9章數(shù)據(jù)庫完整性與安全章數(shù)據(jù)庫完整性與安全n 數(shù)據(jù)庫的安全性數(shù)據(jù)庫的安全性:保護(hù)數(shù)據(jù)庫以:保護(hù)數(shù)據(jù)庫以防止不合法使用防止不合法使用所造所造成的成的數(shù)據(jù)泄密、更改或破壞數(shù)據(jù)泄密、更改或破壞。n 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性:防止數(shù)據(jù)庫中存在:防止數(shù)據(jù)庫中存在不符合語義不符合語義的數(shù)的數(shù)據(jù),其防范對象是據(jù),其防范對象是不合語義的、不正確的不合語義的、不正確的數(shù)據(jù)。數(shù)據(jù)。n 主要教學(xué)目標(biāo)如下:主要教學(xué)目標(biāo)如下:l要求熟練掌握要求熟練掌握DBMS安全

3、性保護(hù)的基本原理與方法,并能安全性保護(hù)的基本原理與方法,并能熟練運(yùn)用熟練運(yùn)用SQL中的中的GRANT和和REVOKE語句進(jìn)行授權(quán);語句進(jìn)行授權(quán);l要求熟練掌握要求熟練掌握DBMS完整性保護(hù)措施,并能熟練運(yùn)用完整性保護(hù)措施,并能熟練運(yùn)用SQL中的中的DDL語句進(jìn)行完整性約束定義;語句進(jìn)行完整性約束定義;l要求熟練掌握數(shù)據(jù)庫編程中的要求熟練掌握數(shù)據(jù)庫編程中的游標(biāo)游標(biāo)概念及其使用方法;概念及其使用方法;l熟練運(yùn)用熟練運(yùn)用觸發(fā)器觸發(fā)器完成復(fù)雜的完整性約束和審計功能;完成復(fù)雜的完整性約束和審計功能;l熟練運(yùn)用熟練運(yùn)用存儲過程存儲過程編寫復(fù)雜的業(yè)務(wù)處理和查詢統(tǒng)計功能。編寫復(fù)雜的業(yè)務(wù)處理和查詢統(tǒng)計功能。3S

4、chool of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 目目 錄錄9.4數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性 9.1數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性 9.29.3游標(biāo)游標(biāo) 存儲過程存儲過程觸發(fā)器觸發(fā)器應(yīng)用與安全設(shè)計應(yīng)用與安全設(shè)計 9.59.64School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計

5、數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性 n 安全性問題不是數(shù)據(jù)庫系統(tǒng)所獨有的,所有計算機(jī)安全性問題不是數(shù)據(jù)庫系統(tǒng)所獨有的,所有計算機(jī)系統(tǒng)都有這個問題。系統(tǒng)都有這個問題。n 數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,且為許多最終用數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,且為許多最終用戶戶直接共享直接共享,安全性問題更為突出。,安全性問題更為突出。n 9.1.1 數(shù)據(jù)庫安全的基本概念數(shù)據(jù)庫安全的基本概念n 9.1.2 安全標(biāo)準(zhǔn)安全標(biāo)準(zhǔn)n 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制n 9.1.4 審計機(jī)制審計機(jī)制5School of Informati

6、on Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.1 數(shù)據(jù)庫安全的基本概念數(shù)據(jù)庫安全的基本概念n 數(shù)據(jù)庫數(shù)據(jù)庫安全保護(hù)目標(biāo)安全保護(hù)目標(biāo)是確保只有是確保只有授權(quán)用戶授權(quán)用戶才能訪問才能訪問數(shù)據(jù)庫,未被授權(quán)的人員則無法接近數(shù)據(jù)。數(shù)據(jù)庫,未被授權(quán)的人員則無法接近數(shù)據(jù)。n 安全措施安全措施是指計算機(jī)系統(tǒng)中用戶直接或通過應(yīng)用程是指計算機(jī)系統(tǒng)中用戶直接或通過應(yīng)用程序訪問數(shù)據(jù)庫所要經(jīng)過的序訪問數(shù)據(jù)庫所要經(jīng)過的安全認(rèn)證過程安全認(rèn)證過程。

7、n 數(shù)據(jù)庫安全認(rèn)證過程如圖數(shù)據(jù)庫安全認(rèn)證過程如圖9-1所示所示6School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.1 數(shù)據(jù)庫安全的基本概念數(shù)據(jù)庫安全的基本概念n 用戶標(biāo)識與鑒別用戶標(biāo)識與鑒別(identification & authentication)l當(dāng)用戶訪問數(shù)據(jù)庫時,要先將其當(dāng)用戶訪問數(shù)據(jù)庫時,要先將其用戶名用戶名(user name)與與密密碼碼(password

8、)提交給數(shù)據(jù)庫管理系統(tǒng)進(jìn)行認(rèn)證;提交給數(shù)據(jù)庫管理系統(tǒng)進(jìn)行認(rèn)證;l只有在確定其身份合法后,才能進(jìn)入數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存只有在確定其身份合法后,才能進(jìn)入數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存取操作。取操作。n 數(shù)據(jù)庫安全保護(hù)數(shù)據(jù)庫安全保護(hù)l通過身份認(rèn)證的用戶,擁有了進(jìn)入數(shù)據(jù)庫的通過身份認(rèn)證的用戶,擁有了進(jìn)入數(shù)據(jù)庫的“憑證憑證”;l用戶在數(shù)據(jù)庫中用戶在數(shù)據(jù)庫中執(zhí)行什么操作執(zhí)行什么操作,需通過,需通過“存取控制存取控制”或或視圖視圖進(jìn)行進(jìn)行權(quán)限分配權(quán)限分配。7School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原

9、理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.1 數(shù)據(jù)庫安全的基本概念數(shù)據(jù)庫安全的基本概念l存取控制存取控制:決定用戶對數(shù)據(jù)庫中的:決定用戶對數(shù)據(jù)庫中的哪些對象哪些對象進(jìn)行操作,進(jìn)行進(jìn)行操作,進(jìn)行何種操作何種操作。存取控制機(jī)制主要包括兩部分:存取控制機(jī)制主要包括兩部分:定義用戶權(quán)限定義用戶權(quán)限及將用戶權(quán)限登記到數(shù)據(jù)字典中;及將用戶權(quán)限登記到數(shù)據(jù)字典中;合法權(quán)限檢查合法權(quán)限檢查:當(dāng)用戶發(fā)出操作請求后,當(dāng)用戶發(fā)出操作請求后,DBMS查找數(shù)據(jù)字典查找數(shù)據(jù)字典并根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查,若操作請求超出了定義的并根據(jù)安全規(guī)則進(jìn)行合法權(quán)限檢查,若操作請求

10、超出了定義的權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。權(quán)限,系統(tǒng)將拒絕執(zhí)行此操作。l視圖視圖:通過為不同的用戶定義不同的視圖,達(dá)到:通過為不同的用戶定義不同的視圖,達(dá)到限制用戶訪限制用戶訪問范圍問范圍的目的。的目的。視圖機(jī)制能隱藏用戶無權(quán)存取的數(shù)據(jù)視圖機(jī)制能隱藏用戶無權(quán)存取的數(shù)據(jù),從而自動地對數(shù)據(jù)庫提,從而自動地對數(shù)據(jù)庫提供一定程度的安全保護(hù);供一定程度的安全保護(hù);視圖的主要功能在于提供數(shù)據(jù)庫的視圖的主要功能在于提供數(shù)據(jù)庫的邏輯獨立性邏輯獨立性,其安全性保護(hù)其安全性保護(hù)不太精細(xì),往往不能達(dá)到應(yīng)用系統(tǒng)的要求;不太精細(xì),往往不能達(dá)到應(yīng)用系統(tǒng)的要求;在實際應(yīng)用中,在實際應(yīng)用中,通常將視圖與存取控制機(jī)制結(jié)合起來使用

11、通常將視圖與存取控制機(jī)制結(jié)合起來使用,如,如先通過視圖屏蔽一部分保密數(shù)據(jù),然后進(jìn)一步定義存取權(quán)限。先通過視圖屏蔽一部分保密數(shù)據(jù),然后進(jìn)一步定義存取權(quán)限。8School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.1 數(shù)據(jù)庫安全的基本概念數(shù)據(jù)庫安全的基本概念l審計審計:是一種監(jiān)視措施,用于:是一種監(jiān)視措施,用于跟蹤并記錄跟蹤并記錄有關(guān)數(shù)據(jù)的訪有關(guān)數(shù)據(jù)的訪問活動。問活動。審計追蹤把用戶對數(shù)據(jù)庫的

12、所有操作自動記錄下來,存放在審計追蹤把用戶對數(shù)據(jù)庫的所有操作自動記錄下來,存放在審審計日志計日志(audit log)中;中;審計日志的內(nèi)容一般包括:審計日志的內(nèi)容一般包括:操作類型操作類型(如修改、查詢、刪除如修改、查詢、刪除);操作終端標(biāo)識與操作者標(biāo)識;操作終端標(biāo)識與操作者標(biāo)識;操作日期和時間;操作日期和時間;操作所涉及到的相關(guān)數(shù)據(jù)操作所涉及到的相關(guān)數(shù)據(jù)(如基本表、視圖、記錄、屬性如基本表、視圖、記錄、屬性);數(shù)據(jù)庫的數(shù)據(jù)庫的前映像前映像(即修改前的值即修改前的值)和和后映像后映像(即修改后的值即修改后的值)。利用這些信息,可找出利用這些信息,可找出非法存取數(shù)據(jù)庫非法存取數(shù)據(jù)庫的人、時間和

13、內(nèi)容等;的人、時間和內(nèi)容等;數(shù)據(jù)庫管理系統(tǒng)往往將審計作為可選特征,允許操作者打開或數(shù)據(jù)庫管理系統(tǒng)往往將審計作為可選特征,允許操作者打開或關(guān)閉審計功能。關(guān)閉審計功能。9School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.1 數(shù)據(jù)庫安全的基本概念數(shù)據(jù)庫安全的基本概念n 操作系統(tǒng)安全保護(hù)操作系統(tǒng)安全保護(hù)l通過操作系統(tǒng)提供的安全措施來保證數(shù)據(jù)庫的安全性通過操作系統(tǒng)提供的安全措施來保證數(shù)據(jù)庫的安

14、全性 n 數(shù)據(jù)密碼存儲數(shù)據(jù)密碼存儲l訪問控制和存取控制訪問控制和存取控制可將用戶的可將用戶的應(yīng)用系統(tǒng)訪問范圍應(yīng)用系統(tǒng)訪問范圍最小化最小化和和數(shù)據(jù)對象操作權(quán)限數(shù)據(jù)對象操作權(quán)限最低化,但對一些敏感數(shù)據(jù)進(jìn)行最低化,但對一些敏感數(shù)據(jù)進(jìn)行“加密加密存儲存儲”也是系統(tǒng)提供的安全策略;也是系統(tǒng)提供的安全策略;l數(shù)據(jù)加密數(shù)據(jù)加密(data encryption):防止數(shù)據(jù)庫中數(shù)據(jù)存儲和傳輸:防止數(shù)據(jù)庫中數(shù)據(jù)存儲和傳輸失密的有效手段;失密的有效手段;l加密的基本思想加密的基本思想:先根據(jù)一定的算法將原始數(shù)據(jù):先根據(jù)一定的算法將原始數(shù)據(jù)(即明文即明文, plaintext)加密為不可直接識別的格式加密為不可直接識

15、別的格式(即密文即密文, ciphertext),然后數(shù)據(jù)以密文的方式存儲和傳輸然后數(shù)據(jù)以密文的方式存儲和傳輸。10School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制 n SQL支持支持受控的存取保護(hù)受控的存取保護(hù):l 在在自主存取控制自主存取控制中,用戶對不同的數(shù)據(jù)對象有不同的存取權(quán)限;中,用戶對不同的數(shù)據(jù)對象有不同的存取權(quán)限;l 不同的用戶對同一

16、對象有不同的權(quán)限;不同的用戶對同一對象有不同的權(quán)限;l 用戶可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。用戶可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶。n 自主存取控制自主存取控制通過通過SQL的的GRANT和和REVOKE語句實現(xiàn)。語句實現(xiàn)。n 用戶權(quán)限用戶權(quán)限:是指用戶可以在哪些數(shù)據(jù)對象上進(jìn)行哪些類型:是指用戶可以在哪些數(shù)據(jù)對象上進(jìn)行哪些類型的操作。它由兩個要素組成:的操作。它由兩個要素組成:數(shù)據(jù)對象數(shù)據(jù)對象和和操作類型操作類型。l 定義存取權(quán)限稱為定義存取權(quán)限稱為授權(quán)授權(quán)(authorization);l 授權(quán)粒度授權(quán)粒度可以精細(xì)到可以精細(xì)到字段級字段級,也可以粗到,也可以粗到關(guān)系級關(guān)系級;l 授權(quán)粒度

17、越細(xì),授權(quán)子系統(tǒng)就越靈活,但是系統(tǒng)的開銷也會相應(yīng)授權(quán)粒度越細(xì),授權(quán)子系統(tǒng)就越靈活,但是系統(tǒng)的開銷也會相應(yīng)地增大。地增大。11School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制 n 授權(quán)分為授權(quán)分為數(shù)據(jù)庫級數(shù)據(jù)庫級、表級表級和和列級列級權(quán)限。權(quán)限。l在在SQL Server中權(quán)限只能由擔(dān)任不同中權(quán)限只能由擔(dān)任不同角色角色的用戶來分配;的用戶來分配;l不

18、同類型的用戶有不同的等級;不同類型的用戶有不同的等級;l下圖給出了授權(quán)等級圖。下圖給出了授權(quán)等級圖。12School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制 n GRANT和和REVOKE語句向用戶授予或收回對數(shù)據(jù)語句向用戶授予或收回對數(shù)據(jù)的操作權(quán)限。的操作權(quán)限。n 對對數(shù)據(jù)庫模式的授權(quán)數(shù)據(jù)庫模式的授權(quán)則由則由DBA在創(chuàng)建用戶時實現(xiàn)。在創(chuàng)建用戶時實現(xiàn)。

19、n 創(chuàng)建用戶創(chuàng)建用戶的語法如下:的語法如下: CREATE USER WITH DBA | RESOURCE | CONNECTl該語法在該語法在SQL Server 2000中不支持;中不支持;l在在SQL Server 2000中使用中使用系統(tǒng)存儲過程系統(tǒng)存儲過程sp_addlogin和和sp_adduser實現(xiàn),詳見實驗教材。實現(xiàn),詳見實驗教材。13School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫

20、完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制 n 權(quán)限的授予與收回權(quán)限的授予與收回lGRANT和和REVOKE有兩種權(quán)限:有兩種權(quán)限:目標(biāo)權(quán)限目標(biāo)權(quán)限和和命令權(quán)限命令權(quán)限。l命令權(quán)限命令權(quán)限的授予與收回的授予與收回主要主要指指DDL操作權(quán)限操作權(quán)限,語法分別為:,語法分別為: GRANT all | TO public | REVOKE all | FROM public | 可以是可以是create database、create default、create function、create procedure、create rule、create table、create vi

21、ew、create index、backup database和和backup log等;等;一次可授多種權(quán)限,授多種權(quán)限時,一次可授多種權(quán)限,授多種權(quán)限時,權(quán)限之間用逗號分隔權(quán)限之間用逗號分隔;如果如果具有創(chuàng)建對象的具有創(chuàng)建對象的create權(quán)限權(quán)限,則,則自動具有其創(chuàng)建對象的自動具有其創(chuàng)建對象的修改權(quán)限修改權(quán)限alter和刪除權(quán)限和刪除權(quán)限drop;14School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)

22、庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制 對于對于基本表基本表,自動具有在所創(chuàng)建表上創(chuàng)建、刪除和修改自動具有在所創(chuàng)建表上創(chuàng)建、刪除和修改觸發(fā)器觸發(fā)器的權(quán)限的權(quán)限;修改修改alter和刪除權(quán)限和刪除權(quán)限drop不額外授權(quán);不額外授權(quán);all:表示上述所有權(quán)限;:表示上述所有權(quán)限;public:表示所有的用戶;:表示所有的用戶;:指定的用戶名列表。如果將某組權(quán)限同時授:指定的用戶名列表。如果將某組權(quán)限同時授予多個用戶,則用戶名之間用逗號分隔。予多個用戶,則用戶名之間用逗號分隔。例例9.1 將創(chuàng)建表和視圖的權(quán)限授予將創(chuàng)建表和視圖的權(quán)限授予user01和和user02用戶:用戶:GR

23、ANT create table, create view TO user01, user02例例9.2 從從user02收回創(chuàng)建視圖的權(quán)限:收回創(chuàng)建視圖的權(quán)限:REVOKE create view FROM user0215School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制 l目標(biāo)權(quán)限目標(biāo)權(quán)限的授予和收回的授予和收回主要主要指指DML操作權(quán)限操作權(quán)

24、限,語法分別為:,語法分別為: GRANT all | ON () TO public | WITH GRANT OPTION REVOKE all | ON () FROM public | CASCADE | RESTRICT可以是可以是update、select、insert、delete、excute和和allexcute針對針對存儲過程存儲過程授予執(zhí)行權(quán)限;授予執(zhí)行權(quán)限;update、select、insert、delete針對針對基本表基本表和和視圖視圖授權(quán);授權(quán);all表示所有的權(quán)限。表示所有的權(quán)限。對象對象的的創(chuàng)建者創(chuàng)建者自動擁有該對象的插入、刪除、更新和查詢操作自動擁有該對象

25、的插入、刪除、更新和查詢操作權(quán)限權(quán)限;過程過程的的創(chuàng)建者創(chuàng)建者自動擁有所創(chuàng)建過程的執(zhí)行權(quán)限自動擁有所創(chuàng)建過程的執(zhí)行權(quán)限;16School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制CASCADE:級聯(lián)收回;:級聯(lián)收回;RESTRICT:缺省值,若轉(zhuǎn)賦了權(quán)限,則不能收回;:缺省值,若轉(zhuǎn)賦了權(quán)限,則不能收回;WITH GRANT OPTION:允許將指定對象上

26、的:允許將指定對象上的目標(biāo)權(quán)目標(biāo)權(quán)限限授予其它安全帳戶。授予其它安全帳戶。不允許循環(huán)授權(quán)不允許循環(huán)授權(quán),即不允許將得到的權(quán)限授予其祖,即不允許將得到的權(quán)限授予其祖先,如下圖所示:先,如下圖所示:17School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制n 例例9.3 將將存儲過程存儲過程proSearchBySno的執(zhí)行權(quán)限的執(zhí)行權(quán)限授予用戶授予用戶u1

27、、u2和和u3:GRANT excute ON proSearchBySno TO u1, u2, u3n 例例9.4 將對將對班級表班級表Class的查詢、插入權(quán)限的查詢、插入權(quán)限授予用戶授予用戶u1,且用,且用戶戶u1可以轉(zhuǎn)授其所獲得的權(quán)限給其它用戶:可以轉(zhuǎn)授其所獲得的權(quán)限給其它用戶:GRANT select, insert ON Class TO u1 WITH GRANT OPTIONn 例例9.5 將對將對學(xué)生表的性別、出生日期的查詢和修改權(quán)限學(xué)生表的性別、出生日期的查詢和修改權(quán)限授予授予用戶用戶u3、u4和和u5,且不可以轉(zhuǎn)授權(quán)限:,且不可以轉(zhuǎn)授權(quán)限: GRANT select,

28、update ON Student(sex, birthday) TO u3, u4, u5l如果是對如果是對列列授予權(quán)限,命令項可以包括授予權(quán)限,命令項可以包括select或或update或兩或兩者組合;者組合;l若使用了若使用了select * ,則必須對表的所有列賦予,則必須對表的所有列賦予select權(quán)限。權(quán)限。18School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL

29、存取控制機(jī)制存取控制機(jī)制n 例例9.6 將表將表Score的若干權(quán)限分別授予用戶的若干權(quán)限分別授予用戶u1、u2、u3、u4、u5和和u6。l 將將表表Score的所有權(quán)限的所有權(quán)限授予用戶授予用戶u1,且可以轉(zhuǎn)授權(quán)限,且可以轉(zhuǎn)授權(quán)限GRANT all ON Score TO u1 WITH GRANT OPTIONl 用戶用戶u1將將表表Score的所有權(quán)限的所有權(quán)限授予用戶授予用戶u2,且可以轉(zhuǎn)授權(quán)限,且可以轉(zhuǎn)授權(quán)限GRANT all ON Score TO u2 WITH GRANT OPTIONl 用戶用戶u2將將表表Score的查詢和插入權(quán)限的查詢和插入權(quán)限授予用戶授予用戶u5,且不

30、可以轉(zhuǎn)授,且不可以轉(zhuǎn)授GRANT select, insert ON Score TO u5l 用戶用戶u2將將表表Score的所有權(quán)限的所有權(quán)限授予用戶授予用戶u4,且可以轉(zhuǎn)授權(quán)限,且可以轉(zhuǎn)授權(quán)限GRANT all ON Score TO u4 WITH GRANT OPTIONl 用戶用戶u4將將表表Score的查詢和刪除權(quán)限的查詢和刪除權(quán)限授予用戶授予用戶u6,且可以轉(zhuǎn)授,且可以轉(zhuǎn)授GRANT select, delete ON Score TO u6 WITH GRANT OPTIONl 通過上述的授權(quán),用戶通過上述的授權(quán),用戶u1、u2、u3、u4、u5和和u6分別得到的權(quán)分別得到的

31、權(quán)限如下圖所示:限如下圖所示:19School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制n 例例9.7 用戶用戶u2將轉(zhuǎn)授給用戶將轉(zhuǎn)授給用戶u4的對的對表表Score的修改和查詢權(quán)限的修改和查詢權(quán)限收回:收回:REVOKE select, update ON Score FROM u4 CASCADEl本例必須本例必須級聯(lián)收回級聯(lián)收回,因為,因為u4將該

32、表的查詢和刪除權(quán)限轉(zhuǎn)授將該表的查詢和刪除權(quán)限轉(zhuǎn)授給了給了u6。n 例例9.8 用戶用戶u4將轉(zhuǎn)授給用戶將轉(zhuǎn)授給用戶u6的對的對表表Score的查詢權(quán)限的查詢權(quán)限收回:收回:REVOKE select ON Score FROM u6 n 數(shù)據(jù)庫角色數(shù)據(jù)庫角色l被命名的一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限;被命名的一組與數(shù)據(jù)庫操作相關(guān)的權(quán)限;l角色角色是權(quán)限的集合是權(quán)限的集合,可以為一組,可以為一組具有相同權(quán)限具有相同權(quán)限的用戶創(chuàng)建的用戶創(chuàng)建一個一個角色角色;l角色角色簡化了授權(quán)操作。簡化了授權(quán)操作。20School of Information Technology, Jiangxi Universit

33、y of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制n 角色角色的創(chuàng)建、授權(quán)、轉(zhuǎn)授和收回語句的語法如下:的創(chuàng)建、授權(quán)、轉(zhuǎn)授和收回語句的語法如下:l角色角色的創(chuàng)建,在的創(chuàng)建,在SQL Server 2000中,使用系統(tǒng)存儲過程中,使用系統(tǒng)存儲過程sp_addrole創(chuàng)建角色:創(chuàng)建角色: sp_addrole l給給角色角色授權(quán):授權(quán): GRANT all | ON TO l將將角色角色授予其他的角色或用戶:授予其他的角色或用戶:GRANT TO | WI

34、TH ADMIN OPTIONl角色角色權(quán)限的收回:權(quán)限的收回:REVOKE all | ON FROM l從從角色角色或用戶中收回角色:或用戶中收回角色:REVOKE FROM | 21School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制n 例例9.9 通過角色實現(xiàn)將一組權(quán)限授予一個用戶。通過角色實現(xiàn)將一組權(quán)限授予一個用戶。l創(chuàng)建一個角色創(chuàng)建一個角色

35、 R1:sp_addrole R1l使用使用GRANT語句,使角色語句,使角色R1擁有擁有Student表的表的select、update、insert權(quán)限權(quán)限:GRANT select, update, insert ON Student TO R1l將角色將角色R1授予用戶授予用戶u1、u2和和u3,使他們具有角色,使他們具有角色R1所包含所包含的全部權(quán)限:的全部權(quán)限:GRANT R1 TO u1, u2, u3l通過角色通過角色R1可以一次性地收回已授予用戶可以一次性地收回已授予用戶u1的這的這3個權(quán)限:個權(quán)限:REVOKE R1 FROM u122School of Informati

36、on Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.1.3 SQL存取控制機(jī)制存取控制機(jī)制n 例例9.10 將對表將對表Student的刪除權(quán)限授予角色的刪除權(quán)限授予角色R1,并,并收回查詢權(quán)限。收回查詢權(quán)限。 GRANT delete ON Student TO R1 REVOKE select ON Student FROM R1l通過修改通過修改角色角色的權(quán)限,一次性地將用戶的權(quán)限,一次性地將用戶u2和和u3的權(quán)限全的權(quán)

37、限全部修改了。部修改了。23School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 目目 錄錄9.4數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性 9.1數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性 9.29.3游標(biāo)游標(biāo) 存儲過程存儲過程觸發(fā)器觸發(fā)器應(yīng)用與安全設(shè)計應(yīng)用與安全設(shè)計 9.59.624School of Information Technology, Jiangxi University of Finance & Eco

38、nomics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性 n 數(shù)據(jù)庫系統(tǒng)在運(yùn)行過程中,用戶無論通過什么方式對數(shù)數(shù)據(jù)庫系統(tǒng)在運(yùn)行過程中,用戶無論通過什么方式對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行操作,據(jù)庫中的數(shù)據(jù)進(jìn)行操作,都必須保證數(shù)據(jù)的正確性都必須保證數(shù)據(jù)的正確性。l如,在學(xué)生成績管理數(shù)據(jù)庫如,在學(xué)生成績管理數(shù)據(jù)庫ScoreDB中,必須保證中,必須保證學(xué)生表學(xué)生表Student中的中的學(xué)號是唯一的學(xué)號是唯一的,性別只能取性別只能取“男男”和和“女女”;l在在學(xué)生成績表學(xué)生成績表Score中,中,課程成績必須在課程成績必須在010

39、0分之間分之間,且,且學(xué)號必須在學(xué)號必須在Student表中存在表中存在(即只有是本校的學(xué)生才可以(即只有是本校的學(xué)生才可以選課),等等。選課),等等。n 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性是針對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行是針對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行正確性正確性的維的維護(hù),防止數(shù)據(jù)庫中存在護(hù),防止數(shù)據(jù)庫中存在不符合語義、不正確的數(shù)據(jù)不符合語義、不正確的數(shù)據(jù)。25School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全

40、 9.2數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性 n 為維護(hù)數(shù)據(jù)庫的為維護(hù)數(shù)據(jù)庫的完整性完整性,數(shù)據(jù)庫管理系統(tǒng)提供:,數(shù)據(jù)庫管理系統(tǒng)提供:l完整性約束條件定義完整性約束條件定義完整性約束條件也稱為完整性規(guī)則完整性約束條件也稱為完整性規(guī)則,是數(shù)據(jù)庫中的數(shù)據(jù)必須滿足,是數(shù)據(jù)庫中的數(shù)據(jù)必須滿足的的語義約束條件語義約束條件;由由SQL的的DDL實現(xiàn)實現(xiàn),作為,作為模式的一部分模式的一部分存入數(shù)據(jù)庫中。存入數(shù)據(jù)庫中。l完整性檢查方法完整性檢查方法檢查數(shù)據(jù)是否滿足已定義的完整性約束條件稱為檢查數(shù)據(jù)是否滿足已定義的完整性約束條件稱為完整性檢查完整性檢查;一般在一般在insert、delete、update執(zhí)行執(zhí)行后開始檢查

41、,或后開始檢查,或事務(wù)提交事務(wù)提交時進(jìn)時進(jìn)行檢查。行檢查。l違約處理違約處理若發(fā)現(xiàn)用戶操作違背了完整性約束條件,應(yīng)采取一定的措施,如若發(fā)現(xiàn)用戶操作違背了完整性約束條件,應(yīng)采取一定的措施,如拒絕操作等。拒絕操作等。n 商用商用DBMS都支持完整性控制。都支持完整性控制。定義數(shù)據(jù)庫模式時,除了非定義數(shù)據(jù)庫模式時,除了非常復(fù)雜的約束外,都可以很明確地對完整性約束加以說明常復(fù)雜的約束外,都可以很明確地對完整性約束加以說明。26School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計

42、數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性 n 9.2.1 完整性約束條件完整性約束條件n 9.2.2 實體完整性實體完整性n 9.2.3 參照完整性參照完整性n 9.2.4 用戶自定義完整性用戶自定義完整性n 9.2.5 完整性約束的修改完整性約束的修改 27School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.1 完整

43、性約束條件完整性約束條件n 完整性約束條件完整性約束條件作用的對象作用的對象可以是可以是關(guān)系關(guān)系、元組元組、列列三種:三種:l列約束列約束主要是主要是列的類型、取值范圍、精度、是否允許空值列的類型、取值范圍、精度、是否允許空值等的約束條件;等的約束條件;l元組約束元組約束是元組中是元組中屬性間聯(lián)系屬性間聯(lián)系的約束;的約束;l關(guān)系約束關(guān)系約束是若干是若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。的約束。n 完整性約束,其狀態(tài)可是完整性約束,其狀態(tài)可是靜態(tài)的靜態(tài)的,也可是,也可是動態(tài)的動態(tài)的。n 靜態(tài)約束靜態(tài)約束:指數(shù)據(jù)庫每一確定狀態(tài)時的數(shù)據(jù)對象所指數(shù)據(jù)庫每一

44、確定狀態(tài)時的數(shù)據(jù)對象所應(yīng)滿足的約束條件。應(yīng)滿足的約束條件。l反映反映數(shù)據(jù)庫狀態(tài)合理性數(shù)據(jù)庫狀態(tài)合理性的約束;的約束;l靜態(tài)約束主要表現(xiàn)在:靜態(tài)約束主要表現(xiàn)在:28School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.1 完整性約束條件完整性約束條件靜態(tài)列級約束靜態(tài)列級約束:對列的取值域的說明,包括以下幾方面:對列的取值域的說明,包括以下幾方面:對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位

45、、精度等;對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等;對數(shù)據(jù)格式的約束;對數(shù)據(jù)格式的約束;對取值范圍或取值集合的約束;對取值范圍或取值集合的約束;對空值的約束;對空值的約束;其他約束。其他約束。靜態(tài)元組約束靜態(tài)元組約束:規(guī)定元組的各個列之間的約束關(guān)系。:規(guī)定元組的各個列之間的約束關(guān)系。靜態(tài)關(guān)系約束靜態(tài)關(guān)系約束:在一個關(guān)系的各個元組之間或者若干關(guān)系之間:在一個關(guān)系的各個元組之間或者若干關(guān)系之間常存在各種聯(lián)系或約束。常見的靜態(tài)關(guān)系約束有:常存在各種聯(lián)系或約束。常見的靜態(tài)關(guān)系約束有:實體完整性約束;實體完整性約束;參照完整性約束;參照完整性約束;函數(shù)依賴約束,大部分函數(shù)依賴約束,大部分函數(shù)

46、依賴函數(shù)依賴約束都在關(guān)系模式中定義;約束都在關(guān)系模式中定義;統(tǒng)計約束,即字段值與關(guān)系中多個元組的統(tǒng)計值之間的約束關(guān)系統(tǒng)計約束,即字段值與關(guān)系中多個元組的統(tǒng)計值之間的約束關(guān)系.29School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.1 完整性約束條件完整性約束條件n 動態(tài)約束動態(tài)約束:指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時的的新、舊值之間新、舊值之間所應(yīng)

47、滿足的約束條件。所應(yīng)滿足的約束條件。l反映反映數(shù)據(jù)庫狀態(tài)變遷數(shù)據(jù)庫狀態(tài)變遷的約束;的約束;l動態(tài)約束主要表現(xiàn)在:動態(tài)約束主要表現(xiàn)在:動態(tài)列級約束動態(tài)列級約束:修改:修改列定義或列值列定義或列值時應(yīng)滿足的約束條件。時應(yīng)滿足的約束條件。修改列定義時的約束修改列定義時的約束。如,將允許空值的列改為不允許空如,將允許空值的列改為不允許空值時,如果該列已存在空值,則拒絕這種修改。值時,如果該列已存在空值,則拒絕這種修改。修改列值時的約束修改列值時的約束。修改列值有時需要參照其舊值,并且修改列值有時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。新舊值之間需要滿足某種約束條件。例如,職工工資調(diào)整不得低

48、于其原來工資,學(xué)生年齡只能例如,職工工資調(diào)整不得低于其原來工資,學(xué)生年齡只能增長等。增長等。30School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.1 完整性約束條件完整性約束條件動態(tài)元組約束動態(tài)元組約束:指修改元組的值時元組中各個字段間需要滿:指修改元組的值時元組中各個字段間需要滿足某種約束條件。足某種約束條件。例如,職工工資調(diào)整時例如,職工工資調(diào)整時新工資不得低于原工資新工資不得低

49、于原工資+工齡工齡*1.5等。等。動態(tài)關(guān)系約束動態(tài)關(guān)系約束:動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的:動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件。限制條件。例如,事務(wù)例如,事務(wù)一致性一致性、原子性原子性等約束條件。等約束條件。n 完整性約束又分為完整性約束又分為立即執(zhí)行立即執(zhí)行的約束和的約束和延遲執(zhí)行延遲執(zhí)行的約束:的約束:l立即執(zhí)行約束立即執(zhí)行約束(immediate CONSTRAINTS):檢查是否違背:檢查是否違背完整性約束的時機(jī)是在完整性約束的時機(jī)是在一條語句一條語句執(zhí)行完后立即檢查執(zhí)行完后立即檢查。l延遲執(zhí)行約束延遲執(zhí)行約束(deferred CONSTRAINTS):需要延遲到

50、:需要延遲到整個整個事務(wù)事務(wù)執(zhí)行結(jié)束后再進(jìn)行檢查執(zhí)行結(jié)束后再進(jìn)行檢查。31School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.1 完整性約束條件完整性約束條件n 在在SQL中,所有的完整性約束,用戶既可以對其中,所有的完整性約束,用戶既可以對其命名命名(使用(使用CONSTRAINT),也可由具體的數(shù)據(jù)),也可由具體的數(shù)據(jù)庫系統(tǒng)取默認(rèn)的名字。庫系統(tǒng)取默認(rèn)的名字。l如果是如果是用戶所命名

51、的約束,修改約束時比較方便用戶所命名的約束,修改約束時比較方便;l如果由系統(tǒng)自動給約束命名,則必須通過訪問系統(tǒng)的數(shù)如果由系統(tǒng)自動給約束命名,則必須通過訪問系統(tǒng)的數(shù)據(jù)字典查到相應(yīng)的約束名稱,才可以對其進(jìn)行修改。據(jù)字典查到相應(yīng)的約束名稱,才可以對其進(jìn)行修改。32School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.2 實體完整性實體完整性n 實體完整性實體完整性要求基本表的要求基本表的主碼值

52、唯一且不允許為空值主碼值唯一且不允許為空值。n 在在SQL中:中:l實體完整性定義使用實體完整性定義使用CREATE TABLE語句中的語句中的PRIMARY KEY短語實現(xiàn);短語實現(xiàn);l或使用或使用ALTER TABLE語句中的語句中的ADD PRIMARY KEY短短語實現(xiàn);語實現(xiàn);l有關(guān)有關(guān)CREATE TABLE、ALTER TABLE語句的語法詳見語句的語法詳見第第3章章3.8節(jié)(節(jié)(P112115)。)。l對對單屬性單屬性構(gòu)成的構(gòu)成的主碼主碼可定義為可定義為列級約束列級約束,也可定義為,也可定義為表級表級約束約束;l對對多個屬性多個屬性構(gòu)成的構(gòu)成的主碼主碼,只能定義為,只能定義為表

53、級約束表級約束。33School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.2 實體完整性實體完整性n 實體完整性定義實體完整性定義n 例例9.11 在班級表在班級表Class中將中將classNo定義為主碼。定義為主碼。CREATE TABLE Class ( classNo char(6) NOT NULL, -班級號班級號 className varchar(30) unique N

54、OT NULL, -班級名班級名 institute varchar(30) NOT NULL, -所屬學(xué)院所屬學(xué)院 grade smallint default 0 NOT NULL, -年級年級 classNum tinyint NULL, -班級人數(shù)班級人數(shù) CONSTRAINT ClassPK PRIMARY KEY (classNo) ) l本例將本例將classNo定義為主碼,使用定義為主碼,使用CONSTRAINT短語為該短語為該約束命名為約束命名為ClassPK;l該主碼定義為該主碼定義為表級約束表級約束。34School of Information Technology,

55、Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.2 實體完整性實體完整性n 該例還可按下面的方式定義:該例還可按下面的方式定義:CREATE TABLE Class ( classNo char(6) NOT NULL PRIMARY KEY, -班級號班級號 .) l將主碼將主碼classNo定義為定義為列級約束列級約束,且由,且由系統(tǒng)取約束名稱系統(tǒng)取約束名稱。n 可為約束取名,如:可為約束取名,如:CREATE TABLE Class ( cl

56、assNo char(6) NOT NULL -班級號班級號 CONSTRAINT ClassPK PRIMARY KEY, . ) l將主碼將主碼classNo定義為定義為列級約束列級約束,且,且約束取名為約束取名為ClassPK。35School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.2 實體完整性實體完整性n 例例9.12 在學(xué)生成績表在學(xué)生成績表Score中將中將student

57、No、courseNo定義為主碼定義為主碼。CREATE TABLE Score ( studentNo char(7) NOT NULL, -學(xué)號學(xué)號 courseNo char(3) NOT NULL, -課程號課程號 score numeric(5, 1) default 0 NOT NULL, -成績成績 /* 主碼由兩個屬性構(gòu)成,必須作為主碼由兩個屬性構(gòu)成,必須作為表級完整性表級完整性進(jìn)行定義進(jìn)行定義 */ CONSTRAINT ScorePK PRIMARY KEY (studentNo, courseNo) n 也可以寫成:也可以寫成:CREATE TABLE Score ( s

58、tudentNo char(7) NOT NULL, -學(xué)號學(xué)號 courseNo char(3) NOT NULL, -課程號課程號 score numeric(5, 1) default 0 NOT NULL, -成績成績 /* 主碼由兩個屬性構(gòu)成,必須作為主碼由兩個屬性構(gòu)成,必須作為表級完整性表級完整性進(jìn)行定義進(jìn)行定義 */ PRIMARY KEY (studentNo, courseNo) l由系統(tǒng)自動為約束取名由系統(tǒng)自動為約束取名。36School of Information Technology, Jiangxi University of Finance & Econo

59、mics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.2 實體完整性實體完整性n 實體完整性的檢查和違約處理實體完整性的檢查和違約處理l當(dāng)當(dāng)插入插入或或?qū)χ鞔a列進(jìn)行更新對主碼列進(jìn)行更新操作時,數(shù)據(jù)庫管理系統(tǒng)按照操作時,數(shù)據(jù)庫管理系統(tǒng)按照實體完整性規(guī)則自動進(jìn)行檢查,包括:實體完整性規(guī)則自動進(jìn)行檢查,包括:檢查主碼值是否唯一,如果不唯一則拒絕插入或修改;檢查主碼值是否唯一,如果不唯一則拒絕插入或修改;檢查主碼值的唯一性,可采用檢查主碼值的唯一性,可采用全表掃描全表掃描或或B+樹索引掃描樹索引掃描。全表掃描法:全表掃描法:從外存依次將該表的

60、每一數(shù)據(jù)塊讀入內(nèi)存;從外存依次將該表的每一數(shù)據(jù)塊讀入內(nèi)存;判斷塊中的每一條記錄的主碼值與待插入判斷塊中的每一條記錄的主碼值與待插入(或修改或修改)記錄的主碼記錄的主碼值是否相同;值是否相同;如果相同,則阻止插入如果相同,則阻止插入(或修改或修改)!全表掃描法如圖全表掃描法如圖9-6所示:所示:37School of Information Technology, Jiangxi University of Finance & Economics數(shù)據(jù)庫系統(tǒng)原理與設(shè)計數(shù)據(jù)庫系統(tǒng)原理與設(shè)計第第 9 9 章章 數(shù)據(jù)庫完整性與安全數(shù)據(jù)庫完整性與安全 9.2.2 實體完整性實體完整性l全表掃描法十分耗費(fèi)系統(tǒng)資源。全表掃描法十分耗費(fèi)系統(tǒng)資源。l數(shù)據(jù)庫管理系統(tǒng)一般對主碼建立一個數(shù)據(jù)庫管理系統(tǒng)一般對主碼建立一個B+樹索引。樹索引。l通過通過掃描索引掃描索引來查找基本表中是否存在相同的主碼值。來查找基本表中是否存在相同的主碼值。lB+樹索引掃描法如圖樹索引掃描法如圖9-7所示:所示:38School o

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論