版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2022-2-12 1SQL語言高級語言高級應用應用第第4章章 完整性和安全性完整性和安全性2022-2-12 2數(shù)據(jù)完整性數(shù)據(jù)完整性v何為數(shù)據(jù)完整性?何為數(shù)據(jù)完整性?P9:由由DBMS而不是用戶程序自動檢查數(shù)據(jù)的一致性、而不是用戶程序自動檢查數(shù)據(jù)的一致性、相容性,保證數(shù)據(jù)符合完整性約束條件。相容性,保證數(shù)據(jù)符合完整性約束條件。v數(shù)據(jù)須符合的條件或數(shù)據(jù)之間的關(guān)系數(shù)據(jù)須符合的條件或數(shù)據(jù)之間的關(guān)系數(shù)據(jù)類型準確無誤數(shù)據(jù)類型準確無誤數(shù)據(jù)的值滿足范圍設(shè)置數(shù)據(jù)的值滿足范圍設(shè)置同一表格數(shù)據(jù)之間不存在沖突同一表格數(shù)據(jù)之間不存在沖突多個表格數(shù)據(jù)之間不存在沖突多個表格數(shù)據(jù)之間不存在沖突2022-2-12 3完整性
2、約束條件完整性約束條件v整個完整性控制都是圍繞完整性約束條件進行整個完整性控制都是圍繞完整性約束條件進行的,從這個角度說,完整性約束條件是完整性的,從這個角度說,完整性約束條件是完整性控制機制的核心??刂茩C制的核心。2022-2-12 4v完整性約束條件作用的對象完整性約束條件作用的對象列列:對屬性的取值類型、范圍、精度等的約束條件元組元組:對元組中各個屬性列間的聯(lián)系的約束關(guān)系關(guān)系:對若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束v完整性約束條件作用的對象狀態(tài)完整性約束條件作用的對象狀態(tài)靜態(tài)靜態(tài)v對靜態(tài)對象的約束是反映數(shù)據(jù)庫狀態(tài)合理性的約束v這是最重要的一類完整性約束動態(tài)動態(tài)v對動態(tài)對象的約束
3、是反映數(shù)據(jù)庫狀態(tài)變遷的約束完整性約束條件完整性約束條件2022-2-12 5完整性約束條件分類完整性約束條件分類 對象狀態(tài)對象狀態(tài) 動態(tài)列級約束動態(tài)列級約束 動態(tài)元組約束動態(tài)元組約束 動態(tài)關(guān)系約束動態(tài)關(guān)系約束 動態(tài)動態(tài) 靜態(tài)列級約束靜態(tài)列級約束 靜態(tài)元組約束靜態(tài)元組約束 靜態(tài)關(guān)系約束靜態(tài)關(guān)系約束 靜態(tài)靜態(tài) 列列 元組元組 關(guān)系關(guān)系 對象粒度對象粒度6靜態(tài)列級約束靜態(tài)列級約束v靜態(tài)列級約束是對一個列的取值域的說明靜態(tài)列級約束是對一個列的取值域的說明,這是最常見最簡單同時也最容易實現(xiàn)的一類完整性約束v五類靜態(tài)列級約束五類靜態(tài)列級約束對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等對數(shù)據(jù)類型的約
4、束,包括數(shù)據(jù)的類型、長度、單位、精度等 例:規(guī)定學生姓名的數(shù)據(jù)類型應為字符型,長度為例:規(guī)定學生姓名的數(shù)據(jù)類型應為字符型,長度為8。對數(shù)據(jù)格式的約束對數(shù)據(jù)格式的約束例:規(guī)定學號的格式為前兩位表示入學年份,后四位為順序編號;出生例:規(guī)定學號的格式為前兩位表示入學年份,后四位為順序編號;出生日期的格式為日期的格式為YY.MM.DD。對取值范圍或取值集合的約束對取值范圍或取值集合的約束例:規(guī)定成績的取值范圍為例:規(guī)定成績的取值范圍為0-100;年齡的取值范圍為;年齡的取值范圍為14-29;性別的;性別的取值集合為取值集合為男男,女女。對空值的約束:空值表示未定義或未知的值,它與零值和空格不同。有對空
5、值的約束:空值表示未定義或未知的值,它與零值和空格不同。有的列允許空值,有的則不允許。的列允許空值,有的則不允許。 例:規(guī)定成績可以為空值。例:規(guī)定成績可以為空值。其他約束其他約束例:關(guān)于列的排序說明,組合列等。例:關(guān)于列的排序說明,組合列等。2022-2-12 7 靜態(tài)元組約束靜態(tài)元組約束v靜態(tài)元組約束就是規(guī)定組成一個元組的各個靜態(tài)元組約束就是規(guī)定組成一個元組的各個列之間的約束關(guān)系。列之間的約束關(guān)系。v例:訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,例:訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,發(fā)貨量不得超過訂貨量發(fā)貨量不得超過訂貨量v例:教師關(guān)系中包含職稱、工資等列,例:教師關(guān)系中包含職稱、工資等列, 教授
6、的工資不得低于教授的工資不得低于700元元v 靜態(tài)元組約束只局限在單個元組上。靜態(tài)元組約束只局限在單個元組上。 2022-2-12 8靜態(tài)關(guān)系約束靜態(tài)關(guān)系約束v在一個關(guān)系的各個元組之間或者若干關(guān)系之間常常存在各種在一個關(guān)系的各個元組之間或者若干關(guān)系之間常常存在各種聯(lián)系或約束。聯(lián)系或約束。v常見靜態(tài)關(guān)系約束常見靜態(tài)關(guān)系約束實體完整性約束實體完整性約束參照完整性約束參照完整性約束函數(shù)依賴約束函數(shù)依賴約束統(tǒng)計約束統(tǒng)計約束v定義某個字段值與一個關(guān)系多個元組的統(tǒng)計值之間的約束關(guān)系定義某個字段值與一個關(guān)系多個元組的統(tǒng)計值之間的約束關(guān)系v例:規(guī)定部門經(jīng)理的工資不得高于本部門職工平均工資的例:規(guī)定部門經(jīng)理的工
7、資不得高于本部門職工平均工資的5倍,倍,不得低于本部門職工平均工資的不得低于本部門職工平均工資的2倍。本部門職工的平均工資值倍。本部門職工的平均工資值是一個統(tǒng)計計算值。是一個統(tǒng)計計算值。2022-2-12 9動態(tài)列級約束動態(tài)列級約束v動態(tài)列級約束是修改列定義或列值時應滿足的約束條動態(tài)列級約束是修改列定義或列值時應滿足的約束條件。件。v常見動態(tài)列級約束常見動態(tài)列級約束修改列定義時的約束修改列定義時的約束例:規(guī)定將原來允許空值的列改為不允許空值時,如果該列目前例:規(guī)定將原來允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。已存在空值,則拒絕這種修改。修改列值時的約束修改列值時的
8、約束v修改列值有時需要參照其舊值,并且新舊值之間需要修改列值有時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。滿足某種約束條件。 例:職工工資調(diào)整不得低于其原來工資,學生年齡只能增長例:職工工資調(diào)整不得低于其原來工資,學生年齡只能增長2022-2-12 10動態(tài)元組約束動態(tài)元組約束v動態(tài)元組約束是指修改某個元組的值時需要動態(tài)元組約束是指修改某個元組的值時需要參照其舊值,并且新舊值之間需要滿足某種參照其舊值,并且新舊值之間需要滿足某種約束條件。約束條件。 v 例:職工工資調(diào)整不得低于其原來工資例:職工工資調(diào)整不得低于其原來工資+工齡工齡*1.52022-2-12 11動態(tài)關(guān)系約束動態(tài)關(guān)系約
9、束v動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件。限制條件。v例:事務(wù)一致性、原子性等約束條件例:事務(wù)一致性、原子性等約束條件2022-2-12 12完整性約束條件小結(jié)完整性約束條件小結(jié) 粒粒 度度狀態(tài)狀態(tài)列列 級級 元元 組組 級級 關(guān)關(guān) 系系 級級 靜靜 態(tài)態(tài) 列定義列定義類型類型格式格式值域值域 空值空值 元組值應滿足的元組值應滿足的條件條件 實體完整性約束實體完整性約束 參照完整性約束參照完整性約束 函數(shù)依賴約束函數(shù)依賴約束 統(tǒng)計約束統(tǒng)計約束 動動 態(tài)態(tài) 改變列定義改變列定義或列值或列值 元組新舊值之間應元組新舊值之間應滿足的約束條件滿足的約束條
10、件 關(guān)系新舊狀態(tài)間應關(guān)系新舊狀態(tài)間應滿足的約束條件滿足的約束條件 2022-2-12 13DBMS的完整性控制機制的完整性控制機制v定義功能定義功能一個完善的完整性控制機制應該允許用戶定義各類完整一個完善的完整性控制機制應該允許用戶定義各類完整性約束條件。性約束條件。v檢查功能檢查功能立即執(zhí)行的約束立即執(zhí)行的約束(Immediate constraints)v檢查是否違背完整性約束的時機通常是在一條語句執(zhí)行完后立即檢查是否違背完整性約束的時機通常是在一條語句執(zhí)行完后立即檢查,我們稱這類約束為立即執(zhí)行的約束檢查,我們稱這類約束為立即執(zhí)行的約束 延遲執(zhí)行的約束延遲執(zhí)行的約束(Deferred co
11、nstraints)v在某些情況下,完整性檢查需要延遲到整個事務(wù)執(zhí)行結(jié)束后再進在某些情況下,完整性檢查需要延遲到整個事務(wù)執(zhí)行結(jié)束后再進行,我們稱這類約束為延遲執(zhí)行的約束行,我們稱這類約束為延遲執(zhí)行的約束v違約反應違約反應 拒絕該操作拒絕該操作 其他處理方法其他處理方法2022-2-12 14關(guān)系系統(tǒng)三類完整性的實現(xiàn)關(guān)系系統(tǒng)三類完整性的實現(xiàn)v提供有定義和檢查實體完整性、參照完整性和用戶提供有定義和檢查實體完整性、參照完整性和用戶定義的完整性的功能。定義的完整性的功能。v對于違反實體完整性規(guī)則和用戶定義的完整性規(guī)則對于違反實體完整性規(guī)則和用戶定義的完整性規(guī)則的操作一般都是采用拒絕執(zhí)行的方式進行處理
12、。的操作一般都是采用拒絕執(zhí)行的方式進行處理。v而對于違反參照完整性的操作,并不都是簡單地拒而對于違反參照完整性的操作,并不都是簡單地拒絕執(zhí)行,有時還需要采取另一種方法,即接受這個絕執(zhí)行,有時還需要采取另一種方法,即接受這個操作,同時執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的操作,同時執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的狀態(tài)仍然是正確的。狀態(tài)仍然是正確的。2022-2-12 15實體完整性的實現(xiàn)實體完整性的實現(xiàn)例:在例:在“學號不能為空學號不能為空”的約束中,約束作用的的約束中,約束作用的對象為對象為Sno屬性屬性則插入或修改則插入或修改Student 元組時元組時,作何處理?,作何處理?要求要求Sno不
13、能為空不能為空否則,拒絕執(zhí)行該操作否則,拒絕執(zhí)行該操作2022-2-12 16用戶定義完整性的實現(xiàn)用戶定義完整性的實現(xiàn)例:在例:在“教授工資不得低于教授工資不得低于1000元元”的約束中,約束作的約束中,約束作用的對象為工資用的對象為工資Sal屬性屬性則插入或修改職工元組時,則插入或修改職工元組時,作如何處理?作如何處理? 如果職稱如果職稱=教授教授時,時, Sal不能小于不能小于1000 否則,拒絕執(zhí)行該操作否則,拒絕執(zhí)行該操作2022-2-12 17參照完整性的實現(xiàn)參照完整性的實現(xiàn)v外碼是否可以接受空值的問題外碼是否可以接受空值的問題v刪除被參照關(guān)系的元組時的問題刪除被參照關(guān)系的元組時的問
14、題v修改被參照關(guān)系中主碼的問題修改被參照關(guān)系中主碼的問題2022-2-12 18外碼是否可以接受空值的問題外碼是否可以接受空值的問題v外碼是否能夠取空值是依賴于應用環(huán)境的語義外碼是否能夠取空值是依賴于應用環(huán)境的語義的。的。v在實現(xiàn)參照完整性時,系統(tǒng)除了應該提供定義在實現(xiàn)參照完整性時,系統(tǒng)除了應該提供定義外碼的機制,還應提供定義外碼列是否允許空外碼的機制,還應提供定義外碼列是否允許空值的機制。值的機制。2022-2-12 19例例1:在職工部門數(shù)據(jù)庫中,:在職工部門數(shù)據(jù)庫中,EMP關(guān)系包含有外碼關(guān)系包含有外碼Deptno,某,某一元組的這一列若為空值,表示這個職工尚未分配到任何具體一元組的這一列
15、若為空值,表示這個職工尚未分配到任何具體的部門工作。的部門工作。 這和應用環(huán)境的語義是相符的,這和應用環(huán)境的語義是相符的, 因此因此EMP的的Deptno列應允許空值。列應允許空值。例例2:在學生選課數(shù)據(jù)庫中,:在學生選課數(shù)據(jù)庫中,Student關(guān)系為被參照關(guān)系,其主關(guān)系為被參照關(guān)系,其主碼為碼為Sno。SC為參照關(guān)系,外碼為為參照關(guān)系,外碼為Sno。若若SC的的Sno為空值,則表明尚不存在的某個學生,或者某個不知為空值,則表明尚不存在的某個學生,或者某個不知學號的學生,選修了某門課程,其成績記錄在學號的學生,選修了某門課程,其成績記錄在Grade列中。列中。 這與學校的應用環(huán)境是不相符的,這
16、與學校的應用環(huán)境是不相符的,因此因此SC的的Sno列不能取空值。列不能取空值。20刪除被參照關(guān)系的元組時的問題刪除被參照關(guān)系的元組時的問題v出現(xiàn)違約操作的情形出現(xiàn)違約操作的情形需要刪除被參照關(guān)系的某個元組,而參照關(guān)系有若干元組的外碼值需要刪除被參照關(guān)系的某個元組,而參照關(guān)系有若干元組的外碼值與被刪除的被參照關(guān)系的主碼值相對應與被刪除的被參照關(guān)系的主碼值相對應v違約反應:可有三種策略違約反應:可有三種策略級聯(lián)刪除(級聯(lián)刪除(CASCADES)v將參照關(guān)系中所有外碼值與被參照關(guān)系中要刪除元組主碼值相對應的元將參照關(guān)系中所有外碼值與被參照關(guān)系中要刪除元組主碼值相對應的元組一起刪除。組一起刪除。受限刪
17、除(受限刪除(RESTRICTED)v只有當參照關(guān)系中沒有任何元組的外碼值與要刪除的被參照關(guān)系的元組只有當參照關(guān)系中沒有任何元組的外碼值與要刪除的被參照關(guān)系的元組的主碼值相對應時,系統(tǒng)才執(zhí)行刪除操作,否則拒絕此刪除操作。的主碼值相對應時,系統(tǒng)才執(zhí)行刪除操作,否則拒絕此刪除操作。置空值刪除(置空值刪除(NULLIFIES)v刪除被參照關(guān)系的元組,并將參照關(guān)系中所有與被參照關(guān)系中被刪除元組主碼值相等刪除被參照關(guān)系的元組,并將參照關(guān)系中所有與被參照關(guān)系中被刪除元組主碼值相等的外碼值置為空值。的外碼值置為空值。這三種處理方法,哪一種是正確的,要依應用環(huán)境的語義這三種處理方法,哪一種是正確的,要依應用環(huán)
18、境的語義來定。來定。2022-2-12 21v例:要刪除例:要刪除Student關(guān)系中關(guān)系中Sno=200801的元組,而的元組,而SC關(guān)系中關(guān)系中有有4個元組的個元組的Sno都等于都等于200801。級聯(lián)刪除:級聯(lián)刪除:將將SC關(guān)系中所有關(guān)系中所有4個個Sno=200801的元組一起刪除。如果的元組一起刪除。如果參照關(guān)系同時又是另一個關(guān)系的被參照關(guān)系,則這種刪除參照關(guān)系同時又是另一個關(guān)系的被參照關(guān)系,則這種刪除操作會繼續(xù)級聯(lián)下去。操作會繼續(xù)級聯(lián)下去。 受限刪除:受限刪除: 系統(tǒng)將拒絕執(zhí)行此刪除操作。系統(tǒng)將拒絕執(zhí)行此刪除操作。置空值刪除:置空值刪除: 將將SC關(guān)系中所有關(guān)系中所有Sno=200
19、801的元組的的元組的Sno值置為空值。值置為空值。在學生選課數(shù)據(jù)庫中,顯然第一種方法和第二種方法都是在學生選課數(shù)據(jù)庫中,顯然第一種方法和第二種方法都是對的。第三種方法不符合應用環(huán)境語義。對的。第三種方法不符合應用環(huán)境語義。22修改被參照關(guān)系中主碼的問題修改被參照關(guān)系中主碼的問題v兩種策略兩種策略不允許修改主碼不允許修改主碼允許修改主碼允許修改主碼 v允許修改主碼策略允許修改主碼策略違約操作違約操作要要修改被參照關(guān)系修改被參照關(guān)系中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等于被參照關(guān)系要修改的主碼值于被參照關(guān)系要修改的主碼值要要修
20、改參照關(guān)系修改參照關(guān)系中某些元組的主碼值,而被參照關(guān)系中沒有任何元組的外碼值等中某些元組的主碼值,而被參照關(guān)系中沒有任何元組的外碼值等于被參照關(guān)系修改后的主碼值于被參照關(guān)系修改后的主碼值違約反應違約反應v修改的關(guān)系是被參照關(guān)系:與刪除類似修改的關(guān)系是被參照關(guān)系:與刪除類似級聯(lián)修改級聯(lián)修改受限修改受限修改置空值修改置空值修改v修改的關(guān)系是參照關(guān)系:與插入類似修改的關(guān)系是參照關(guān)系:與插入類似受限修改受限修改級聯(lián)修改級聯(lián)修改2022-2-12 23修改被參照關(guān)系中主碼的問題(續(xù))修改被參照關(guān)系中主碼的問題(續(xù))級聯(lián)修改級聯(lián)修改v修改被參照關(guān)系中主碼值同時,用相同的方法修改參修改被參照關(guān)系中主碼值同時
21、,用相同的方法修改參照關(guān)系中相應的外碼值。照關(guān)系中相應的外碼值。受限修改受限修改v拒絕此修改操作。只當參照關(guān)系中沒有任何元組的外拒絕此修改操作。只當參照關(guān)系中沒有任何元組的外碼值等于被參照關(guān)系中某個元組的主碼值時,這個元碼值等于被參照關(guān)系中某個元組的主碼值時,這個元組的主碼值才能被修改。組的主碼值才能被修改。置空值修改置空值修改v修改被參照關(guān)系中主碼值,同時將參照關(guān)系中相應的修改被參照關(guān)系中主碼值,同時將參照關(guān)系中相應的外碼值置為空值。外碼值置為空值。2022-2-12 24v例:學生例:學生200801休學一年后復學,這時需要將休學一年后復學,這時需要將Student關(guān)系關(guān)系中中Sno=20
22、0801的元組中的元組中Sno值改為值改為 200923 。而。而SC關(guān)系中關(guān)系中有有4個元組的個元組的Sno=200801級聯(lián)修改:級聯(lián)修改: 將將SC關(guān)系中關(guān)系中4個個Sno=200801元組中的元組中的Sno值也改為值也改為200923。如果。如果參照關(guān)系同時又是另一個關(guān)系的被參照關(guān)系,則這種修改操作會繼參照關(guān)系同時又是另一個關(guān)系的被參照關(guān)系,則這種修改操作會繼續(xù)級聯(lián)下去。續(xù)級聯(lián)下去。受限修改:受限修改: 只有只有SC中沒有任何元組的中沒有任何元組的Sno= 200801 時,才能修改時,才能修改Student表中表中Sno= 200801 的元組的的元組的Sno值改為值改為 20092
23、3 。置空值修改置空值修改: 將將Student表中表中Sno= 200801 的元組的的元組的Sno值改為值改為 200923 。而將。而將S表中所有表中所有Sno= 200801 的元組的的元組的Sno值置為空值值置為空值。在學生選課數(shù)據(jù)庫中只有第一種方法是正確的。在學生選課數(shù)據(jù)庫中只有第一種方法是正確的。2022-2-12 25小結(jié)小結(jié)v如何進行完整性維護系統(tǒng)的設(shè)計?如何進行完整性維護系統(tǒng)的設(shè)計?1 如何表達完整性約束條件?如何表達完整性約束條件?2 如何檢查完整性約束條件?如何檢查?如何檢查完整性約束條件?如何檢查?3 違反條件時候的如何處理?違反條件時候的如何處理?DBMSDBMS中
24、完整性的定義:中完整性的定義:使用約束使用約束完整性的類型完整性的類型約束的類型約束的類型說明說明實體完整性實體完整性PRIMARY KEY唯一標識每一行,保證用戶不輸入重復的數(shù)據(jù),且創(chuàng)建一個索引來提高性能。不允許空值UNIQUE防止非主關(guān)鍵字的重復,并保證創(chuàng)建一個索引來提高性能。允許空值用戶定義完整用戶定義完整性性DEFAULT指定在INSERT語句中沒有明確提供一個值時,為該列提供的值CHECK指定在一個列中可接受的數(shù)據(jù)值參照完整性參照完整性FOREIGN KEY定義一個列或幾個列的組合,他們的值匹配同一個表或另一個表中關(guān)鍵字2022-2-12 27CREATE TABLECREATE T
25、ABLE定義約束定義約束v約束涉及單個屬性的,有兩種說明方法約束涉及單個屬性的,有兩種說明方法 定義為列級約束條件定義為列級約束條件定義為表級約束條件定義為表級約束條件v若約束涉及多個屬性的,只有一種說明方法若約束涉及多個屬性的,只有一種說明方法定義為表級約束條件定義為表級約束條件 28v列級約束列級約束例1. CREATE TABLE語句中定義列級約束 CREATE TABLE S ( sno NUMERIC(6) PRIMARY KEY, -列級約束列級約束 sname CHAR(8) NOT NULL, age NUMERIC(3,0), sex CHAR(2), bplace CHAR
26、(20) );v表級約束表級約束例2. CREATE TABLE語句中定義表級約束 CREATE TABLE SC ( sno NUMERIC(6) NOT NULL , cno varchar(3) not null, PRIMARY KEY(sno,cno), -表級約束表級約束 grade NUMERIC(2);29v例3. 在Employee表中說明Eno為主碼,有兩種方法。v將屬性直接說明為主碼,列級約束將屬性直接說明為主碼,列級約束 CREATE TABLE Employee ( Eno char(4) PRIMARY KEY, Ename varchar(8), Sex char
27、(2), Age int, Dno char(2) );v在屬性列表后單獨說明主碼,表級約束在屬性列表后單獨說明主碼,表級約束 CREATE TABLE Employee ( Eno char(4), Ename varchar(8), Sex char(2), Age int, Dno char(2), PRIMARY KEY(Eno) );30ALTER TABLEALTER TABLE定義約束定義約束v添加約束添加約束語法:語法:vALTER TABLE ADD CONSTRAINT ,;例4. ALTER TABLE 添加約束。ALTER TABLE Employee ADD CONS
28、TRAINT uq_ename UNIQUE(Ename);v刪除約束:刪除約束:語法:語法:vALTER TABLE DROP CONSTRAINT ,;例5. ALTER TABLE 刪除約束。ALTER TABLE Employee DROP CONSTRAINT uq_ename;31UNIQUEUNIQUE約束約束v允許空值允許空值v在一個表上可以放置多個在一個表上可以放置多個UNIQUE約束約束v可以在必須有唯一值,但不是表的主關(guān)鍵字的一個列或多個列上可以在必須有唯一值,但不是表的主關(guān)鍵字的一個列或多個列上應用應用UNIQUE約束約束v通過在指定列上創(chuàng)建唯一索引強制通過在指定列上創(chuàng)
29、建唯一索引強制UNIQUE約束約束v例例6. 添加唯一性約束。添加唯一性約束。 ALTER TABLE Department ADD CONSTRAINT uq_dname UNIQUE nonclustered(dname);v例例7. 增加增加Ename必須取唯一值的約束條件。必須取唯一值的約束條件。 ALTER TABLE Employee /* 用戶為該唯一值約束設(shè)定約束名為用戶為該唯一值約束設(shè)定約束名為UQ_Ename */ ADD CONSTRAINT UQ_Ename UNIQUE(Ename); v或者: ALTER TABLE Employee ADD UNIQUE(Enam
30、e); /* 系統(tǒng)將自動為此約束名賦值系統(tǒng)將自動為此約束名賦值 */2022-2-12 32PRIMARY KEYPRIMARY KEY約束約束v每個表每個表只能定義一個只能定義一個PRIMARY KEY約束約束v輸入的值必須是唯一的輸入的值必須是唯一的v不允許空值不允許空值v它在指定的列上創(chuàng)建一個唯一索引它在指定的列上創(chuàng)建一個唯一索引v例例8. .添加主碼約束添加主碼約束ALTER TABLE DepartmentADD CONSTRAINT pk_dno PRIMARY KEY clustered(dno);33IDENTITYIDENTITY屬性屬性v每一個表都可有一標識列,其中包含由系
31、統(tǒng)自動生每一個表都可有一標識列,其中包含由系統(tǒng)自動生成的能夠標識表中每一行數(shù)據(jù)的唯一序列值。成的能夠標識表中每一行數(shù)據(jù)的唯一序列值。v格式:格式:IDENTITY ( SEED, INCREMENT) vSEED初始值,表中的第一行數(shù)據(jù)的標識列的取值,默認值為初始值,表中的第一行數(shù)據(jù)的標識列的取值,默認值為1vINCREMEN步長值,每一新標識值比上一個增長多少,默認值步長值,每一新標識值比上一個增長多少,默認值為為1v使用IDENTITY列時,應注意:每張表只允許有一個每張表只允許有一個IDENTITY列列該列必須使用下列數(shù)據(jù)類型之一:decimal、numeric、int、smallint
32、 和 tinyint該列必須設(shè)置成不允許為空值,且不能有默認值該列必須設(shè)置成不允許為空值,且不能有默認值2022-2-12 34DEFAULTDEFAULT約束約束v只應用于INSERT語句v每列只能定義一個每列只能定義一個DEFAULT約束約束v不能用于不能用于IDENTITY屬性或?qū)傩曰騎IMESTAMP數(shù)據(jù)類型數(shù)據(jù)類型TIMESTAMP數(shù)據(jù)庫范圍內(nèi)的唯一數(shù)字,8字節(jié),一個表中只能一個此類型的列v允許使用一些系統(tǒng)提供的值允許使用一些系統(tǒng)提供的值v例例9.增加列增加列Title的默認值取值為的默認值取值為“助工助工”。 ALTER TABLE Employee ADD CONSTRAINT
33、DF_Title DEFAULT 助工助工 for Title;2022-2-12 35CHECKCHECK約束約束v在每次執(zhí)行INSERT或UPDATE語句時驗證數(shù)據(jù)v可以引用同一表中的其他列可以引用同一表中的其他列v不能在具有IDENTITY屬性的列或具有timestamp或uniqueidentifier數(shù)據(jù)類型的列上放置CHECK約束v不能含有子查詢v例例10.增加列性別取值約束。增加列性別取值約束。ALTER TABLE EmployeeADD CONSTRAINT ck_sex CHECK (sex in (男男,女女);2022-2-12 36vCHECK約束也可涉及到表中多個域
34、,稱為元組約約束也可涉及到表中多個域,稱為元組約束。束。v在對整個元組完成插入或?qū)δ骋辉M的修改完成之后,系統(tǒng)將檢查元組是否符合CHECK條件表達式。v例例11. 添加涉及多列的添加涉及多列的CHECK約束。約束。 ALTER TABLE Salary ADD CONSTRAINT ck_RightSalary CHECK(Insure+Fund=18v例例5. 創(chuàng)建具有列表的規(guī)則創(chuàng)建具有列表的規(guī)則 CREATE RULE sex_rule AS sex IN (男男, 女女);v例例6.創(chuàng)建具有模糊匹配的規(guī)則創(chuàng)建具有模糊匹配的規(guī)則 CREATE RULE telephone_rule AS
35、telephone like 0-90-90-90-90-90-90-90-9;2022-2-12 82捆綁規(guī)則捆綁規(guī)則v使用系統(tǒng)存儲過程使用系統(tǒng)存儲過程sp_bindrule可以將規(guī)則捆綁到可以將規(guī)則捆綁到列或用戶自定義數(shù)據(jù)類型上。列或用戶自定義數(shù)據(jù)類型上。v語法:語法:Sp_bindrule rule, object_name,futureonly_flagrule:規(guī)則的名稱object_name為規(guī)則要捆綁到的列名或用戶自定義數(shù)據(jù)類型名futureonly_flag可選參數(shù),僅在要捆綁到用戶自定義數(shù)據(jù)類型時使用。2022-2-12 83v例例7. 將規(guī)則綁定到列。將規(guī)則綁定到列。 EX
36、EC sp_bindrule range_rule, Employee.Age;v例例8. 將規(guī)則綁定到別名數(shù)據(jù)類型。將規(guī)則綁定到別名數(shù)據(jù)類型。 EXEC sp_bindrule telephone_rule, telephone;v例例9. 使用使用futureonly_flag。以下示例將 telephone_rule規(guī)則綁定到別名數(shù)據(jù)類型telephone。由于已指定futureonly,因此不影響類型為telephone的現(xiàn)有列。 EXEC sp_bindrule telephone_rule,telephone, futureonly;2022-2-12 84v使用使用sp_unbi
37、ndrule系統(tǒng)存儲過程可以解除系統(tǒng)存儲過程可以解除捆綁到列或用戶自定義數(shù)據(jù)類型上的規(guī)則。捆綁到列或用戶自定義數(shù)據(jù)類型上的規(guī)則。v語法:sp_unbindrule object_name,futureonly_flag2022-2-12 85v例例10. 解除綁定列上的規(guī)則。解除綁定列上的規(guī)則。 EXEC sp_unbindrule Employee.Age;v例例11. 解除綁定別名類型的規(guī)則。解除綁定別名類型的規(guī)則。 EXEC sp_unbindrule telephone, futureonly;2022-2-12 86查看規(guī)則查看規(guī)則v使用企業(yè)管理器使用企業(yè)管理器v使用系統(tǒng)存儲過程使用
38、系統(tǒng)存儲過程sp_help可以查看規(guī)則的可以查看規(guī)則的擁有者、創(chuàng)建時間等基本信息。擁有者、創(chuàng)建時間等基本信息。v使用系統(tǒng)存儲過程使用系統(tǒng)存儲過程sp_helptext可以查看規(guī)則可以查看規(guī)則的定義。的定義。2022-2-12 87刪除規(guī)則刪除規(guī)則v使用使用DROP RULE語句可以刪除當前數(shù)據(jù)庫語句可以刪除當前數(shù)據(jù)庫中的一個或多個規(guī)則。中的一個或多個規(guī)則。v在刪除一個規(guī)則之前,應首先將規(guī)則從它所在刪除一個規(guī)則之前,應首先將規(guī)則從它所捆綁的列或用戶自定義數(shù)據(jù)類型上解除下來。捆綁的列或用戶自定義數(shù)據(jù)類型上解除下來。當要刪除的規(guī)則仍捆綁在列或用戶自定義數(shù)據(jù)類當要刪除的規(guī)則仍捆綁在列或用戶自定義數(shù)據(jù)類
39、型上時,執(zhí)行型上時,執(zhí)行DROP RULE會顯示錯誤信息,同會顯示錯誤信息,同時時DROP RULE操作將被撤銷。操作將被撤銷。2022-2-12 88v例例12. 刪除規(guī)則刪除規(guī)則 -先解除綁定在列上的該規(guī)則先解除綁定在列上的該規(guī)則EXEC sp_unbindrule Employee.Age; -然后在刪除該規(guī)則然后在刪除該規(guī)則DROP RULE range_rule;2022-2-12 893 3 默認值默認值v默認值可以是常量、內(nèi)置函數(shù)或數(shù)學表達式。默認值可以是常量、內(nèi)置函數(shù)或數(shù)學表達式。v使用使用CREATE TABLE語句創(chuàng)建表時,使用語句創(chuàng)建表時,使用DEFAULT子句為表中的列
40、提供默認值。子句為表中的列提供默認值。v使用使用CREATE DEFAULT語句來創(chuàng)建一個默語句來創(chuàng)建一個默認對象,然后再將其捆綁到列或用戶自定義認對象,然后再將其捆綁到列或用戶自定義數(shù)據(jù)類型上。數(shù)據(jù)類型上。2022-2-12 90創(chuàng)建默認值創(chuàng)建默認值v使用使用T-SQL語句語句CREATE DEFAULT可以創(chuàng)可以創(chuàng)建默認對象。建默認對象。v語法:語法: CREATE DEFAULT defaultAS constant_expression2022-2-12 91捆綁默認值捆綁默認值v可以使用可以使用sp_bindefault系統(tǒng)存儲過程系統(tǒng)存儲過程v語法:語法:sp_bindefault
41、 default, object_name, futureonly_flagv使用使用sp_unbindefault系統(tǒng)存儲過程可以解除捆綁系統(tǒng)存儲過程可以解除捆綁導列或用戶自定義數(shù)據(jù)類型上的默認值。導列或用戶自定義數(shù)據(jù)類型上的默認值。v語法:語法:sp_unbindefault object_name,futureonly_flag2022-2-12 92v例例13. 創(chuàng)建默認值創(chuàng)建默認值addressdefault。 CREATE DEFAULT addressdefault AS 杭州下沙杭州下沙;v例例14. 綁定默認值。綁定默認值。 EXEC sp_bindefault addres
42、sdefault , Employee.Address;v例例15. 解除默認值。解除默認值。 EXEC sp_unbindefault Employee.Address;2022-2-12 93查看默認值查看默認值v可使用企業(yè)管理器??墒褂闷髽I(yè)管理器。v可使用系統(tǒng)存儲過程可使用系統(tǒng)存儲過程sp_help可以查看默認可以查看默認值的擁有者、創(chuàng)建時間等基本信息。值的擁有者、創(chuàng)建時間等基本信息。v可使用系統(tǒng)存儲過程可使用系統(tǒng)存儲過程sp_helptext可以查看默可以查看默認值的定義。認值的定義。2022-2-12 94刪除默認值刪除默認值v使用使用DROP DEFAULT語句可以刪除當前數(shù)語句可
43、以刪除當前數(shù)據(jù)庫中的一個或多個默認值。據(jù)庫中的一個或多個默認值。v注意:注意:在刪除默認值之前,應使用在刪除默認值之前,應使用sp_unbindefault系系統(tǒng)存儲過程來解除該默認值在列或用戶自定義數(shù)統(tǒng)存儲過程來解除該默認值在列或用戶自定義數(shù)據(jù)類型上的捆綁。據(jù)類型上的捆綁。95數(shù)據(jù)完整性數(shù)據(jù)完整性 小結(jié)小結(jié)v數(shù)據(jù)庫的完整性是為了保證數(shù)據(jù)庫中存儲的數(shù)據(jù)庫的完整性是為了保證數(shù)據(jù)庫中存儲的數(shù)據(jù)是正確的數(shù)據(jù)是正確的vRDBMS完整性實現(xiàn)的機制完整性實現(xiàn)的機制完整性約束定義機制完整性約束定義機制完整性檢查機制完整性檢查機制違背完整性約束條件時違背完整性約束條件時RDBMS應采取的動作應采取的動作v在關(guān)
44、系系統(tǒng)中,最重要的完整性約束是在關(guān)系系統(tǒng)中,最重要的完整性約束是實體完整性實體完整性參照完整性參照完整性用戶定義的完整性用戶定義的完整性v數(shù)據(jù)庫完整性的定義數(shù)據(jù)庫完整性的定義一般由一般由SQL的的DDL語句實現(xiàn)語句實現(xiàn)作為數(shù)據(jù)庫模式的一部分存入數(shù)據(jù)字典作為數(shù)據(jù)庫模式的一部分存入數(shù)據(jù)字典在數(shù)據(jù)庫數(shù)據(jù)修改時在數(shù)據(jù)庫數(shù)據(jù)修改時,RDBMS的完整性檢查機制的完整性檢查機制就按照數(shù)據(jù)字典中定義的這些約束進行檢查就按照數(shù)據(jù)字典中定義的這些約束進行檢查v完整性機制的實施會影響系統(tǒng)性能。隨著硬完整性機制的實施會影響系統(tǒng)性能。隨著硬件性能的提高,數(shù)據(jù)庫技術(shù)的發(fā)展,目前的件性能的提高,數(shù)據(jù)庫技術(shù)的發(fā)展,目前的RD
45、BMS都提供了定義和檢查實體完整性、都提供了定義和檢查實體完整性、參照完整性和用戶定義的完整性的功能。參照完整性和用戶定義的完整性的功能。v對于違反完整性的操作對于違反完整性的操作要根據(jù)應用語義來選擇合適的處理策略,以保證要根據(jù)應用語義來選擇合適的處理策略,以保證數(shù)據(jù)庫的正確性數(shù)據(jù)庫的正確性2022-2-12 97可能破壞參照完整性的情況及違約處理可能破壞參照完整性的情況及違約處理被參照表(例如被參照表(例如StudentStudent)參照表(例如參照表(例如SCSC)違約處理違約處理可能破壞參照完整性可能破壞參照完整性 插入元組插入元組拒絕拒絕可能破壞參照完整性可能破壞參照完整性 修改外碼
46、值修改外碼值拒絕拒絕刪除元組刪除元組 可能破壞參照可能破壞參照完整性完整性拒絕拒絕/ /級連刪除級連刪除/ /設(shè)置為空值設(shè)置為空值修改主碼值修改主碼值 可能破壞參照可能破壞參照完整性完整性拒絕拒絕/ /級連修改級連修改/ /設(shè)置為空值設(shè)置為空值2022-2-12 98完整性小結(jié)(續(xù)):觸發(fā)器完整性小結(jié)(續(xù)):觸發(fā)器v實現(xiàn)數(shù)據(jù)庫完整性的一個重要方法是觸發(fā)器實現(xiàn)數(shù)據(jù)庫完整性的一個重要方法是觸發(fā)器是定義在關(guān)系表上的由事件驅(qū)動的特殊過程是定義在關(guān)系表上的由事件驅(qū)動的特殊過程可以用于數(shù)據(jù)庫完整性檢查可以用于數(shù)據(jù)庫完整性檢查也可以用來實現(xiàn)數(shù)據(jù)庫系統(tǒng)的其他功能也可以用來實現(xiàn)數(shù)據(jù)庫系統(tǒng)的其他功能數(shù)據(jù)庫安全性數(shù)
47、據(jù)庫安全性應用系統(tǒng)的一些業(yè)務(wù)流程和控制流程應用系統(tǒng)的一些業(yè)務(wù)流程和控制流程基于規(guī)則的數(shù)據(jù)和業(yè)務(wù)控制功能基于規(guī)則的數(shù)據(jù)和業(yè)務(wù)控制功能 v不同的不同的RDBMS實現(xiàn)觸發(fā)器的語法不同實現(xiàn)觸發(fā)器的語法不同2022-2-12 99作業(yè)作業(yè) 1v準備第三次上機實驗內(nèi)容(準備第三次上機實驗內(nèi)容(1)詳見附錄詳見附錄A:“上機實驗八上機實驗八 完整性約束的實現(xiàn)完整性約束的實現(xiàn)”。在在Microsoft SQL Server 環(huán)境中,上機實現(xiàn)書環(huán)境中,上機實現(xiàn)書中第中第4章的各例題。章的各例題。2022-2-12 100SQL語言語言高級應用(二)高級應用(二)4.3 數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性2022-2-12
48、 101數(shù)據(jù)庫保護數(shù)據(jù)庫保護v數(shù)據(jù)庫中的數(shù)據(jù)由數(shù)據(jù)庫中的數(shù)據(jù)由DBMS統(tǒng)一管理控制,為統(tǒng)一管理控制,為適應數(shù)據(jù)共享的環(huán)境,適應數(shù)據(jù)共享的環(huán)境,DBMS必須提供數(shù)據(jù)必須提供數(shù)據(jù)的的安全性、完整性、并發(fā)控制和數(shù)據(jù)備份恢安全性、完整性、并發(fā)控制和數(shù)據(jù)備份恢復復等等數(shù)據(jù)保護數(shù)據(jù)保護能力,以保證數(shù)據(jù)庫中的數(shù)據(jù)能力,以保證數(shù)據(jù)庫中的數(shù)據(jù)安全可靠和正確有效。安全可靠和正確有效。2022-2-12 1021. 完整性完整性v數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性與相容性。與相容性。vSQL語言定義完整性約束條件語言定義完整性約束條件CREATE TABLE語句語句ALTE
49、R TABLE語句語句v實體完整性:實體完整性: primary key、uniquev參照完整性:參照完整性:foreign keyv用戶定義完整性:用戶定義完整性:check、default2022-2-12 1032. 安全性安全性v安全性:保護數(shù)據(jù)庫,防止不合法的使用安全性:保護數(shù)據(jù)庫,防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。所造成的數(shù)據(jù)泄露和破壞。v保證數(shù)據(jù)安全性的主要措施保證數(shù)據(jù)安全性的主要措施: :存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù),存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù),規(guī)定不同用戶對于不同數(shù)據(jù)對象所允許執(zhí)行的操作規(guī)定不同用戶對于不同數(shù)據(jù)對象所允許執(zhí)行的操作2022
50、-2-12 1043. 并發(fā)控制并發(fā)控制v并發(fā)控制:當多個用戶并發(fā)地對數(shù)據(jù)庫進行并發(fā)控制:當多個用戶并發(fā)地對數(shù)據(jù)庫進行操作時,對他們加以控制、協(xié)調(diào),以保證并操作時,對他們加以控制、協(xié)調(diào),以保證并發(fā)操作正確執(zhí)行,保持數(shù)據(jù)庫的一致性。發(fā)操作正確執(zhí)行,保持數(shù)據(jù)庫的一致性。vSQL語言并發(fā)控制能力:語言并發(fā)控制能力:提供事務(wù)開始、事務(wù)結(jié)束、提交、撤銷等概念提供事務(wù)開始、事務(wù)結(jié)束、提交、撤銷等概念2022-2-12 1054. 數(shù)據(jù)備份恢復數(shù)據(jù)備份恢復v恢復:當發(fā)生各種類型的故障導致數(shù)據(jù)庫處恢復:當發(fā)生各種類型的故障導致數(shù)據(jù)庫處于不一致狀態(tài)時,將數(shù)據(jù)庫恢復到一致狀態(tài)于不一致狀態(tài)時,將數(shù)據(jù)庫恢復到一致狀態(tài)
51、的功能。的功能。vSQL語言恢復功能:語言恢復功能:提供事務(wù)回滾、重做等概念(提供事務(wù)回滾、重做等概念(UNDO、REDO)2022-2-12 106數(shù)據(jù)安全性數(shù)據(jù)安全性v數(shù)據(jù)庫系統(tǒng)的安全性是數(shù)據(jù)庫保護的首要數(shù)據(jù)庫系統(tǒng)的安全性是數(shù)據(jù)庫保護的首要問題。問題。v安全性是相對的。安全性是相對的。v加強安全性是應用開發(fā)一個重要的方面。加強安全性是應用開發(fā)一個重要的方面。v安全性與保密性不可分。安全性與保密性不可分。v本節(jié)主要討論安全性的一般概念和方法,本節(jié)主要討論安全性的一般概念和方法,介紹介紹SQL ServerSQL Server數(shù)據(jù)庫系統(tǒng)的安全性措施。數(shù)據(jù)庫系統(tǒng)的安全性措施。2022-2-12
52、107數(shù)據(jù)庫安全數(shù)據(jù)庫安全v數(shù)據(jù)庫的破壞一般來自以下的四個方面:數(shù)據(jù)庫的破壞一般來自以下的四個方面:系統(tǒng)故障;系統(tǒng)故障;并發(fā)所引起的數(shù)據(jù)不一致;并發(fā)所引起的數(shù)據(jù)不一致;輸入或更新數(shù)據(jù)庫數(shù)據(jù)有誤;輸入或更新數(shù)據(jù)庫數(shù)據(jù)有誤;人為的破壞。人為的破壞。v所謂數(shù)據(jù)庫安全(所謂數(shù)據(jù)庫安全(SecuritySecurity),就是要防止),就是要防止其中第四種。其中第四種。 2022-2-12 108數(shù)據(jù)庫安全性概念數(shù)據(jù)庫安全性概念v何為數(shù)據(jù)庫安全性?何為數(shù)據(jù)庫安全性?保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或保護數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。破壞。v系統(tǒng)安全保護措施是否有
53、效是數(shù)據(jù)庫系統(tǒng)的主要性能系統(tǒng)安全保護措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能指標之一。指標之一。v安全性問題和保密問題密切相關(guān)。安全性問題和保密問題密切相關(guān)。前者主要涉及數(shù)據(jù)的存取控制、前者主要涉及數(shù)據(jù)的存取控制、 修改和傳播的技術(shù)手段;修改和傳播的技術(shù)手段;后者在很大程度上是法律、政策、倫理、道德等問題。后者在很大程度上是法律、政策、倫理、道德等問題。一些國家已成立了專門機構(gòu)對數(shù)據(jù)的安全保密制訂了法律道一些國家已成立了專門機構(gòu)對數(shù)據(jù)的安全保密制訂了法律道德準則和政策法規(guī)。德準則和政策法規(guī)。2022-2-12 109數(shù)據(jù)庫安全保密方式數(shù)據(jù)庫安全保密方式v數(shù)據(jù)庫安全保密方式有:系統(tǒng)處理的和物理的兩個數(shù)
54、據(jù)庫安全保密方式有:系統(tǒng)處理的和物理的兩個方面。方面。v所謂物理的是指,對于強力逼迫透露口令、在通訊所謂物理的是指,對于強力逼迫透露口令、在通訊線路上竊聽、以至盜竊物理存儲設(shè)備等行為而采取線路上竊聽、以至盜竊物理存儲設(shè)備等行為而采取的將數(shù)據(jù)編為密碼,加強警衛(wèi)以識別用戶身份和保的將數(shù)據(jù)編為密碼,加強警衛(wèi)以識別用戶身份和保護存儲設(shè)備等措施。護存儲設(shè)備等措施。v所謂系統(tǒng)處理的是指利用計算機系統(tǒng)方面的技術(shù)手所謂系統(tǒng)處理的是指利用計算機系統(tǒng)方面的技術(shù)手段。段。v本節(jié)主要講述系統(tǒng)處理方面的數(shù)據(jù)庫安全措施。本節(jié)主要講述系統(tǒng)處理方面的數(shù)據(jù)庫安全措施。2022-2-12 110計算機安全措施設(shè)置模型計算機安全措
55、施設(shè)置模型v在一般計算機系統(tǒng)中,安全措施是一級一級層層設(shè)置的。有如下的模型:2022-2-12 111數(shù)據(jù)庫安全措施數(shù)據(jù)庫安全措施v數(shù)據(jù)庫系統(tǒng)的安全措施是建立在計算機系統(tǒng)數(shù)據(jù)庫系統(tǒng)的安全措施是建立在計算機系統(tǒng)基礎(chǔ)之上的,通常有五個方面。基礎(chǔ)之上的,通常有五個方面。v1. 1. 用戶標識和鑒定用戶標識和鑒定v2. 2. 存取控制存取控制v3. 3. 定義視圖定義視圖v4. 4. 審計審計v5. 5. 數(shù)據(jù)加密數(shù)據(jù)加密2022-2-12 112安全措施一:安全措施一:用戶標識和鑒定用戶標識和鑒定v用戶標識和鑒定用戶標識和鑒定常用的方法有:常用的方法有:(1 1)用一個用戶名或用戶標識號標明用戶身份
56、。)用一個用戶名或用戶標識號標明用戶身份。(2 2)口令)口令(Password)(Password)(3 3)系統(tǒng)提供一個隨機數(shù),用戶根據(jù)預先約定好的)系統(tǒng)提供一個隨機數(shù),用戶根據(jù)預先約定好的某一過程或者函數(shù)進行計算,系統(tǒng)根據(jù)用戶計算結(jié)某一過程或者函數(shù)進行計算,系統(tǒng)根據(jù)用戶計算結(jié)果是否正確進一步鑒定用戶身份。果是否正確進一步鑒定用戶身份。v用戶標識和鑒定可重復多次。用戶標識和鑒定可重復多次。2022-2-12 113安全措施二:安全措施二:存取控制存取控制v對于獲得上機權(quán)的用戶還要根據(jù)預先定義好的用戶權(quán)限進行對于獲得上機權(quán)的用戶還要根據(jù)預先定義好的用戶權(quán)限進行存取控制,保證用戶只能存取他有權(quán)
57、存取的數(shù)據(jù)。所謂用戶存取控制,保證用戶只能存取他有權(quán)存取的數(shù)據(jù)。所謂用戶權(quán)限是指不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)權(quán)限是指不同的用戶對于不同的數(shù)據(jù)對象允許執(zhí)行的操作權(quán)限,它由兩部分組成:數(shù)據(jù)對象和操作類型。限,它由兩部分組成:數(shù)據(jù)對象和操作類型。數(shù)據(jù)對象數(shù)據(jù)對象操作類型操作類型模式、外模式、內(nèi)模式模式、外模式、內(nèi)模式建立、修改、檢索建立、修改、檢索表或者記錄、字段表或者記錄、字段查找、插入、修改、刪除查找、插入、修改、刪除2022-2-12 114安全措施三:安全措施三:視圖視圖v視圖主要用于保證程序的邏輯獨立性,也還視圖主要用于保證程序的邏輯獨立性,也還可將機密數(shù)據(jù)隱藏起來,能提供
58、一定程度的可將機密數(shù)據(jù)隱藏起來,能提供一定程度的安全保護,但不精細。安全保護,但不精細。v不同的不同的DBMSDBMS都提供了建立視圖的機制。都提供了建立視圖的機制。v開發(fā)數(shù)據(jù)系統(tǒng)時應盡可能地為不同的用戶建開發(fā)數(shù)據(jù)系統(tǒng)時應盡可能地為不同的用戶建立相應的視圖來訪問數(shù)據(jù)。立相應的視圖來訪問數(shù)據(jù)。 如建立一個如建立一個“信息管理系學生視圖信息管理系學生視圖”2022-2-12 115安全措施四:安全措施四:審計審計v審計是一種審計是一種預防手段,監(jiān)測可能的不合法訪問。預防手段,監(jiān)測可能的不合法訪問。v審訊追蹤技術(shù)使用專用文件或數(shù)據(jù)庫自動記錄用戶審訊追蹤技術(shù)使用專用文件或數(shù)據(jù)庫自動記錄用戶對數(shù)據(jù)庫的所
59、有操作,利用這些信息就能找出非法對數(shù)據(jù)庫的所有操作,利用這些信息就能找出非法存取數(shù)據(jù)的人。存取數(shù)據(jù)的人。v審訊追蹤很費時間和空間,一般審訊追蹤很費時間和空間,一般DBMSDBMS只作為一種可只作為一種可選的特性,可靈活地打開或關(guān)閉審計功能。選的特性,可靈活地打開或關(guān)閉審計功能。v審計功能一般用于安全性要求較高的部門。審計功能一般用于安全性要求較高的部門。 2022-2-12 116安全措施五:安全措施五:數(shù)據(jù)加密數(shù)據(jù)加密v對高度機密性數(shù)據(jù),通過采用數(shù)據(jù)加密技術(shù),以密碼形式存對高度機密性數(shù)據(jù),通過采用數(shù)據(jù)加密技術(shù),以密碼形式存儲和傳輸,這樣即使數(shù)據(jù)被竊取,看到是無法辨識的二進制儲和傳輸,這樣即使
60、數(shù)據(jù)被竊取,看到是無法辨識的二進制代碼。代碼。v用戶正常檢索數(shù)據(jù)時,首先要提供密碼鑰匙,經(jīng)系統(tǒng)譯碼后,用戶正常檢索數(shù)據(jù)時,首先要提供密碼鑰匙,經(jīng)系統(tǒng)譯碼后,才能得到可識別的數(shù)據(jù)。才能得到可識別的數(shù)據(jù)。v目前很多數(shù)據(jù)產(chǎn)品都提供了數(shù)據(jù)加密例行程序,可根據(jù)用戶目前很多數(shù)據(jù)產(chǎn)品都提供了數(shù)據(jù)加密例行程序,可根據(jù)用戶要求自動對數(shù)據(jù)進行加密處理,另外有一些數(shù)據(jù)庫產(chǎn)品雖本要求自動對數(shù)據(jù)進行加密處理,另外有一些數(shù)據(jù)庫產(chǎn)品雖本身未提供加密程序,但允許用戶用其他廠商的加密程序來加身未提供加密程序,但允許用戶用其他廠商的加密程序來加密數(shù)據(jù)。密數(shù)據(jù)。v解密程序本身一定要具有一定的安全性保護措施。解密程序本身一定要具有一
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中地理 第二章 區(qū)域生態(tài)環(huán)境建設(shè) 第1節(jié) 荒漠化的防治-以我國西北地區(qū)為例教學實錄 新人教版必修3
- 客服工作總結(jié)(集錦15篇)
- 2021學生讀弟子規(guī)心得體會
- JCT2550-2019泡沫混凝土自保溫砌塊
- 初中的我作文匯編5篇
- 2024年度智能倉儲系統(tǒng)施工委托合同3篇
- 鋼貿(mào)金融學知識之托盤業(yè)務(wù)
- 2024年版基礎(chǔ)設(shè)施建設(shè)項目土地征用協(xié)議示例版B版
- 公司個人原因辭職報告合集6篇
- 2024-2025年高中化學 專題1 第2單元 第3課時 電解池的工作原理及應用教學實錄 蘇教版選修4
- 辦公樓VRV多聯(lián)空調(diào)與中央空調(diào)系統(tǒng)方案比較
- GB/T 33609-2017軟質(zhì)泡沫聚合材料滯后損失試驗方法
- 現(xiàn)當代文學習題(北大、復旦版)
- CypTube激光切割軟件用戶手冊V6.4.0
- 學前兒童健康教育形考任務(wù)4試題及答案
- 區(qū)域檢驗中心項目構(gòu)建書-定稿
- 肺栓塞最新版課件
- 股權(quán)轉(zhuǎn)讓情況明細表
- 安裝手電筒基礎(chǔ)工業(yè)工程課程設(shè)計
- 導管相關(guān)性血流感染PPT
- 2022年四川省成都市武侯區(qū)七年級上學期期末語文試卷
評論
0/150
提交評論