版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2021-12-21 1SQL語言高級語言高級應(yīng)用應(yīng)用第第4章章 完整性和安全性完整性和安全性2021-12-21 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ù)類型準(zhǔn)確無誤數(shù)據(jù)類型準(zhǔn)確無誤數(shù)據(jù)的值滿足范圍設(shè)置數(shù)據(jù)的值滿足范圍設(shè)置同一表格數(shù)據(jù)之間不存在沖突同一表格數(shù)據(jù)之間不存在沖突多個表格數(shù)據(jù)之間不存在沖突多個表格數(shù)據(jù)之間不存在沖突2021-12-21 3
2、完整性約束條件完整性約束條件v整個完整性控制都是圍繞完整性約束條件進(jìn)行整個完整性控制都是圍繞完整性約束條件進(jìn)行的,從這個角度說,完整性約束條件是完整性的,從這個角度說,完整性約束條件是完整性控制機(jī)制的核心。控制機(jī)制的核心。2021-12-21 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)變遷的約束完整性約束條件完整性約束條件2021-12-21 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)列級約束是對一個列的取值域的說明,這是最常見最簡單同時也最容易實(shí)現(xiàn)的一類完整性約束v五類靜態(tài)列級約束五類靜態(tài)列級約束對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等對數(shù)
4、據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等 例:規(guī)定學(xué)生姓名的數(shù)據(jù)類型應(yīng)為字符型,長度為例:規(guī)定學(xué)生姓名的數(shù)據(jù)類型應(yīng)為字符型,長度為8。對數(shù)據(jù)格式的約束對數(shù)據(jù)格式的約束例:規(guī)定學(xué)號的格式為前兩位表示入學(xué)年份,后四位為順序編號;出生例:規(guī)定學(xué)號的格式為前兩位表示入學(xué)年份,后四位為順序編號;出生日期的格式為日期的格式為YY.MM.DD。對取值范圍或取值集合的約束對取值范圍或取值集合的約束例:規(guī)定成績的取值范圍為例:規(guī)定成績的取值范圍為0-100;年齡的取值范圍為;年齡的取值范圍為14-29;性別的;性別的取值集合為取值集合為男男,女女。對空值的約束:空值表示未定義或未知的值,它與零值和空格不
5、同。有對空值的約束:空值表示未定義或未知的值,它與零值和空格不同。有的列允許空值,有的則不允許。的列允許空值,有的則不允許。 例:規(guī)定成績可以為空值。例:規(guī)定成績可以為空值。其他約束其他約束例:關(guān)于列的排序說明,組合列等。例:關(guān)于列的排序說明,組合列等。2021-12-21 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)元組約束只局限在單個元組上。 2021-12-21 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í)體完整性約束參照完整性約束參照完整性約束函數(shù)依賴約束函數(shù)依賴約束統(tǒng)計(jì)約束統(tǒng)計(jì)約束v定義某個字段值與一個關(guān)系多個元組的統(tǒng)計(jì)值之間的約束關(guān)系定義某個字段值與一個關(guān)系多個元組的統(tǒng)計(jì)值之間的約束關(guān)系v例:規(guī)定部門經(jīng)理的工資不得高于本部門職工平均工資的例:規(guī)
7、定部門經(jīng)理的工資不得高于本部門職工平均工資的5倍,倍,不得低于本部門職工平均工資的不得低于本部門職工平均工資的2倍。本部門職工的平均工資值倍。本部門職工的平均工資值是一個統(tǒng)計(jì)計(jì)算值。是一個統(tǒng)計(jì)計(jì)算值。2021-12-21 9動態(tài)列級約束動態(tài)列級約束v動態(tài)列級約束是修改列定義或列值時應(yīng)滿足的約束條動態(tài)列級約束是修改列定義或列值時應(yīng)滿足的約束條件。件。v常見動態(tài)列級約束常見動態(tài)列級約束修改列定義時的約束修改列定義時的約束例:規(guī)定將原來允許空值的列改為不允許空值時,如果該列目前例:規(guī)定將原來允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。已存在空值,則拒絕這種修改。修改列值時的
8、約束修改列值時的約束v修改列值有時需要參照其舊值,并且新舊值之間需要修改列值有時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。滿足某種約束條件。 例:職工工資調(diào)整不得低于其原來工資,學(xué)生年齡只能增長例:職工工資調(diào)整不得低于其原來工資,學(xué)生年齡只能增長2021-12-21 10動態(tài)元組約束動態(tài)元組約束v動態(tài)元組約束是指修改某個元組的值時需要動態(tài)元組約束是指修改某個元組的值時需要參照其舊值,并且新舊值之間需要滿足某種參照其舊值,并且新舊值之間需要滿足某種約束條件。約束條件。 v 例:職工工資調(diào)整不得低于其原來工資例:職工工資調(diào)整不得低于其原來工資+工齡工齡*1.52021-12-21 11動
9、態(tài)關(guān)系約束動態(tài)關(guān)系約束v動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件。限制條件。v例:事務(wù)一致性、原子性等約束條件例:事務(wù)一致性、原子性等約束條件2021-12-21 12完整性約束條件小結(jié)完整性約束條件小結(jié) 粒粒 度度狀態(tài)狀態(tài)列列 級級 元元 組組 級級 關(guān)關(guān) 系系 級級 靜靜 態(tài)態(tài) 列定義列定義類型類型格式格式值域值域 空值空值 元組值應(yīng)滿足的元組值應(yīng)滿足的條件條件 實(shí)體完整性約束實(shí)體完整性約束 參照完整性約束參照完整性約束 函數(shù)依賴約束函數(shù)依賴約束 統(tǒng)計(jì)約束統(tǒng)計(jì)約束 動動 態(tài)態(tài) 改變列定義改變列定義或列值或列值 元組新舊值之間應(yīng)元組新舊值之間應(yīng)滿足
10、的約束條件滿足的約束條件 關(guān)系新舊狀態(tài)間應(yīng)關(guān)系新舊狀態(tài)間應(yīng)滿足的約束條件滿足的約束條件 2021-12-21 13DBMS的完整性控制機(jī)制的完整性控制機(jī)制v定義功能定義功能一個完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整一個完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整性約束條件。性約束條件。v檢查功能檢查功能立即執(zhí)行的約束立即執(zhí)行的約束(Immediate constraints)v檢查是否違背完整性約束的時機(jī)通常是在一條語句執(zhí)行完后立即檢查是否違背完整性約束的時機(jī)通常是在一條語句執(zhí)行完后立即檢查,我們稱這類約束為立即執(zhí)行的約束檢查,我們稱這類約束為立即執(zhí)行的約束 延遲執(zhí)行的約束延遲執(zhí)行的約束
11、(Deferred constraints)v在某些情況下,完整性檢查需要延遲到整個事務(wù)執(zhí)行結(jié)束后再進(jìn)在某些情況下,完整性檢查需要延遲到整個事務(wù)執(zhí)行結(jié)束后再進(jìn)行,我們稱這類約束為延遲執(zhí)行的約束行,我們稱這類約束為延遲執(zhí)行的約束v違約反應(yīng)違約反應(yīng) 拒絕該操作拒絕該操作 其他處理方法其他處理方法2021-12-21 14關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn)關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn)v提供有定義和檢查實(shí)體完整性、參照完整性和用戶提供有定義和檢查實(shí)體完整性、參照完整性和用戶定義的完整性的功能。定義的完整性的功能。v對于違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則對于違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則的操作一般都是
12、采用拒絕執(zhí)行的方式進(jìn)行處理。的操作一般都是采用拒絕執(zhí)行的方式進(jìn)行處理。v而對于違反參照完整性的操作,并不都是簡單地拒而對于違反參照完整性的操作,并不都是簡單地拒絕執(zhí)行,有時還需要采取另一種方法,即接受這個絕執(zhí)行,有時還需要采取另一種方法,即接受這個操作,同時執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的操作,同時執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的狀態(tài)仍然是正確的。狀態(tài)仍然是正確的。2021-12-21 15實(shí)體完整性的實(shí)現(xiàn)實(shí)體完整性的實(shí)現(xiàn)例:在例:在“學(xué)號不能為空學(xué)號不能為空”的約束中,約束作用的的約束中,約束作用的對象為對象為Sno屬性屬性則插入或修改則插入或修改Student 元組時元組時,作何處理?
13、,作何處理?要求要求Sno不能為空不能為空否則,拒絕執(zhí)行該操作否則,拒絕執(zhí)行該操作2021-12-21 16用戶定義完整性的實(shí)現(xiàn)用戶定義完整性的實(shí)現(xiàn)例:在例:在“教授工資不得低于教授工資不得低于1000元元”的約束中,約束作的約束中,約束作用的對象為工資用的對象為工資Sal屬性屬性則插入或修改職工元組時,則插入或修改職工元組時,作如何處理?作如何處理? 如果職稱如果職稱=教授教授時,時, Sal不能小于不能小于1000 否則,拒絕執(zhí)行該操作否則,拒絕執(zhí)行該操作2021-12-21 17參照完整性的實(shí)現(xiàn)參照完整性的實(shí)現(xiàn)v外碼是否可以接受空值的問題外碼是否可以接受空值的問題v刪除被參照關(guān)系的元組時
14、的問題刪除被參照關(guān)系的元組時的問題v修改被參照關(guān)系中主碼的問題修改被參照關(guān)系中主碼的問題2021-12-21 18外碼是否可以接受空值的問題外碼是否可以接受空值的問題v外碼是否能夠取空值是依賴于應(yīng)用環(huán)境的語義外碼是否能夠取空值是依賴于應(yīng)用環(huán)境的語義的。的。v在實(shí)現(xiàn)參照完整性時,系統(tǒng)除了應(yīng)該提供定義在實(shí)現(xiàn)參照完整性時,系統(tǒng)除了應(yīng)該提供定義外碼的機(jī)制,還應(yīng)提供定義外碼列是否允許空外碼的機(jī)制,還應(yīng)提供定義外碼列是否允許空值的機(jī)制。值的機(jī)制。2021-12-21 19例例1:在職工部門數(shù)據(jù)庫中,:在職工部門數(shù)據(jù)庫中,EMP關(guān)系包含有外碼關(guān)系包含有外碼Deptno,某,某一元組的這一列若為空值,表示這個
15、職工尚未分配到任何具體一元組的這一列若為空值,表示這個職工尚未分配到任何具體的部門工作。的部門工作。 這和應(yīng)用環(huán)境的語義是相符的,這和應(yīng)用環(huán)境的語義是相符的, 因此因此EMP的的Deptno列應(yīng)允許空值。列應(yīng)允許空值。例例2:在學(xué)生選課數(shù)據(jù)庫中,:在學(xué)生選課數(shù)據(jù)庫中,Student關(guān)系為被參照關(guān)系,其主關(guān)系為被參照關(guān)系,其主碼為碼為Sno。SC為參照關(guān)系,外碼為為參照關(guān)系,外碼為Sno。若若SC的的Sno為空值,則表明尚不存在的某個學(xué)生,或者某個不知為空值,則表明尚不存在的某個學(xué)生,或者某個不知學(xué)號的學(xué)生,選修了某門課程,其成績記錄在學(xué)號的學(xué)生,選修了某門課程,其成績記錄在Grade列中。列中
16、。 這與學(xué)校的應(yīng)用環(huán)境是不相符的,這與學(xué)校的應(yīng)用環(huán)境是不相符的,因此因此SC的的Sno列不能取空值。列不能取空值。20刪除被參照關(guān)系的元組時的問題刪除被參照關(guān)系的元組時的問題v出現(xiàn)違約操作的情形出現(xiàn)違約操作的情形需要刪除被參照關(guān)系的某個元組,而參照關(guān)系有若干元組的外碼值需要刪除被參照關(guān)系的某個元組,而參照關(guān)系有若干元組的外碼值與被刪除的被參照關(guān)系的主碼值相對應(yīng)與被刪除的被參照關(guān)系的主碼值相對應(yīng)v違約反應(yīng):可有三種策略違約反應(yīng):可有三種策略級聯(lián)刪除(級聯(lián)刪除(CASCADES)v將參照關(guān)系中所有外碼值與被參照關(guān)系中要刪除元組主碼值相對應(yīng)的元將參照關(guān)系中所有外碼值與被參照關(guān)系中要刪除元組主碼值相對
17、應(yīng)的元組一起刪除。組一起刪除。受限刪除(受限刪除(RESTRICTED)v只有當(dāng)參照關(guān)系中沒有任何元組的外碼值與要刪除的被參照關(guān)系的元組只有當(dāng)參照關(guān)系中沒有任何元組的外碼值與要刪除的被參照關(guān)系的元組的主碼值相對應(yīng)時,系統(tǒng)才執(zhí)行刪除操作,否則拒絕此刪除操作。的主碼值相對應(yīng)時,系統(tǒng)才執(zhí)行刪除操作,否則拒絕此刪除操作。置空值刪除(置空值刪除(NULLIFIES)v刪除被參照關(guān)系的元組,并將參照關(guān)系中所有與被參照關(guān)系中被刪除元組主碼值相等刪除被參照關(guān)系的元組,并將參照關(guān)系中所有與被參照關(guān)系中被刪除元組主碼值相等的外碼值置為空值。的外碼值置為空值。這三種處理方法,哪一種是正確的,要依應(yīng)用環(huán)境的語義這三種
18、處理方法,哪一種是正確的,要依應(yīng)用環(huán)境的語義來定。來定。2021-12-21 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í)行此刪除操作。置空值刪除:置空值刪除: 將將
19、SC關(guān)系中所有關(guān)系中所有Sno=200801的元組的的元組的Sno值置為空值。值置為空值。在學(xué)生選課數(shù)據(jù)庫中,顯然第一種方法和第二種方法都是在學(xué)生選課數(shù)據(jù)庫中,顯然第一種方法和第二種方法都是對的。第三種方法不符合應(yīng)用環(huán)境語義。對的。第三種方法不符合應(yīng)用環(huán)境語義。22修改被參照關(guān)系中主碼的問題修改被參照關(guān)系中主碼的問題v兩種策略兩種策略不允許修改主碼不允許修改主碼允許修改主碼允許修改主碼 v允許修改主碼策略允許修改主碼策略違約操作違約操作要要修改被參照關(guān)系修改被參照關(guān)系中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等于被參照關(guān)系要修改的
20、主碼值于被參照關(guān)系要修改的主碼值要要修改參照關(guān)系修改參照關(guān)系中某些元組的主碼值,而被參照關(guān)系中沒有任何元組的外碼值等中某些元組的主碼值,而被參照關(guān)系中沒有任何元組的外碼值等于被參照關(guān)系修改后的主碼值于被參照關(guān)系修改后的主碼值違約反應(yīng)違約反應(yīng)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)修改2021-12-21 23修改被參照關(guān)系中主碼的問題(續(xù))修改被參照關(guān)系中主碼的問題(續(xù))級聯(lián)修改級聯(lián)修改v修改被參照關(guān)系中主碼值同時,用相
21、同的方法修改參修改被參照關(guān)系中主碼值同時,用相同的方法修改參照關(guān)系中相應(yīng)的外碼值。照關(guān)系中相應(yīng)的外碼值。受限修改受限修改v拒絕此修改操作。只當(dāng)參照關(guān)系中沒有任何元組的外拒絕此修改操作。只當(dāng)參照關(guān)系中沒有任何元組的外碼值等于被參照關(guān)系中某個元組的主碼值時,這個元碼值等于被參照關(guān)系中某個元組的主碼值時,這個元組的主碼值才能被修改。組的主碼值才能被修改。置空值修改置空值修改v修改被參照關(guān)系中主碼值,同時將參照關(guān)系中相應(yīng)的修改被參照關(guān)系中主碼值,同時將參照關(guān)系中相應(yīng)的外碼值置為空值。外碼值置為空值。2021-12-21 24v例:學(xué)生例:學(xué)生200801休學(xué)一年后復(fù)學(xué),這時需要將休學(xué)一年后復(fù)學(xué),這時需
22、要將Student關(guān)系關(guān)系中中Sno=200801的元組中的元組中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 的元
23、組的的元組的Sno值改為值改為 200923 。置空值修改置空值修改: 將將Student表中表中Sno= 200801 的元組的的元組的Sno值改為值改為 200923 。而將。而將S表中所有表中所有Sno= 200801 的元組的的元組的Sno值置為空值值置為空值。在學(xué)生選課數(shù)據(jù)庫中只有第一種方法是正確的。在學(xué)生選課數(shù)據(jù)庫中只有第一種方法是正確的。2021-12-21 25小結(jié)小結(jié)v如何進(jìn)行完整性維護(hù)系統(tǒng)的設(shè)計(jì)?如何進(jìn)行完整性維護(hù)系統(tǒng)的設(shè)計(jì)?1 如何表達(dá)完整性約束條件?如何表達(dá)完整性約束條件?2 如何檢查完整性約束條件?如何檢查?如何檢查完整性約束條件?如何檢查?3 違反條件時候的如何處理
24、?違反條件時候的如何處理?DBMSDBMS中完整性的定義:中完整性的定義:使用約束使用約束完整性的類型完整性的類型約束的類型約束的類型說明說明實(shí)體完整性實(shí)體完整性PRIMARY KEY唯一標(biāo)識每一行,保證用戶不輸入重復(fù)的數(shù)據(jù),且創(chuàng)建一個索引來提高性能。不允許空值UNIQUE防止非主關(guān)鍵字的重復(fù),并保證創(chuàng)建一個索引來提高性能。允許空值用戶定義完整用戶定義完整性性DEFAULT指定在INSERT語句中沒有明確提供一個值時,為該列提供的值CHECK指定在一個列中可接受的數(shù)據(jù)值參照完整性參照完整性FOREIGN KEY定義一個列或幾個列的組合,他們的值匹配同一個表或另一個表中關(guān)鍵字2021-12-21
25、 27CREATE TABLECREATE TABLE定義約束定義約束v約束涉及單個屬性的,有兩種說明方法約束涉及單個屬性的,有兩種說明方法 定義為列級約束條件定義為列級約束條件定義為表級約束條件定義為表級約束條件v若約束涉及多個屬性的,只有一種說明方法若約束涉及多個屬性的,只有一種說明方法定義為表級約束條件定義為表級約束條件 28v列級約束列級約束例1. CREATE TABLE語句中定義列級約束 CREATE TABLE S ( sno NUMERIC(6) PRIMARY KEY, -列級約束列級約束 sname CHAR(8) NOT NULL, age NUMERIC(3,0), s
26、ex CHAR(2), bplace CHAR(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, Ena
27、me varchar(8), Sex char(2), Age int, Dno char(2) );v在屬性列表后單獨(dú)說明主碼,表級約束在屬性列表后單獨(dú)說明主碼,表級約束 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
28、TABLE Employee ADD CONSTRAINT 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)鍵字的一個列或多個列上應(yīng)用應(yīng)用UNIQUE約束約束v
29、通過在指定列上創(chuàng)建唯一索引強(qiáng)制通過在指定列上創(chuàng)建唯一索引強(qiáng)制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 E
30、mployee ADD UNIQUE(Ename); /* 系統(tǒng)將自動為此約束名賦值系統(tǒng)將自動為此約束名賦值 */2021-12-21 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);33IDENTITYIDENTIT
31、Y屬性屬性v每一個表都可有一標(biāo)識列,其中包含由系統(tǒng)自動生每一個表都可有一標(biāo)識列,其中包含由系統(tǒng)自動生成的能夠標(biāo)識表中每一行數(shù)據(jù)的唯一序列值。成的能夠標(biāo)識表中每一行數(shù)據(jù)的唯一序列值。v格式:格式:IDENTITY ( SEED, INCREMENT) vSEED初始值,表中的第一行數(shù)據(jù)的標(biāo)識列的取值,默認(rèn)值為初始值,表中的第一行數(shù)據(jù)的標(biāo)識列的取值,默認(rèn)值為1vINCREMEN步長值,每一新標(biāo)識值比上一個增長多少,默認(rèn)值步長值,每一新標(biāo)識值比上一個增長多少,默認(rèn)值為為1v使用IDENTITY列時,應(yīng)注意:每張表只允許有一個每張表只允許有一個IDENTITY列列該列必須使用下列數(shù)據(jù)類型之一:deci
32、mal、numeric、int、smallint 和 tinyint該列必須設(shè)置成不允許為空值,且不能有默認(rèn)值該列必須設(shè)置成不允許為空值,且不能有默認(rèn)值2021-12-21 34DEFAULTDEFAULT約束約束v只應(yīng)用于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的默認(rèn)值取值為的默認(rèn)值取值為“助工助工”。 ALTER TABLE
33、 Employee ADD CONSTRAINT DF_Title DEFAULT 助工助工 for Title;2021-12-21 35CHECKCHECK約束約束v在每次執(zhí)行INSERT或UPDATE語句時驗(yàn)證數(shù)據(jù)v可以引用同一表中的其他列可以引用同一表中的其他列v不能在具有IDENTITY屬性的列或具有timestamp或uniqueidentifier數(shù)據(jù)類型的列上放置CHECK約束v不能含有子查詢v例例10.增加列性別取值約束。增加列性別取值約束。ALTER TABLE EmployeeADD CONSTRAINT ck_sex CHECK (sex in (男男,女女);2021
34、-12-21 36vCHECK約束也可涉及到表中多個域,稱為元組約約束也可涉及到表中多個域,稱為元組約束。束。v在對整個元組完成插入或?qū)δ骋辉M的修改完成之后,系統(tǒng)將檢查元組是否符合CHECK條件表達(dá)式。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ī)則 CRE
35、ATE RULE telephone_rule AS telephone like 0-90-90-90-90-90-90-90-9;2021-12-21 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ù)類型時使用。2021-12-2
36、1 83v例例7. 將規(guī)則綁定到列。將規(guī)則綁定到列。 EXEC 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, future
37、only;2021-12-21 84v使用使用sp_unbindrule系統(tǒng)存儲過程可以解除系統(tǒng)存儲過程可以解除捆綁到列或用戶自定義數(shù)據(jù)類型上的規(guī)則。捆綁到列或用戶自定義數(shù)據(jù)類型上的規(guī)則。v語法:sp_unbindrule object_name,futureonly_flag2021-12-21 85v例例10. 解除綁定列上的規(guī)則。解除綁定列上的規(guī)則。 EXEC sp_unbindrule Employee.Age;v例例11. 解除綁定別名類型的規(guī)則。解除綁定別名類型的規(guī)則。 EXEC sp_unbindrule telephone, futureonly;2021-12-21 86查看
38、規(guī)則查看規(guī)則v使用企業(yè)管理器使用企業(yè)管理器v使用系統(tǒng)存儲過程使用系統(tǒng)存儲過程sp_help可以查看規(guī)則的可以查看規(guī)則的擁有者、創(chuàng)建時間等基本信息。擁有者、創(chuàng)建時間等基本信息。v使用系統(tǒng)存儲過程使用系統(tǒng)存儲過程sp_helptext可以查看規(guī)則可以查看規(guī)則的定義。的定義。2021-12-21 87刪除規(guī)則刪除規(guī)則v使用使用DROP RULE語句可以刪除當(dāng)前數(shù)據(jù)庫語句可以刪除當(dāng)前數(shù)據(jù)庫中的一個或多個規(guī)則。中的一個或多個規(guī)則。v在刪除一個規(guī)則之前,應(yīng)首先將規(guī)則從它所在刪除一個規(guī)則之前,應(yīng)首先將規(guī)則從它所捆綁的列或用戶自定義數(shù)據(jù)類型上解除下來。捆綁的列或用戶自定義數(shù)據(jù)類型上解除下來。當(dāng)要刪除的規(guī)則仍捆
39、綁在列或用戶自定義數(shù)據(jù)類當(dāng)要刪除的規(guī)則仍捆綁在列或用戶自定義數(shù)據(jù)類型上時,執(zhí)行型上時,執(zhí)行DROP RULE會顯示錯誤信息,同會顯示錯誤信息,同時時DROP RULE操作將被撤銷。操作將被撤銷。2021-12-21 88v例例12. 刪除規(guī)則刪除規(guī)則 -先解除綁定在列上的該規(guī)則先解除綁定在列上的該規(guī)則EXEC sp_unbindrule Employee.Age; -然后在刪除該規(guī)則然后在刪除該規(guī)則DROP RULE range_rule;2021-12-21 893 3 默認(rèn)值默認(rèn)值v默認(rèn)值可以是常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。默認(rèn)值可以是常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。v使用使用CREATE TA
40、BLE語句創(chuàng)建表時,使用語句創(chuàng)建表時,使用DEFAULT子句為表中的列提供默認(rèn)值。子句為表中的列提供默認(rèn)值。v使用使用CREATE DEFAULT語句來創(chuàng)建一個默語句來創(chuàng)建一個默認(rèn)對象,然后再將其捆綁到列或用戶自定義認(rèn)對象,然后再將其捆綁到列或用戶自定義數(shù)據(jù)類型上。數(shù)據(jù)類型上。2021-12-21 90創(chuàng)建默認(rèn)值創(chuàng)建默認(rèn)值v使用使用T-SQL語句語句CREATE DEFAULT可以創(chuàng)可以創(chuàng)建默認(rèn)對象。建默認(rèn)對象。v語法:語法: CREATE DEFAULT defaultAS constant_expression2021-12-21 91捆綁默認(rèn)值捆綁默認(rèn)值v可以使用可以使用sp_binde
41、fault系統(tǒng)存儲過程系統(tǒng)存儲過程v語法:語法:sp_bindefault default, object_name, futureonly_flagv使用使用sp_unbindefault系統(tǒng)存儲過程可以解除捆綁系統(tǒng)存儲過程可以解除捆綁導(dǎo)列或用戶自定義數(shù)據(jù)類型上的默認(rèn)值。導(dǎo)列或用戶自定義數(shù)據(jù)類型上的默認(rèn)值。v語法:語法:sp_unbindefault object_name,futureonly_flag2021-12-21 92v例例13. 創(chuàng)建默認(rèn)值創(chuàng)建默認(rèn)值addressdefault。 CREATE DEFAULT addressdefault AS 杭州下沙杭州下沙;v例例14.
42、綁定默認(rèn)值。綁定默認(rèn)值。 EXEC sp_bindefault addressdefault , Employee.Address;v例例15. 解除默認(rèn)值。解除默認(rèn)值。 EXEC sp_unbindefault Employee.Address;2021-12-21 93查看默認(rèn)值查看默認(rèn)值v可使用企業(yè)管理器??墒褂闷髽I(yè)管理器。v可使用系統(tǒng)存儲過程可使用系統(tǒng)存儲過程sp_help可以查看默認(rèn)可以查看默認(rèn)值的擁有者、創(chuàng)建時間等基本信息。值的擁有者、創(chuàng)建時間等基本信息。v可使用系統(tǒng)存儲過程可使用系統(tǒng)存儲過程sp_helptext可以查看默可以查看默認(rèn)值的定義。認(rèn)值的定義。2021-12-21 9
43、4刪除默認(rèn)值刪除默認(rèn)值v使用使用DROP DEFAULT語句可以刪除當(dāng)前數(shù)語句可以刪除當(dāng)前數(shù)據(jù)庫中的一個或多個默認(rèn)值。據(jù)庫中的一個或多個默認(rèn)值。v注意:注意:在刪除默認(rèn)值之前,應(yīng)使用在刪除默認(rèn)值之前,應(yīng)使用sp_unbindefault系系統(tǒng)存儲過程來解除該默認(rèn)值在列或用戶自定義數(shù)統(tǒng)存儲過程來解除該默認(rèn)值在列或用戶自定義數(shù)據(jù)類型上的捆綁。據(jù)類型上的捆綁。95數(shù)據(jù)完整性數(shù)據(jù)完整性 小結(jié)小結(jié)v數(shù)據(jù)庫的完整性是為了保證數(shù)據(jù)庫中存儲的數(shù)據(jù)庫的完整性是為了保證數(shù)據(jù)庫中存儲的數(shù)據(jù)是正確的數(shù)據(jù)是正確的vRDBMS完整性實(shí)現(xiàn)的機(jī)制完整性實(shí)現(xiàn)的機(jī)制完整性約束定義機(jī)制完整性約束定義機(jī)制完整性檢查機(jī)制完整性檢查機(jī)制
44、違背完整性約束條件時違背完整性約束條件時RDBMS應(yīng)采取的動作應(yīng)采取的動作v在關(guān)系系統(tǒng)中,最重要的完整性約束是在關(guān)系系統(tǒng)中,最重要的完整性約束是實(shí)體完整性實(shí)體完整性參照完整性參照完整性用戶定義的完整性用戶定義的完整性v數(shù)據(jù)庫完整性的定義數(shù)據(jù)庫完整性的定義一般由一般由SQL的的DDL語句實(shí)現(xiàn)語句實(shí)現(xiàn)作為數(shù)據(jù)庫模式的一部分存入數(shù)據(jù)字典作為數(shù)據(jù)庫模式的一部分存入數(shù)據(jù)字典在數(shù)據(jù)庫數(shù)據(jù)修改時在數(shù)據(jù)庫數(shù)據(jù)修改時,RDBMS的完整性檢查機(jī)制的完整性檢查機(jī)制就按照數(shù)據(jù)字典中定義的這些約束進(jìn)行檢查就按照數(shù)據(jù)字典中定義的這些約束進(jìn)行檢查v完整性機(jī)制的實(shí)施會影響系統(tǒng)性能。隨著硬完整性機(jī)制的實(shí)施會影響系統(tǒng)性能。隨著硬
45、件性能的提高,數(shù)據(jù)庫技術(shù)的發(fā)展,目前的件性能的提高,數(shù)據(jù)庫技術(shù)的發(fā)展,目前的RDBMS都提供了定義和檢查實(shí)體完整性、都提供了定義和檢查實(shí)體完整性、參照完整性和用戶定義的完整性的功能。參照完整性和用戶定義的完整性的功能。v對于違反完整性的操作對于違反完整性的操作要根據(jù)應(yīng)用語義來選擇合適的處理策略,以保證要根據(jù)應(yīng)用語義來選擇合適的處理策略,以保證數(shù)據(jù)庫的正確性數(shù)據(jù)庫的正確性2021-12-21 97可能破壞參照完整性的情況及違約處理可能破壞參照完整性的情況及違約處理被參照表(例如被參照表(例如StudentStudent)參照表(例如參照表(例如SCSC)違約處理違約處理可能破壞參照完整性可能破壞
46、參照完整性 插入元組插入元組拒絕拒絕可能破壞參照完整性可能破壞參照完整性 修改外碼值修改外碼值拒絕拒絕刪除元組刪除元組 可能破壞參照可能破壞參照完整性完整性拒絕拒絕/ /級連刪除級連刪除/ /設(shè)置為空值設(shè)置為空值修改主碼值修改主碼值 可能破壞參照可能破壞參照完整性完整性拒絕拒絕/ /級連修改級連修改/ /設(shè)置為空值設(shè)置為空值2021-12-21 98完整性小結(jié)(續(xù)):觸發(fā)器完整性小結(jié)(續(xù)):觸發(fā)器v實(shí)現(xiàn)數(shù)據(jù)庫完整性的一個重要方法是觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)庫完整性的一個重要方法是觸發(fā)器是定義在關(guān)系表上的由事件驅(qū)動的特殊過程是定義在關(guān)系表上的由事件驅(qū)動的特殊過程可以用于數(shù)據(jù)庫完整性檢查可以用于數(shù)據(jù)庫完整性檢
47、查也可以用來實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)的其他功能也可以用來實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)的其他功能數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性應(yīng)用系統(tǒng)的一些業(yè)務(wù)流程和控制流程應(yīng)用系統(tǒng)的一些業(yè)務(wù)流程和控制流程基于規(guī)則的數(shù)據(jù)和業(yè)務(wù)控制功能基于規(guī)則的數(shù)據(jù)和業(yè)務(wù)控制功能 v不同的不同的RDBMS實(shí)現(xiàn)觸發(fā)器的語法不同實(shí)現(xiàn)觸發(fā)器的語法不同2021-12-21 99作業(yè)作業(yè) 1v準(zhǔn)備第三次上機(jī)實(shí)驗(yàn)內(nèi)容(準(zhǔn)備第三次上機(jī)實(shí)驗(yàn)內(nèi)容(1)詳見附錄詳見附錄A:“上機(jī)實(shí)驗(yàn)八上機(jī)實(shí)驗(yàn)八 完整性約束的實(shí)現(xiàn)完整性約束的實(shí)現(xiàn)”。在在Microsoft SQL Server 環(huán)境中,上機(jī)實(shí)現(xiàn)書環(huán)境中,上機(jī)實(shí)現(xiàn)書中第中第4章的各例題。章的各例題。2021-12-21 100SQ
48、L語言語言高級應(yīng)用(二)高級應(yīng)用(二)4.3 數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性2021-12-21 101數(shù)據(jù)庫保護(hù)數(shù)據(jù)庫保護(hù)v數(shù)據(jù)庫中的數(shù)據(jù)由數(shù)據(jù)庫中的數(shù)據(jù)由DBMS統(tǒng)一管理控制,為統(tǒng)一管理控制,為適應(yīng)數(shù)據(jù)共享的環(huán)境,適應(yīng)數(shù)據(jù)共享的環(huán)境,DBMS必須提供數(shù)據(jù)必須提供數(shù)據(jù)的的安全性、完整性、并發(fā)控制和數(shù)據(jù)備份恢安全性、完整性、并發(fā)控制和數(shù)據(jù)備份恢復(fù)復(fù)等等數(shù)據(jù)保護(hù)數(shù)據(jù)保護(hù)能力,以保證數(shù)據(jù)庫中的數(shù)據(jù)能力,以保證數(shù)據(jù)庫中的數(shù)據(jù)安全可靠和正確有效。安全可靠和正確有效。2021-12-21 1021. 完整性完整性v數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性與相容性。與相容性。
49、vSQL語言定義完整性約束條件語言定義完整性約束條件CREATE TABLE語句語句ALTER TABLE語句語句v實(shí)體完整性:實(shí)體完整性: primary key、uniquev參照完整性:參照完整性:foreign keyv用戶定義完整性:用戶定義完整性:check、default2021-12-21 1032. 安全性安全性v安全性:保護(hù)數(shù)據(jù)庫,防止不合法的使用安全性:保護(hù)數(shù)據(jù)庫,防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。所造成的數(shù)據(jù)泄露和破壞。v保證數(shù)據(jù)安全性的主要措施保證數(shù)據(jù)安全性的主要措施: :存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù),存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù),規(guī)
50、定不同用戶對于不同數(shù)據(jù)對象所允許執(zhí)行的操作規(guī)定不同用戶對于不同數(shù)據(jù)對象所允許執(zhí)行的操作2021-12-21 1043. 并發(fā)控制并發(fā)控制v并發(fā)控制:當(dāng)多個用戶并發(fā)地對數(shù)據(jù)庫進(jìn)行并發(fā)控制:當(dāng)多個用戶并發(fā)地對數(shù)據(jù)庫進(jìn)行操作時,對他們加以控制、協(xié)調(diào),以保證并操作時,對他們加以控制、協(xié)調(diào),以保證并發(fā)操作正確執(zhí)行,保持?jǐn)?shù)據(jù)庫的一致性。發(fā)操作正確執(zhí)行,保持?jǐn)?shù)據(jù)庫的一致性。vSQL語言并發(fā)控制能力:語言并發(fā)控制能力:提供事務(wù)開始、事務(wù)結(jié)束、提交、撤銷等概念提供事務(wù)開始、事務(wù)結(jié)束、提交、撤銷等概念2021-12-21 1054. 數(shù)據(jù)備份恢復(fù)數(shù)據(jù)備份恢復(fù)v恢復(fù):當(dāng)發(fā)生各種類型的故障導(dǎo)致數(shù)據(jù)庫處恢復(fù):當(dāng)發(fā)生各種
51、類型的故障導(dǎo)致數(shù)據(jù)庫處于不一致狀態(tài)時,將數(shù)據(jù)庫恢復(fù)到一致狀態(tài)于不一致狀態(tài)時,將數(shù)據(jù)庫恢復(fù)到一致狀態(tài)的功能。的功能。vSQL語言恢復(fù)功能:語言恢復(fù)功能:提供事務(wù)回滾、重做等概念(提供事務(wù)回滾、重做等概念(UNDO、REDO)2021-12-21 106數(shù)據(jù)安全性數(shù)據(jù)安全性v數(shù)據(jù)庫系統(tǒng)的安全性是數(shù)據(jù)庫保護(hù)的首要數(shù)據(jù)庫系統(tǒng)的安全性是數(shù)據(jù)庫保護(hù)的首要問題。問題。v安全性是相對的。安全性是相對的。v加強(qiáng)安全性是應(yīng)用開發(fā)一個重要的方面。加強(qiáng)安全性是應(yīng)用開發(fā)一個重要的方面。v安全性與保密性不可分。安全性與保密性不可分。v本節(jié)主要討論安全性的一般概念和方法,本節(jié)主要討論安全性的一般概念和方法,介紹介紹SQL
52、ServerSQL Server數(shù)據(jù)庫系統(tǒng)的安全性措施。數(shù)據(jù)庫系統(tǒng)的安全性措施。2021-12-21 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),就是要防止),就是要防止其中第四種。其中第四種。 2021-12-21 108數(shù)據(jù)庫安全性概念數(shù)據(jù)庫安全性概念v何為數(shù)據(jù)庫安全性?何為數(shù)據(jù)庫安全性?保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的
53、數(shù)據(jù)泄露、更改或保護(hù)數(shù)據(jù)庫以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。破壞。v系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能指標(biāo)之一。指標(biāo)之一。v安全性問題和保密問題密切相關(guān)。安全性問題和保密問題密切相關(guān)。前者主要涉及數(shù)據(jù)的存取控制、前者主要涉及數(shù)據(jù)的存取控制、 修改和傳播的技術(shù)手段;修改和傳播的技術(shù)手段;后者在很大程度上是法律、政策、倫理、道德等問題。后者在很大程度上是法律、政策、倫理、道德等問題。一些國家已成立了專門機(jī)構(gòu)對數(shù)據(jù)的安全保密制訂了法律道一些國家已成立了專門機(jī)構(gòu)對數(shù)據(jù)的安全保密制訂了法律道德準(zhǔn)則和政策法規(guī)。德準(zhǔn)則和政策法規(guī)。202
54、1-12-21 109數(shù)據(jù)庫安全保密方式數(shù)據(jù)庫安全保密方式v數(shù)據(jù)庫安全保密方式有:系統(tǒng)處理的和物理的兩個數(shù)據(jù)庫安全保密方式有:系統(tǒng)處理的和物理的兩個方面。方面。v所謂物理的是指,對于強(qiáng)力逼迫透露口令、在通訊所謂物理的是指,對于強(qiáng)力逼迫透露口令、在通訊線路上竊聽、以至盜竊物理存儲設(shè)備等行為而采取線路上竊聽、以至盜竊物理存儲設(shè)備等行為而采取的將數(shù)據(jù)編為密碼,加強(qiáng)警衛(wèi)以識別用戶身份和保的將數(shù)據(jù)編為密碼,加強(qiáng)警衛(wèi)以識別用戶身份和保護(hù)存儲設(shè)備等措施。護(hù)存儲設(shè)備等措施。v所謂系統(tǒng)處理的是指利用計(jì)算機(jī)系統(tǒng)方面的技術(shù)手所謂系統(tǒng)處理的是指利用計(jì)算機(jī)系統(tǒng)方面的技術(shù)手段。段。v本節(jié)主要講述系統(tǒng)處理方面的數(shù)據(jù)庫安全措
55、施。本節(jié)主要講述系統(tǒng)處理方面的數(shù)據(jù)庫安全措施。2021-12-21 110計(jì)算機(jī)安全措施設(shè)置模型計(jì)算機(jī)安全措施設(shè)置模型v在一般計(jì)算機(jī)系統(tǒng)中,安全措施是一級一級層層設(shè)置的。有如下的模型:2021-12-21 111數(shù)據(jù)庫安全措施數(shù)據(jù)庫安全措施v數(shù)據(jù)庫系統(tǒng)的安全措施是建立在計(jì)算機(jī)系統(tǒng)數(shù)據(jù)庫系統(tǒng)的安全措施是建立在計(jì)算機(jī)系統(tǒng)基礎(chǔ)之上的,通常有五個方面?;A(chǔ)之上的,通常有五個方面。v1. 1. 用戶標(biāo)識和鑒定用戶標(biāo)識和鑒定v2. 2. 存取控制存取控制v3. 3. 定義視圖定義視圖v4. 4. 審計(jì)審計(jì)v5. 5. 數(shù)據(jù)加密數(shù)據(jù)加密2021-12-21 112安全措施一:安全措施一:用戶標(biāo)識和鑒定用戶標(biāo)
56、識和鑒定v用戶標(biāo)識和鑒定用戶標(biāo)識和鑒定常用的方法有:常用的方法有:(1 1)用一個用戶名或用戶標(biāo)識號標(biāo)明用戶身份。)用一個用戶名或用戶標(biāo)識號標(biāo)明用戶身份。(2 2)口令)口令(Password)(Password)(3 3)系統(tǒng)提供一個隨機(jī)數(shù),用戶根據(jù)預(yù)先約定好的)系統(tǒng)提供一個隨機(jī)數(shù),用戶根據(jù)預(yù)先約定好的某一過程或者函數(shù)進(jìn)行計(jì)算,系統(tǒng)根據(jù)用戶計(jì)算結(jié)某一過程或者函數(shù)進(jìn)行計(jì)算,系統(tǒng)根據(jù)用戶計(jì)算結(jié)果是否正確進(jìn)一步鑒定用戶身份。果是否正確進(jìn)一步鑒定用戶身份。v用戶標(biāo)識和鑒定可重復(fù)多次。用戶標(biāo)識和鑒定可重復(fù)多次。2021-12-21 113安全措施二:安全措施二:存取控制存取控制v對于獲得上機(jī)權(quán)的用戶還
57、要根據(jù)預(yù)先定義好的用戶權(quán)限進(jìn)行對于獲得上機(jī)權(quán)的用戶還要根據(jù)預(yù)先定義好的用戶權(quán)限進(jìn)行存取控制,保證用戶只能存取他有權(quán)存取的數(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)模式建立、修改、檢索建立、修改、檢索表或者記錄、字段表或者記錄、字段查找、插入、修改、刪除查找、插入、修改、刪除2021-12-21 114安全措施三:安全措施三
58、:視圖視圖v視圖主要用于保證程序的邏輯獨(dú)立性,也還視圖主要用于保證程序的邏輯獨(dú)立性,也還可將機(jī)密數(shù)據(jù)隱藏起來,能提供一定程度的可將機(jī)密數(shù)據(jù)隱藏起來,能提供一定程度的安全保護(hù),但不精細(xì)。安全保護(hù),但不精細(xì)。v不同的不同的DBMSDBMS都提供了建立視圖的機(jī)制。都提供了建立視圖的機(jī)制。v開發(fā)數(shù)據(jù)系統(tǒng)時應(yīng)盡可能地為不同的用戶建開發(fā)數(shù)據(jù)系統(tǒng)時應(yīng)盡可能地為不同的用戶建立相應(yīng)的視圖來訪問數(shù)據(jù)。立相應(yīng)的視圖來訪問數(shù)據(jù)。 如建立一個如建立一個“信息管理系學(xué)生視圖信息管理系學(xué)生視圖”2021-12-21 115安全措施四:安全措施四:審計(jì)審計(jì)v審計(jì)是一種審計(jì)是一種預(yù)防手段,監(jiān)測可能的不合法訪問。預(yù)防手段,監(jiān)測可
59、能的不合法訪問。v審訊追蹤技術(shù)使用專用文件或數(shù)據(jù)庫自動記錄用戶審訊追蹤技術(shù)使用專用文件或數(shù)據(jù)庫自動記錄用戶對數(shù)據(jù)庫的所有操作,利用這些信息就能找出非法對數(shù)據(jù)庫的所有操作,利用這些信息就能找出非法存取數(shù)據(jù)的人。存取數(shù)據(jù)的人。v審訊追蹤很費(fèi)時間和空間,一般審訊追蹤很費(fèi)時間和空間,一般DBMSDBMS只作為一種可只作為一種可選的特性,可靈活地打開或關(guān)閉審計(jì)功能。選的特性,可靈活地打開或關(guān)閉審計(jì)功能。v審計(jì)功能一般用于安全性要求較高的部門。審計(jì)功能一般用于安全性要求較高的部門。 2021-12-21 116安全措施五:安全措施五:數(shù)據(jù)加密數(shù)據(jù)加密v對高度機(jī)密性數(shù)據(jù),通過采用數(shù)據(jù)加密技術(shù),以密碼形式存對
60、高度機(jī)密性數(shù)據(jù),通過采用數(shù)據(jù)加密技術(shù),以密碼形式存儲和傳輸,這樣即使數(shù)據(jù)被竊取,看到是無法辨識的二進(jìn)制儲和傳輸,這樣即使數(shù)據(jù)被竊取,看到是無法辨識的二進(jìn)制代碼。代碼。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ù)進(jìn)行加密處理,另外有一些數(shù)據(jù)庫產(chǎn)品雖本要求自動對數(shù)據(jù)進(jìn)行加密處理,另外有一些數(shù)據(jù)庫產(chǎ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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 華人青年雙十一營銷策劃
- 2025年餐廳勞動合同范本
- 2025個人借款簡單合同
- 2025公司合同贈送協(xié)議格式范本
- 硬質(zhì)阻燃塑料管PVC連接工藝
- 舞臺演出委托合同三篇
- 金融行業(yè)采購經(jīng)驗(yàn)分享
- 2025借條轉(zhuǎn)讓合同范文
- 學(xué)科教學(xué)的互動性及其對教學(xué)效果的影響分析
- 電子信息投資合同三篇
- 南充化工碼頭管網(wǎng)施工方案(初稿)
- 2023年消防接警員崗位理論知識考試參考題庫(濃縮500題)
- GB/T 30285-2013信息安全技術(shù)災(zāi)難恢復(fù)中心建設(shè)與運(yùn)維管理規(guī)范
- 魯濱遜漂流記閱讀任務(wù)單
- 第一章 運(yùn)營管理概論1
- 《創(chuàng)意繪畫在小學(xué)美術(shù)教育中的應(yīng)用(論文)6000字》
- 主體結(jié)構(gòu)驗(yàn)收匯報(bào)材料T圖文并茂
- 管理學(xué)原理(南大馬工程)
- 過一個有意義的寒假課件
- 施工現(xiàn)場裝配式集裝箱活動板房驗(yàn)收表
- 電力業(yè)擴(kuò)工程竣工驗(yàn)收單
評論
0/150
提交評論