




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2021-12-21 1SQL語(yǔ)言高級(jí)語(yǔ)言高級(jí)應(yīng)用應(yīng)用第第4章章 完整性和安全性完整性和安全性2021-12-21 2數(shù)據(jù)完整性數(shù)據(jù)完整性v何為數(shù)據(jù)完整性?何為數(shù)據(jù)完整性?P9:由由DBMS而不是用戶程序自動(dòng)檢查數(shù)據(jù)的一致性、而不是用戶程序自動(dòng)檢查數(shù)據(jù)的一致性、相容性,保證數(shù)據(jù)符合完整性約束條件。相容性,保證數(shù)據(jù)符合完整性約束條件。v數(shù)據(jù)須符合的條件或數(shù)據(jù)之間的關(guān)系數(shù)據(jù)須符合的條件或數(shù)據(jù)之間的關(guān)系數(shù)據(jù)類型準(zhǔn)確無(wú)誤數(shù)據(jù)類型準(zhǔn)確無(wú)誤數(shù)據(jù)的值滿足范圍設(shè)置數(shù)據(jù)的值滿足范圍設(shè)置同一表格數(shù)據(jù)之間不存在沖突同一表格數(shù)據(jù)之間不存在沖突多個(gè)表格數(shù)據(jù)之間不存在沖突多個(gè)表格數(shù)據(jù)之間不存在沖突2021-12-21 3
2、完整性約束條件完整性約束條件v整個(gè)完整性控制都是圍繞完整性約束條件進(jìn)行整個(gè)完整性控制都是圍繞完整性約束條件進(jìn)行的,從這個(gè)角度說(shuō),完整性約束條件是完整性的,從這個(gè)角度說(shuō),完整性約束條件是完整性控制機(jī)制的核心。控制機(jī)制的核心。2021-12-21 4v完整性約束條件作用的對(duì)象完整性約束條件作用的對(duì)象列列:對(duì)屬性的取值類型、范圍、精度等的約束條件元組元組:對(duì)元組中各個(gè)屬性列間的聯(lián)系的約束關(guān)系關(guān)系:對(duì)若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束v完整性約束條件作用的對(duì)象狀態(tài)完整性約束條件作用的對(duì)象狀態(tài)靜態(tài)靜態(tài)v對(duì)靜態(tài)對(duì)象的約束是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束v這是最重要的一類完整性約束動(dòng)態(tài)動(dòng)態(tài)v對(duì)動(dòng)態(tài)對(duì)
3、象的約束是反映數(shù)據(jù)庫(kù)狀態(tài)變遷的約束完整性約束條件完整性約束條件2021-12-21 5完整性約束條件分類完整性約束條件分類 對(duì)象狀態(tài)對(duì)象狀態(tài) 動(dòng)態(tài)列級(jí)約束動(dòng)態(tài)列級(jí)約束 動(dòng)態(tài)元組約束動(dòng)態(tài)元組約束 動(dòng)態(tài)關(guān)系約束動(dòng)態(tài)關(guān)系約束 動(dòng)態(tài)動(dòng)態(tài) 靜態(tài)列級(jí)約束靜態(tài)列級(jí)約束 靜態(tài)元組約束靜態(tài)元組約束 靜態(tài)關(guān)系約束靜態(tài)關(guān)系約束 靜態(tài)靜態(tài) 列列 元組元組 關(guān)系關(guān)系 對(duì)象粒度對(duì)象粒度6靜態(tài)列級(jí)約束靜態(tài)列級(jí)約束v靜態(tài)列級(jí)約束是對(duì)一個(gè)列的取值域的說(shuō)明靜態(tài)列級(jí)約束是對(duì)一個(gè)列的取值域的說(shuō)明,這是最常見(jiàn)最簡(jiǎn)單同時(shí)也最容易實(shí)現(xiàn)的一類完整性約束v五類靜態(tài)列級(jí)約束五類靜態(tài)列級(jí)約束對(duì)數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長(zhǎng)度、單位、精度等對(duì)數(shù)
4、據(jù)類型的約束,包括數(shù)據(jù)的類型、長(zhǎng)度、單位、精度等 例:規(guī)定學(xué)生姓名的數(shù)據(jù)類型應(yīng)為字符型,長(zhǎng)度為例:規(guī)定學(xué)生姓名的數(shù)據(jù)類型應(yīng)為字符型,長(zhǎng)度為8。對(duì)數(shù)據(jù)格式的約束對(duì)數(shù)據(jù)格式的約束例:規(guī)定學(xué)號(hào)的格式為前兩位表示入學(xué)年份,后四位為順序編號(hào);出生例:規(guī)定學(xué)號(hào)的格式為前兩位表示入學(xué)年份,后四位為順序編號(hào);出生日期的格式為日期的格式為YY.MM.DD。對(duì)取值范圍或取值集合的約束對(duì)取值范圍或取值集合的約束例:規(guī)定成績(jī)的取值范圍為例:規(guī)定成績(jī)的取值范圍為0-100;年齡的取值范圍為;年齡的取值范圍為14-29;性別的;性別的取值集合為取值集合為男男,女女。對(duì)空值的約束:空值表示未定義或未知的值,它與零值和空格不
5、同。有對(duì)空值的約束:空值表示未定義或未知的值,它與零值和空格不同。有的列允許空值,有的則不允許。的列允許空值,有的則不允許。 例:規(guī)定成績(jī)可以為空值。例:規(guī)定成績(jī)可以為空值。其他約束其他約束例:關(guān)于列的排序說(shuō)明,組合列等。例:關(guān)于列的排序說(shuō)明,組合列等。2021-12-21 7 靜態(tài)元組約束靜態(tài)元組約束v靜態(tài)元組約束就是規(guī)定組成一個(gè)元組的各個(gè)靜態(tài)元組約束就是規(guī)定組成一個(gè)元組的各個(gè)列之間的約束關(guān)系。列之間的約束關(guān)系。v例:訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,例:訂貨關(guān)系中包含發(fā)貨量、訂貨量等列,發(fā)貨量不得超過(guò)訂貨量發(fā)貨量不得超過(guò)訂貨量v例:教師關(guān)系中包含職稱、工資等列,例:教師關(guān)系中包含職稱、工資
6、等列, 教授的工資不得低于教授的工資不得低于700元元v 靜態(tài)元組約束只局限在單個(gè)元組上。靜態(tài)元組約束只局限在單個(gè)元組上。 2021-12-21 8靜態(tài)關(guān)系約束靜態(tài)關(guān)系約束v在一個(gè)關(guān)系的各個(gè)元組之間或者若干關(guān)系之間常常存在各種在一個(gè)關(guān)系的各個(gè)元組之間或者若干關(guān)系之間常常存在各種聯(lián)系或約束。聯(lián)系或約束。v常見(jiàn)靜態(tài)關(guān)系約束常見(jiàn)靜態(tài)關(guān)系約束實(shí)體完整性約束實(shí)體完整性約束參照完整性約束參照完整性約束函數(shù)依賴約束函數(shù)依賴約束統(tǒng)計(jì)約束統(tǒng)計(jì)約束v定義某個(gè)字段值與一個(gè)關(guān)系多個(gè)元組的統(tǒng)計(jì)值之間的約束關(guān)系定義某個(gè)字段值與一個(gè)關(guān)系多個(gè)元組的統(tǒng)計(jì)值之間的約束關(guān)系v例:規(guī)定部門(mén)經(jīng)理的工資不得高于本部門(mén)職工平均工資的例:規(guī)
7、定部門(mén)經(jīng)理的工資不得高于本部門(mén)職工平均工資的5倍,倍,不得低于本部門(mén)職工平均工資的不得低于本部門(mén)職工平均工資的2倍。本部門(mén)職工的平均工資值倍。本部門(mén)職工的平均工資值是一個(gè)統(tǒng)計(jì)計(jì)算值。是一個(gè)統(tǒng)計(jì)計(jì)算值。2021-12-21 9動(dòng)態(tài)列級(jí)約束動(dòng)態(tài)列級(jí)約束v動(dòng)態(tài)列級(jí)約束是修改列定義或列值時(shí)應(yīng)滿足的約束條動(dòng)態(tài)列級(jí)約束是修改列定義或列值時(shí)應(yīng)滿足的約束條件。件。v常見(jiàn)動(dòng)態(tài)列級(jí)約束常見(jiàn)動(dòng)態(tài)列級(jí)約束修改列定義時(shí)的約束修改列定義時(shí)的約束例:規(guī)定將原來(lái)允許空值的列改為不允許空值時(shí),如果該列目前例:規(guī)定將原來(lái)允許空值的列改為不允許空值時(shí),如果該列目前已存在空值,則拒絕這種修改。已存在空值,則拒絕這種修改。修改列值時(shí)的
8、約束修改列值時(shí)的約束v修改列值有時(shí)需要參照其舊值,并且新舊值之間需要修改列值有時(shí)需要參照其舊值,并且新舊值之間需要滿足某種約束條件。滿足某種約束條件。 例:職工工資調(diào)整不得低于其原來(lái)工資,學(xué)生年齡只能增長(zhǎng)例:職工工資調(diào)整不得低于其原來(lái)工資,學(xué)生年齡只能增長(zhǎng)2021-12-21 10動(dòng)態(tài)元組約束動(dòng)態(tài)元組約束v動(dòng)態(tài)元組約束是指修改某個(gè)元組的值時(shí)需要?jiǎng)討B(tài)元組約束是指修改某個(gè)元組的值時(shí)需要參照其舊值,并且新舊值之間需要滿足某種參照其舊值,并且新舊值之間需要滿足某種約束條件。約束條件。 v 例:職工工資調(diào)整不得低于其原來(lái)工資例:職工工資調(diào)整不得低于其原來(lái)工資+工齡工齡*1.52021-12-21 11動(dòng)
9、態(tài)關(guān)系約束動(dòng)態(tài)關(guān)系約束v動(dòng)態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的動(dòng)態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件。限制條件。v例:事務(wù)一致性、原子性等約束條件例:事務(wù)一致性、原子性等約束條件2021-12-21 12完整性約束條件小結(jié)完整性約束條件小結(jié) 粒粒 度度狀態(tài)狀態(tài)列列 級(jí)級(jí) 元元 組組 級(jí)級(jí) 關(guān)關(guān) 系系 級(jí)級(jí) 靜靜 態(tài)態(tài) 列定義列定義類型類型格式格式值域值域 空值空值 元組值應(yīng)滿足的元組值應(yīng)滿足的條件條件 實(shí)體完整性約束實(shí)體完整性約束 參照完整性約束參照完整性約束 函數(shù)依賴約束函數(shù)依賴約束 統(tǒng)計(jì)約束統(tǒng)計(jì)約束 動(dòng)動(dòng) 態(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定義功能定義功能一個(gè)完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整一個(gè)完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整性約束條件。性約束條件。v檢查功能檢查功能立即執(zhí)行的約束立即執(zhí)行的約束(Immediate constraints)v檢查是否違背完整性約束的時(shí)機(jī)通常是在一條語(yǔ)句執(zhí)行完后立即檢查是否違背完整性約束的時(shí)機(jī)通常是在一條語(yǔ)句執(zhí)行完后立即檢查,我們稱這類約束為立即執(zhí)行的約束檢查,我們稱這類約束為立即執(zhí)行的約束 延遲執(zhí)行的約束延遲執(zhí)行的約束
11、(Deferred constraints)v在某些情況下,完整性檢查需要延遲到整個(gè)事務(wù)執(zhí)行結(jié)束后再進(jìn)在某些情況下,完整性檢查需要延遲到整個(gè)事務(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對(duì)于違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則對(duì)于違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則的操作一般都是
12、采用拒絕執(zhí)行的方式進(jìn)行處理。的操作一般都是采用拒絕執(zhí)行的方式進(jìn)行處理。v而對(duì)于違反參照完整性的操作,并不都是簡(jiǎn)單地拒而對(duì)于違反參照完整性的操作,并不都是簡(jiǎn)單地拒絕執(zhí)行,有時(shí)還需要采取另一種方法,即接受這個(gè)絕執(zhí)行,有時(shí)還需要采取另一種方法,即接受這個(gè)操作,同時(shí)執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫(kù)的操作,同時(shí)執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫(kù)的狀態(tài)仍然是正確的。狀態(tài)仍然是正確的。2021-12-21 15實(shí)體完整性的實(shí)現(xiàn)實(shí)體完整性的實(shí)現(xiàn)例:在例:在“學(xué)號(hào)不能為空學(xué)號(hào)不能為空”的約束中,約束作用的的約束中,約束作用的對(duì)象為對(duì)象為Sno屬性屬性則插入或修改則插入或修改Student 元組時(shí)元組時(shí),作何處理?
13、,作何處理?要求要求Sno不能為空不能為空否則,拒絕執(zhí)行該操作否則,拒絕執(zhí)行該操作2021-12-21 16用戶定義完整性的實(shí)現(xiàn)用戶定義完整性的實(shí)現(xiàn)例:在例:在“教授工資不得低于教授工資不得低于1000元元”的約束中,約束作的約束中,約束作用的對(duì)象為工資用的對(duì)象為工資Sal屬性屬性則插入或修改職工元組時(shí),則插入或修改職工元組時(shí),作如何處理?作如何處理? 如果職稱如果職稱=教授教授時(shí),時(shí), Sal不能小于不能小于1000 否則,拒絕執(zhí)行該操作否則,拒絕執(zhí)行該操作2021-12-21 17參照完整性的實(shí)現(xiàn)參照完整性的實(shí)現(xiàn)v外碼是否可以接受空值的問(wèn)題外碼是否可以接受空值的問(wèn)題v刪除被參照關(guān)系的元組時(shí)
14、的問(wèn)題刪除被參照關(guān)系的元組時(shí)的問(wèn)題v修改被參照關(guān)系中主碼的問(wèn)題修改被參照關(guān)系中主碼的問(wèn)題2021-12-21 18外碼是否可以接受空值的問(wèn)題外碼是否可以接受空值的問(wèn)題v外碼是否能夠取空值是依賴于應(yīng)用環(huán)境的語(yǔ)義外碼是否能夠取空值是依賴于應(yīng)用環(huán)境的語(yǔ)義的。的。v在實(shí)現(xiàn)參照完整性時(shí),系統(tǒng)除了應(yīng)該提供定義在實(shí)現(xiàn)參照完整性時(shí),系統(tǒng)除了應(yīng)該提供定義外碼的機(jī)制,還應(yīng)提供定義外碼列是否允許空外碼的機(jī)制,還應(yīng)提供定義外碼列是否允許空值的機(jī)制。值的機(jī)制。2021-12-21 19例例1:在職工部門(mén)數(shù)據(jù)庫(kù)中,:在職工部門(mén)數(shù)據(jù)庫(kù)中,EMP關(guān)系包含有外碼關(guān)系包含有外碼Deptno,某,某一元組的這一列若為空值,表示這個(gè)
15、職工尚未分配到任何具體一元組的這一列若為空值,表示這個(gè)職工尚未分配到任何具體的部門(mén)工作。的部門(mén)工作。 這和應(yīng)用環(huán)境的語(yǔ)義是相符的,這和應(yīng)用環(huán)境的語(yǔ)義是相符的, 因此因此EMP的的Deptno列應(yīng)允許空值。列應(yīng)允許空值。例例2:在學(xué)生選課數(shù)據(jù)庫(kù)中,:在學(xué)生選課數(shù)據(jù)庫(kù)中,Student關(guān)系為被參照關(guān)系,其主關(guān)系為被參照關(guān)系,其主碼為碼為Sno。SC為參照關(guān)系,外碼為為參照關(guān)系,外碼為Sno。若若SC的的Sno為空值,則表明尚不存在的某個(gè)學(xué)生,或者某個(gè)不知為空值,則表明尚不存在的某個(gè)學(xué)生,或者某個(gè)不知學(xué)號(hào)的學(xué)生,選修了某門(mén)課程,其成績(jī)記錄在學(xué)號(hào)的學(xué)生,選修了某門(mén)課程,其成績(jī)記錄在Grade列中。列中
16、。 這與學(xué)校的應(yīng)用環(huán)境是不相符的,這與學(xué)校的應(yīng)用環(huán)境是不相符的,因此因此SC的的Sno列不能取空值。列不能取空值。20刪除被參照關(guān)系的元組時(shí)的問(wèn)題刪除被參照關(guān)系的元組時(shí)的問(wèn)題v出現(xiàn)違約操作的情形出現(xiàn)違約操作的情形需要?jiǎng)h除被參照關(guān)系的某個(gè)元組,而參照關(guān)系有若干元組的外碼值需要?jiǎng)h除被參照關(guān)系的某個(gè)元組,而參照關(guān)系有若干元組的外碼值與被刪除的被參照關(guān)系的主碼值相對(duì)應(yīng)與被刪除的被參照關(guān)系的主碼值相對(duì)應(yīng)v違約反應(yīng):可有三種策略違約反應(yīng):可有三種策略級(jí)聯(lián)刪除(級(jí)聯(lián)刪除(CASCADES)v將參照關(guān)系中所有外碼值與被參照關(guān)系中要?jiǎng)h除元組主碼值相對(duì)應(yīng)的元將參照關(guān)系中所有外碼值與被參照關(guān)系中要?jiǎng)h除元組主碼值相對(duì)
17、應(yīng)的元組一起刪除。組一起刪除。受限刪除(受限刪除(RESTRICTED)v只有當(dāng)參照關(guān)系中沒(méi)有任何元組的外碼值與要?jiǎng)h除的被參照關(guān)系的元組只有當(dāng)參照關(guān)系中沒(méi)有任何元組的外碼值與要?jiǎng)h除的被參照關(guān)系的元組的主碼值相對(duì)應(yīng)時(shí),系統(tǒng)才執(zhí)行刪除操作,否則拒絕此刪除操作。的主碼值相對(duì)應(yīng)時(shí),系統(tǒng)才執(zhí)行刪除操作,否則拒絕此刪除操作。置空值刪除(置空值刪除(NULLIFIES)v刪除被參照關(guān)系的元組,并將參照關(guān)系中所有與被參照關(guān)系中被刪除元組主碼值相等刪除被參照關(guān)系的元組,并將參照關(guān)系中所有與被參照關(guān)系中被刪除元組主碼值相等的外碼值置為空值。的外碼值置為空值。這三種處理方法,哪一種是正確的,要依應(yīng)用環(huán)境的語(yǔ)義這三種
18、處理方法,哪一種是正確的,要依應(yīng)用環(huán)境的語(yǔ)義來(lái)定。來(lái)定。2021-12-21 21v例:要?jiǎng)h除例:要?jiǎng)h除Student關(guān)系中關(guān)系中Sno=200801的元組,而的元組,而SC關(guān)系中關(guān)系中有有4個(gè)元組的個(gè)元組的Sno都等于都等于200801。級(jí)聯(lián)刪除:級(jí)聯(lián)刪除:將將SC關(guān)系中所有關(guān)系中所有4個(gè)個(gè)Sno=200801的元組一起刪除。如果的元組一起刪除。如果參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種刪除參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種刪除操作會(huì)繼續(xù)級(jí)聯(lián)下去。操作會(huì)繼續(xù)級(jí)聯(lián)下去。 受限刪除:受限刪除: 系統(tǒng)將拒絕執(zhí)行此刪除操作。系統(tǒng)將拒絕執(zhí)行此刪除操作。置空值刪除:置空值刪除: 將將
19、SC關(guān)系中所有關(guān)系中所有Sno=200801的元組的的元組的Sno值置為空值。值置為空值。在學(xué)生選課數(shù)據(jù)庫(kù)中,顯然第一種方法和第二種方法都是在學(xué)生選課數(shù)據(jù)庫(kù)中,顯然第一種方法和第二種方法都是對(duì)的。第三種方法不符合應(yīng)用環(huán)境語(yǔ)義。對(duì)的。第三種方法不符合應(yīng)用環(huán)境語(yǔ)義。22修改被參照關(guān)系中主碼的問(wèn)題修改被參照關(guān)系中主碼的問(wèn)題v兩種策略兩種策略不允許修改主碼不允許修改主碼允許修改主碼允許修改主碼 v允許修改主碼策略允許修改主碼策略違約操作違約操作要要修改被參照關(guān)系修改被參照關(guān)系中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等中某些元組的主碼值,而參照關(guān)系中有些元組的外碼值正好等于被參照關(guān)系要修改的
20、主碼值于被參照關(guān)系要修改的主碼值要要修改參照關(guān)系修改參照關(guān)系中某些元組的主碼值,而被參照關(guān)系中沒(méi)有任何元組的外碼值等中某些元組的主碼值,而被參照關(guān)系中沒(méi)有任何元組的外碼值等于被參照關(guān)系修改后的主碼值于被參照關(guān)系修改后的主碼值違約反應(yīng)違約反應(yīng)v修改的關(guān)系是被參照關(guān)系:與刪除類似修改的關(guān)系是被參照關(guān)系:與刪除類似級(jí)聯(lián)修改級(jí)聯(lián)修改受限修改受限修改置空值修改置空值修改v修改的關(guān)系是參照關(guān)系:與插入類似修改的關(guān)系是參照關(guān)系:與插入類似受限修改受限修改級(jí)聯(lián)修改級(jí)聯(lián)修改2021-12-21 23修改被參照關(guān)系中主碼的問(wèn)題(續(xù))修改被參照關(guān)系中主碼的問(wèn)題(續(xù))級(jí)聯(lián)修改級(jí)聯(lián)修改v修改被參照關(guān)系中主碼值同時(shí),用相
21、同的方法修改參修改被參照關(guān)系中主碼值同時(shí),用相同的方法修改參照關(guān)系中相應(yīng)的外碼值。照關(guān)系中相應(yīng)的外碼值。受限修改受限修改v拒絕此修改操作。只當(dāng)參照關(guān)系中沒(méi)有任何元組的外拒絕此修改操作。只當(dāng)參照關(guān)系中沒(méi)有任何元組的外碼值等于被參照關(guān)系中某個(gè)元組的主碼值時(shí),這個(gè)元碼值等于被參照關(guān)系中某個(gè)元組的主碼值時(shí),這個(gè)元組的主碼值才能被修改。組的主碼值才能被修改。置空值修改置空值修改v修改被參照關(guān)系中主碼值,同時(shí)將參照關(guān)系中相應(yīng)的修改被參照關(guān)系中主碼值,同時(shí)將參照關(guān)系中相應(yīng)的外碼值置為空值。外碼值置為空值。2021-12-21 24v例:學(xué)生例:學(xué)生200801休學(xué)一年后復(fù)學(xué),這時(shí)需要將休學(xué)一年后復(fù)學(xué),這時(shí)需
22、要將Student關(guān)系關(guān)系中中Sno=200801的元組中的元組中Sno值改為值改為 200923 。而。而SC關(guān)系中關(guān)系中有有4個(gè)元組的個(gè)元組的Sno=200801級(jí)聯(lián)修改:級(jí)聯(lián)修改: 將將SC關(guān)系中關(guān)系中4個(gè)個(gè)Sno=200801元組中的元組中的Sno值也改為值也改為200923。如果。如果參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種修改操作會(huì)繼參照關(guān)系同時(shí)又是另一個(gè)關(guān)系的被參照關(guān)系,則這種修改操作會(huì)繼續(xù)級(jí)聯(lián)下去。續(xù)級(jí)聯(lián)下去。受限修改:受限修改: 只有只有SC中沒(méi)有任何元組的中沒(méi)有任何元組的Sno= 200801 時(shí),才能修改時(shí),才能修改Student表中表中Sno= 200801 的元
23、組的的元組的Sno值改為值改為 200923 。置空值修改置空值修改: 將將Student表中表中Sno= 200801 的元組的的元組的Sno值改為值改為 200923 。而將。而將S表中所有表中所有Sno= 200801 的元組的的元組的Sno值置為空值值置為空值。在學(xué)生選課數(shù)據(jù)庫(kù)中只有第一種方法是正確的。在學(xué)生選課數(shù)據(jù)庫(kù)中只有第一種方法是正確的。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 違反條件時(shí)候的如何處理
24、?違反條件時(shí)候的如何處理?DBMSDBMS中完整性的定義:中完整性的定義:使用約束使用約束完整性的類型完整性的類型約束的類型約束的類型說(shuō)明說(shuō)明實(shí)體完整性實(shí)體完整性PRIMARY KEY唯一標(biāo)識(shí)每一行,保證用戶不輸入重復(fù)的數(shù)據(jù),且創(chuàng)建一個(gè)索引來(lái)提高性能。不允許空值UNIQUE防止非主關(guān)鍵字的重復(fù),并保證創(chuàng)建一個(gè)索引來(lái)提高性能。允許空值用戶定義完整用戶定義完整性性DEFAULT指定在INSERT語(yǔ)句中沒(méi)有明確提供一個(gè)值時(shí),為該列提供的值CHECK指定在一個(gè)列中可接受的數(shù)據(jù)值參照完整性參照完整性FOREIGN KEY定義一個(gè)列或幾個(gè)列的組合,他們的值匹配同一個(gè)表或另一個(gè)表中關(guān)鍵字2021-12-21
25、 27CREATE TABLECREATE TABLE定義約束定義約束v約束涉及單個(gè)屬性的,有兩種說(shuō)明方法約束涉及單個(gè)屬性的,有兩種說(shuō)明方法 定義為列級(jí)約束條件定義為列級(jí)約束條件定義為表級(jí)約束條件定義為表級(jí)約束條件v若約束涉及多個(gè)屬性的,只有一種說(shuō)明方法若約束涉及多個(gè)屬性的,只有一種說(shuō)明方法定義為表級(jí)約束條件定義為表級(jí)約束條件 28v列級(jí)約束列級(jí)約束例1. CREATE TABLE語(yǔ)句中定義列級(jí)約束 CREATE TABLE S ( sno NUMERIC(6) PRIMARY KEY, -列級(jí)約束列級(jí)約束 sname CHAR(8) NOT NULL, age NUMERIC(3,0), s
26、ex CHAR(2), bplace CHAR(20) );v表級(jí)約束表級(jí)約束例2. CREATE TABLE語(yǔ)句中定義表級(jí)約束 CREATE TABLE SC ( sno NUMERIC(6) NOT NULL , cno varchar(3) not null, PRIMARY KEY(sno,cno), -表級(jí)約束表級(jí)約束 grade NUMERIC(2);29v例3. 在Employee表中說(shuō)明Eno為主碼,有兩種方法。v將屬性直接說(shuō)明為主碼,列級(jí)約束將屬性直接說(shuō)明為主碼,列級(jí)約束 CREATE TABLE Employee ( Eno char(4) PRIMARY KEY, Ena
27、me varchar(8), Sex char(2), Age int, Dno char(2) );v在屬性列表后單獨(dú)說(shuō)明主碼,表級(jí)約束在屬性列表后單獨(dú)說(shuō)明主碼,表級(jí)約束 CREATE TABLE Employee ( Eno char(4), Ename varchar(8), Sex char(2), Age int, Dno char(2), PRIMARY KEY(Eno) );30ALTER TABLEALTER TABLE定義約束定義約束v添加約束添加約束語(yǔ)法:語(yǔ)法:vALTER TABLE ADD CONSTRAINT ,;例4. ALTER TABLE 添加約束。ALTER
28、TABLE Employee ADD CONSTRAINT uq_ename UNIQUE(Ename);v刪除約束:刪除約束:語(yǔ)法:語(yǔ)法:vALTER TABLE DROP CONSTRAINT ,;例5. ALTER TABLE 刪除約束。ALTER TABLE Employee DROP CONSTRAINT uq_ename;31UNIQUEUNIQUE約束約束v允許空值允許空值v在一個(gè)表上可以放置多個(gè)在一個(gè)表上可以放置多個(gè)UNIQUE約束約束v可以在必須有唯一值,但不是表的主關(guān)鍵字的一個(gè)列或多個(gè)列上可以在必須有唯一值,但不是表的主關(guān)鍵字的一個(gè)列或多個(gè)列上應(yīng)用應(yīng)用UNIQUE約束約束v
29、通過(guò)在指定列上創(chuàng)建唯一索引強(qiáng)制通過(guò)在指定列上創(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)將自動(dòng)為此約束名賦值系統(tǒng)將自動(dòng)為此約束名賦值 */2021-12-21 32PRIMARY KEYPRIMARY KEY約束約束v每個(gè)表每個(gè)表只能定義一個(gè)只能定義一個(gè)PRIMARY KEY約束約束v輸入的值必須是唯一的輸入的值必須是唯一的v不允許空值不允許空值v它在指定的列上創(chuàng)建一個(gè)唯一索引它在指定的列上創(chuàng)建一個(gè)唯一索引v例例8. .添加主碼約束添加主碼約束ALTER TABLE DepartmentADD CONSTRAINT pk_dno PRIMARY KEY clustered(dno);33IDENTITYIDENTIT
31、Y屬性屬性v每一個(gè)表都可有一標(biāo)識(shí)列,其中包含由系統(tǒng)自動(dòng)生每一個(gè)表都可有一標(biāo)識(shí)列,其中包含由系統(tǒng)自動(dòng)生成的能夠標(biāo)識(shí)表中每一行數(shù)據(jù)的唯一序列值。成的能夠標(biāo)識(shí)表中每一行數(shù)據(jù)的唯一序列值。v格式:格式:IDENTITY ( SEED, INCREMENT) vSEED初始值,表中的第一行數(shù)據(jù)的標(biāo)識(shí)列的取值,默認(rèn)值為初始值,表中的第一行數(shù)據(jù)的標(biāo)識(shí)列的取值,默認(rèn)值為1vINCREMEN步長(zhǎng)值,每一新標(biāo)識(shí)值比上一個(gè)增長(zhǎng)多少,默認(rèn)值步長(zhǎng)值,每一新標(biāo)識(shí)值比上一個(gè)增長(zhǎng)多少,默認(rèn)值為為1v使用IDENTITY列時(shí),應(yīng)注意:每張表只允許有一個(gè)每張表只允許有一個(gè)IDENTITY列列該列必須使用下列數(shù)據(jù)類型之一:deci
32、mal、numeric、int、smallint 和 tinyint該列必須設(shè)置成不允許為空值,且不能有默認(rèn)值該列必須設(shè)置成不允許為空值,且不能有默認(rèn)值2021-12-21 34DEFAULTDEFAULT約束約束v只應(yīng)用于INSERT語(yǔ)句v每列只能定義一個(gè)每列只能定義一個(gè)DEFAULT約束約束v不能用于不能用于IDENTITY屬性或?qū)傩曰騎IMESTAMP數(shù)據(jù)類型數(shù)據(jù)類型TIMESTAMP數(shù)據(jù)庫(kù)范圍內(nèi)的唯一數(shù)字,8字節(jié),一個(gè)表中只能一個(gè)此類型的列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ǔ)句時(shí)驗(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約束也可涉及到表中多個(gè)域,稱為元組約約束也可涉及到表中多個(gè)域,稱為元組約束。束。v在對(duì)整個(gè)元組完成插入或?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)存儲(chǔ)過(guò)程使用系統(tǒng)存儲(chǔ)過(guò)程sp_bindrule可以將規(guī)則捆綁到可以將規(guī)則捆綁到列或用戶自定義數(shù)據(jù)類型上。列或用戶自定義數(shù)據(jù)類型上。v語(yǔ)法:語(yǔ)法:Sp_bindrule rule, object_name,futureonly_flagrule:規(guī)則的名稱object_name為規(guī)則要捆綁到的列名或用戶自定義數(shù)據(jù)類型名futureonly_flag可選參數(shù),僅在要捆綁到用戶自定義數(shù)據(jù)類型時(shí)使用。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)存儲(chǔ)過(guò)程可以解除系統(tǒng)存儲(chǔ)過(guò)程可以解除捆綁到列或用戶自定義數(shù)據(jù)類型上的規(guī)則。捆綁到列或用戶自定義數(shù)據(jù)類型上的規(guī)則。v語(yǔ)法: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)存儲(chǔ)過(guò)程使用系統(tǒng)存儲(chǔ)過(guò)程sp_help可以查看規(guī)則的可以查看規(guī)則的擁有者、創(chuàng)建時(shí)間等基本信息。擁有者、創(chuàng)建時(shí)間等基本信息。v使用系統(tǒng)存儲(chǔ)過(guò)程使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptext可以查看規(guī)則可以查看規(guī)則的定義。的定義。2021-12-21 87刪除規(guī)則刪除規(guī)則v使用使用DROP RULE語(yǔ)句可以刪除當(dāng)前數(shù)據(jù)庫(kù)語(yǔ)句可以刪除當(dāng)前數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)規(guī)則。中的一個(gè)或多個(gè)規(guī)則。v在刪除一個(gè)規(guī)則之前,應(yīng)首先將規(guī)則從它所在刪除一個(gè)規(guī)則之前,應(yīng)首先將規(guī)則從它所捆綁的列或用戶自定義數(shù)據(jù)類型上解除下來(lái)。捆綁的列或用戶自定義數(shù)據(jù)類型上解除下來(lái)。當(dāng)要?jiǎng)h除的規(guī)則仍捆
39、綁在列或用戶自定義數(shù)據(jù)類當(dāng)要?jiǎng)h除的規(guī)則仍捆綁在列或用戶自定義數(shù)據(jù)類型上時(shí),執(zhí)行型上時(shí),執(zhí)行DROP RULE會(huì)顯示錯(cuò)誤信息,同會(huì)顯示錯(cuò)誤信息,同時(shí)時(shí)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語(yǔ)句創(chuàng)建表時(shí),使用語(yǔ)句創(chuàng)建表時(shí),使用DEFAULT子句為表中的列提供默認(rèn)值。子句為表中的列提供默認(rèn)值。v使用使用CREATE DEFAULT語(yǔ)句來(lái)創(chuàng)建一個(gè)默語(yǔ)句來(lái)創(chuàng)建一個(gè)默認(rèn)對(duì)象,然后再將其捆綁到列或用戶自定義認(rèn)對(duì)象,然后再將其捆綁到列或用戶自定義數(shù)據(jù)類型上。數(shù)據(jù)類型上。2021-12-21 90創(chuàng)建默認(rèn)值創(chuàng)建默認(rèn)值v使用使用T-SQL語(yǔ)句語(yǔ)句CREATE DEFAULT可以創(chuàng)可以創(chuàng)建默認(rèn)對(duì)象。建默認(rèn)對(duì)象。v語(yǔ)法:語(yǔ)法: CREATE DEFAULT defaultAS constant_expression2021-12-21 91捆綁默認(rèn)值捆綁默認(rèn)值v可以使用可以使用sp_binde
41、fault系統(tǒng)存儲(chǔ)過(guò)程系統(tǒng)存儲(chǔ)過(guò)程v語(yǔ)法:語(yǔ)法:sp_bindefault default, object_name, futureonly_flagv使用使用sp_unbindefault系統(tǒng)存儲(chǔ)過(guò)程可以解除捆綁系統(tǒng)存儲(chǔ)過(guò)程可以解除捆綁導(dǎo)列或用戶自定義數(shù)據(jù)類型上的默認(rèn)值。導(dǎo)列或用戶自定義數(shù)據(jù)類型上的默認(rèn)值。v語(yǔ)法:語(yǔ)法: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)存儲(chǔ)過(guò)程可使用系統(tǒng)存儲(chǔ)過(guò)程sp_help可以查看默認(rèn)可以查看默認(rèn)值的擁有者、創(chuàng)建時(shí)間等基本信息。值的擁有者、創(chuàng)建時(shí)間等基本信息。v可使用系統(tǒng)存儲(chǔ)過(guò)程可使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptext可以查看默可以查看默認(rèn)值的定義。認(rèn)值的定義。2021-12-21 9
43、4刪除默認(rèn)值刪除默認(rèn)值v使用使用DROP DEFAULT語(yǔ)句可以刪除當(dāng)前數(shù)語(yǔ)句可以刪除當(dāng)前數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)默認(rèn)值。據(jù)庫(kù)中的一個(gè)或多個(gè)默認(rèn)值。v注意:注意:在刪除默認(rèn)值之前,應(yīng)使用在刪除默認(rèn)值之前,應(yīng)使用sp_unbindefault系系統(tǒng)存儲(chǔ)過(guò)程來(lái)解除該默認(rèn)值在列或用戶自定義數(shù)統(tǒng)存儲(chǔ)過(guò)程來(lái)解除該默認(rèn)值在列或用戶自定義數(shù)據(jù)類型上的捆綁。據(jù)類型上的捆綁。95數(shù)據(jù)完整性數(shù)據(jù)完整性 小結(jié)小結(jié)v數(shù)據(jù)庫(kù)的完整性是為了保證數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)庫(kù)的完整性是為了保證數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)是正確的數(shù)據(jù)是正確的vRDBMS完整性實(shí)現(xiàn)的機(jī)制完整性實(shí)現(xiàn)的機(jī)制完整性約束定義機(jī)制完整性約束定義機(jī)制完整性檢查機(jī)制完整性檢查機(jī)制
44、違背完整性約束條件時(shí)違背完整性約束條件時(shí)RDBMS應(yīng)采取的動(dòng)作應(yīng)采取的動(dòng)作v在關(guān)系系統(tǒng)中,最重要的完整性約束是在關(guān)系系統(tǒng)中,最重要的完整性約束是實(shí)體完整性實(shí)體完整性參照完整性參照完整性用戶定義的完整性用戶定義的完整性v數(shù)據(jù)庫(kù)完整性的定義數(shù)據(jù)庫(kù)完整性的定義一般由一般由SQL的的DDL語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn)作為數(shù)據(jù)庫(kù)模式的一部分存入數(shù)據(jù)字典作為數(shù)據(jù)庫(kù)模式的一部分存入數(shù)據(jù)字典在數(shù)據(jù)庫(kù)數(shù)據(jù)修改時(shí)在數(shù)據(jù)庫(kù)數(shù)據(jù)修改時(shí),RDBMS的完整性檢查機(jī)制的完整性檢查機(jī)制就按照數(shù)據(jù)字典中定義的這些約束進(jìn)行檢查就按照數(shù)據(jù)字典中定義的這些約束進(jìn)行檢查v完整性機(jī)制的實(shí)施會(huì)影響系統(tǒng)性能。隨著硬完整性機(jī)制的實(shí)施會(huì)影響系統(tǒng)性能。隨著硬
45、件性能的提高,數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,目前的件性能的提高,數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,目前的RDBMS都提供了定義和檢查實(shí)體完整性、都提供了定義和檢查實(shí)體完整性、參照完整性和用戶定義的完整性的功能。參照完整性和用戶定義的完整性的功能。v對(duì)于違反完整性的操作對(duì)于違反完整性的操作要根據(jù)應(yīng)用語(yǔ)義來(lái)選擇合適的處理策略,以保證要根據(jù)應(yīng)用語(yǔ)義來(lái)選擇合適的處理策略,以保證數(shù)據(jù)庫(kù)的正確性數(shù)據(jù)庫(kù)的正確性2021-12-21 97可能破壞參照完整性的情況及違約處理可能破壞參照完整性的情況及違約處理被參照表(例如被參照表(例如StudentStudent)參照表(例如參照表(例如SCSC)違約處理違約處理可能破壞參照完整性可能破壞
46、參照完整性 插入元組插入元組拒絕拒絕可能破壞參照完整性可能破壞參照完整性 修改外碼值修改外碼值拒絕拒絕刪除元組刪除元組 可能破壞參照可能破壞參照完整性完整性拒絕拒絕/ /級(jí)連刪除級(jí)連刪除/ /設(shè)置為空值設(shè)置為空值修改主碼值修改主碼值 可能破壞參照可能破壞參照完整性完整性拒絕拒絕/ /級(jí)連修改級(jí)連修改/ /設(shè)置為空值設(shè)置為空值2021-12-21 98完整性小結(jié)(續(xù)):觸發(fā)器完整性小結(jié)(續(xù)):觸發(fā)器v實(shí)現(xiàn)數(shù)據(jù)庫(kù)完整性的一個(gè)重要方法是觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)庫(kù)完整性的一個(gè)重要方法是觸發(fā)器是定義在關(guān)系表上的由事件驅(qū)動(dòng)的特殊過(guò)程是定義在關(guān)系表上的由事件驅(qū)動(dòng)的特殊過(guò)程可以用于數(shù)據(jù)庫(kù)完整性檢查可以用于數(shù)據(jù)庫(kù)完整性檢
47、查也可以用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的其他功能也可以用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的其他功能數(shù)據(jù)庫(kù)安全性數(shù)據(jù)庫(kù)安全性應(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ā)器的語(yǔ)法不同實(shí)現(xiàn)觸發(fā)器的語(yǔ)法不同2021-12-21 99作業(yè)作業(yè) 1v準(zhǔn)備第三次上機(jī)實(shí)驗(yàn)內(nèi)容(準(zhǔn)備第三次上機(jī)實(shí)驗(yàn)內(nèi)容(1)詳見(jiàn)附錄詳見(jiàn)附錄A:“上機(jī)實(shí)驗(yàn)八上機(jī)實(shí)驗(yàn)八 完整性約束的實(shí)現(xiàn)完整性約束的實(shí)現(xiàn)”。在在Microsoft SQL Server 環(huán)境中,上機(jī)實(shí)現(xiàn)書(shū)環(huán)境中,上機(jī)實(shí)現(xiàn)書(shū)中第中第4章的各例題。章的各例題。2021-12-21 100SQ
48、L語(yǔ)言語(yǔ)言高級(jí)應(yīng)用(二)高級(jí)應(yīng)用(二)4.3 數(shù)據(jù)庫(kù)安全性數(shù)據(jù)庫(kù)安全性2021-12-21 101數(shù)據(jù)庫(kù)保護(hù)數(shù)據(jù)庫(kù)保護(hù)v數(shù)據(jù)庫(kù)中的數(shù)據(jù)由數(shù)據(jù)庫(kù)中的數(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ù)庫(kù)中的數(shù)據(jù)能力,以保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)安全可靠和正確有效。安全可靠和正確有效。2021-12-21 1021. 完整性完整性v數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性數(shù)據(jù)庫(kù)的完整性是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性與相容性。與相容性。
49、vSQL語(yǔ)言定義完整性約束條件語(yǔ)言定義完整性約束條件CREATE TABLE語(yǔ)句語(yǔ)句ALTER TABLE語(yǔ)句語(yǔ)句v實(shí)體完整性:實(shí)體完整性: primary key、uniquev參照完整性:參照完整性:foreign keyv用戶定義完整性:用戶定義完整性:check、default2021-12-21 1032. 安全性安全性v安全性:保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用安全性:保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。所造成的數(shù)據(jù)泄露和破壞。v保證數(shù)據(jù)安全性的主要措施保證數(shù)據(jù)安全性的主要措施: :存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù),存取控制:控制用戶只能存取他有權(quán)存取的數(shù)據(jù),規(guī)
50、定不同用戶對(duì)于不同數(shù)據(jù)對(duì)象所允許執(zhí)行的操作規(guī)定不同用戶對(duì)于不同數(shù)據(jù)對(duì)象所允許執(zhí)行的操作2021-12-21 1043. 并發(fā)控制并發(fā)控制v并發(fā)控制:當(dāng)多個(gè)用戶并發(fā)地對(duì)數(shù)據(jù)庫(kù)進(jìn)行并發(fā)控制:當(dāng)多個(gè)用戶并發(fā)地對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),對(duì)他們加以控制、協(xié)調(diào),以保證并操作時(shí),對(duì)他們加以控制、協(xié)調(diào),以保證并發(fā)操作正確執(zhí)行,保持?jǐn)?shù)據(jù)庫(kù)的一致性。發(fā)操作正確執(zhí)行,保持?jǐn)?shù)據(jù)庫(kù)的一致性。vSQL語(yǔ)言并發(fā)控制能力:語(yǔ)言并發(fā)控制能力:提供事務(wù)開(kāi)始、事務(wù)結(jié)束、提交、撤銷等概念提供事務(wù)開(kāi)始、事務(wù)結(jié)束、提交、撤銷等概念2021-12-21 1054. 數(shù)據(jù)備份恢復(fù)數(shù)據(jù)備份恢復(fù)v恢復(fù):當(dāng)發(fā)生各種類型的故障導(dǎo)致數(shù)據(jù)庫(kù)處恢復(fù):當(dāng)發(fā)生各種
51、類型的故障導(dǎo)致數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài)時(shí),將數(shù)據(jù)庫(kù)恢復(fù)到一致?tīng)顟B(tài)于不一致?tīng)顟B(tài)時(shí),將數(shù)據(jù)庫(kù)恢復(fù)到一致?tīng)顟B(tài)的功能。的功能。vSQL語(yǔ)言恢復(fù)功能:語(yǔ)言恢復(fù)功能:提供事務(wù)回滾、重做等概念(提供事務(wù)回滾、重做等概念(UNDO、REDO)2021-12-21 106數(shù)據(jù)安全性數(shù)據(jù)安全性v數(shù)據(jù)庫(kù)系統(tǒng)的安全性是數(shù)據(jù)庫(kù)保護(hù)的首要數(shù)據(jù)庫(kù)系統(tǒng)的安全性是數(shù)據(jù)庫(kù)保護(hù)的首要問(wèn)題。問(wèn)題。v安全性是相對(duì)的。安全性是相對(duì)的。v加強(qiáng)安全性是應(yīng)用開(kāi)發(fā)一個(gè)重要的方面。加強(qiáng)安全性是應(yīng)用開(kāi)發(fā)一個(gè)重要的方面。v安全性與保密性不可分。安全性與保密性不可分。v本節(jié)主要討論安全性的一般概念和方法,本節(jié)主要討論安全性的一般概念和方法,介紹介紹SQL
52、ServerSQL Server數(shù)據(jù)庫(kù)系統(tǒng)的安全性措施。數(shù)據(jù)庫(kù)系統(tǒng)的安全性措施。2021-12-21 107數(shù)據(jù)庫(kù)安全數(shù)據(jù)庫(kù)安全v數(shù)據(jù)庫(kù)的破壞一般來(lái)自以下的四個(gè)方面:數(shù)據(jù)庫(kù)的破壞一般來(lái)自以下的四個(gè)方面:系統(tǒng)故障;系統(tǒng)故障;并發(fā)所引起的數(shù)據(jù)不一致;并發(fā)所引起的數(shù)據(jù)不一致;輸入或更新數(shù)據(jù)庫(kù)數(shù)據(jù)有誤;輸入或更新數(shù)據(jù)庫(kù)數(shù)據(jù)有誤;人為的破壞。人為的破壞。v所謂數(shù)據(jù)庫(kù)安全(所謂數(shù)據(jù)庫(kù)安全(SecuritySecurity),就是要防止),就是要防止其中第四種。其中第四種。 2021-12-21 108數(shù)據(jù)庫(kù)安全性概念數(shù)據(jù)庫(kù)安全性概念v何為數(shù)據(jù)庫(kù)安全性?何為數(shù)據(jù)庫(kù)安全性?保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的
53、數(shù)據(jù)泄露、更改或保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的數(shù)據(jù)泄露、更改或破壞。破壞。v系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫(kù)系統(tǒng)的主要性能系統(tǒng)安全保護(hù)措施是否有效是數(shù)據(jù)庫(kù)系統(tǒng)的主要性能指標(biāo)之一。指標(biāo)之一。v安全性問(wèn)題和保密問(wèn)題密切相關(guān)。安全性問(wèn)題和保密問(wèn)題密切相關(guān)。前者主要涉及數(shù)據(jù)的存取控制、前者主要涉及數(shù)據(jù)的存取控制、 修改和傳播的技術(shù)手段;修改和傳播的技術(shù)手段;后者在很大程度上是法律、政策、倫理、道德等問(wèn)題。后者在很大程度上是法律、政策、倫理、道德等問(wèn)題。一些國(guó)家已成立了專門(mén)機(jī)構(gòu)對(duì)數(shù)據(jù)的安全保密制訂了法律道一些國(guó)家已成立了專門(mén)機(jī)構(gòu)對(duì)數(shù)據(jù)的安全保密制訂了法律道德準(zhǔn)則和政策法規(guī)。德準(zhǔn)則和政策法規(guī)。202
54、1-12-21 109數(shù)據(jù)庫(kù)安全保密方式數(shù)據(jù)庫(kù)安全保密方式v數(shù)據(jù)庫(kù)安全保密方式有:系統(tǒng)處理的和物理的兩個(gè)數(shù)據(jù)庫(kù)安全保密方式有:系統(tǒng)處理的和物理的兩個(gè)方面。方面。v所謂物理的是指,對(duì)于強(qiáng)力逼迫透露口令、在通訊所謂物理的是指,對(duì)于強(qiáng)力逼迫透露口令、在通訊線路上竊聽(tīng)、以至盜竊物理存儲(chǔ)設(shè)備等行為而采取線路上竊聽(tīng)、以至盜竊物理存儲(chǔ)設(shè)備等行為而采取的將數(shù)據(jù)編為密碼,加強(qiáng)警衛(wèi)以識(shí)別用戶身份和保的將數(shù)據(jù)編為密碼,加強(qiáng)警衛(wèi)以識(shí)別用戶身份和保護(hù)存儲(chǔ)設(shè)備等措施。護(hù)存儲(chǔ)設(shè)備等措施。v所謂系統(tǒng)處理的是指利用計(jì)算機(jī)系統(tǒng)方面的技術(shù)手所謂系統(tǒng)處理的是指利用計(jì)算機(jī)系統(tǒng)方面的技術(shù)手段。段。v本節(jié)主要講述系統(tǒng)處理方面的數(shù)據(jù)庫(kù)安全措
55、施。本節(jié)主要講述系統(tǒng)處理方面的數(shù)據(jù)庫(kù)安全措施。2021-12-21 110計(jì)算機(jī)安全措施設(shè)置模型計(jì)算機(jī)安全措施設(shè)置模型v在一般計(jì)算機(jī)系統(tǒng)中,安全措施是一級(jí)一級(jí)層層設(shè)置的。有如下的模型:2021-12-21 111數(shù)據(jù)庫(kù)安全措施數(shù)據(jù)庫(kù)安全措施v數(shù)據(jù)庫(kù)系統(tǒng)的安全措施是建立在計(jì)算機(jī)系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)的安全措施是建立在計(jì)算機(jī)系統(tǒng)基礎(chǔ)之上的,通常有五個(gè)方面?;A(chǔ)之上的,通常有五個(gè)方面。v1. 1. 用戶標(biāo)識(shí)和鑒定用戶標(biāo)識(shí)和鑒定v2. 2. 存取控制存取控制v3. 3. 定義視圖定義視圖v4. 4. 審計(jì)審計(jì)v5. 5. 數(shù)據(jù)加密數(shù)據(jù)加密2021-12-21 112安全措施一:安全措施一:用戶標(biāo)識(shí)和鑒定用戶標(biāo)
56、識(shí)和鑒定v用戶標(biāo)識(shí)和鑒定用戶標(biāo)識(shí)和鑒定常用的方法有:常用的方法有:(1 1)用一個(gè)用戶名或用戶標(biāo)識(shí)號(hào)標(biāo)明用戶身份。)用一個(gè)用戶名或用戶標(biāo)識(shí)號(hào)標(biāo)明用戶身份。(2 2)口令)口令(Password)(Password)(3 3)系統(tǒng)提供一個(gè)隨機(jī)數(shù),用戶根據(jù)預(yù)先約定好的)系統(tǒng)提供一個(gè)隨機(jī)數(shù),用戶根據(jù)預(yù)先約定好的某一過(guò)程或者函數(shù)進(jìn)行計(jì)算,系統(tǒng)根據(jù)用戶計(jì)算結(jié)某一過(guò)程或者函數(shù)進(jìn)行計(jì)算,系統(tǒng)根據(jù)用戶計(jì)算結(jié)果是否正確進(jìn)一步鑒定用戶身份。果是否正確進(jìn)一步鑒定用戶身份。v用戶標(biāo)識(shí)和鑒定可重復(fù)多次。用戶標(biāo)識(shí)和鑒定可重復(fù)多次。2021-12-21 113安全措施二:安全措施二:存取控制存取控制v對(duì)于獲得上機(jī)權(quán)的用戶還
57、要根據(jù)預(yù)先定義好的用戶權(quán)限進(jìn)行對(duì)于獲得上機(jī)權(quán)的用戶還要根據(jù)預(yù)先定義好的用戶權(quán)限進(jìn)行存取控制,保證用戶只能存取他有權(quán)存取的數(shù)據(jù)。所謂用戶存取控制,保證用戶只能存取他有權(quán)存取的數(shù)據(jù)。所謂用戶權(quán)限是指不同的用戶對(duì)于不同的數(shù)據(jù)對(duì)象允許執(zhí)行的操作權(quán)權(quán)限是指不同的用戶對(duì)于不同的數(shù)據(jù)對(duì)象允許執(zhí)行的操作權(quán)限,它由兩部分組成:數(shù)據(jù)對(duì)象和操作類型。限,它由兩部分組成:數(shù)據(jù)對(duì)象和操作類型。數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象操作類型操作類型模式、外模式、內(nèi)模式模式、外模式、內(nèi)模式建立、修改、檢索建立、修改、檢索表或者記錄、字段表或者記錄、字段查找、插入、修改、刪除查找、插入、修改、刪除2021-12-21 114安全措施三:安全措施三
58、:視圖視圖v視圖主要用于保證程序的邏輯獨(dú)立性,也還視圖主要用于保證程序的邏輯獨(dú)立性,也還可將機(jī)密數(shù)據(jù)隱藏起來(lái),能提供一定程度的可將機(jī)密數(shù)據(jù)隱藏起來(lái),能提供一定程度的安全保護(hù),但不精細(xì)。安全保護(hù),但不精細(xì)。v不同的不同的DBMSDBMS都提供了建立視圖的機(jī)制。都提供了建立視圖的機(jī)制。v開(kāi)發(fā)數(shù)據(jù)系統(tǒng)時(shí)應(yīng)盡可能地為不同的用戶建開(kāi)發(fā)數(shù)據(jù)系統(tǒng)時(shí)應(yīng)盡可能地為不同的用戶建立相應(yīng)的視圖來(lái)訪問(wèn)數(shù)據(jù)。立相應(yīng)的視圖來(lái)訪問(wèn)數(shù)據(jù)。 如建立一個(gè)如建立一個(gè)“信息管理系學(xué)生視圖信息管理系學(xué)生視圖”2021-12-21 115安全措施四:安全措施四:審計(jì)審計(jì)v審計(jì)是一種審計(jì)是一種預(yù)防手段,監(jiān)測(cè)可能的不合法訪問(wèn)。預(yù)防手段,監(jiān)測(cè)可
59、能的不合法訪問(wèn)。v審訊追蹤技術(shù)使用專用文件或數(shù)據(jù)庫(kù)自動(dòng)記錄用戶審訊追蹤技術(shù)使用專用文件或數(shù)據(jù)庫(kù)自動(dòng)記錄用戶對(duì)數(shù)據(jù)庫(kù)的所有操作,利用這些信息就能找出非法對(duì)數(shù)據(jù)庫(kù)的所有操作,利用這些信息就能找出非法存取數(shù)據(jù)的人。存取數(shù)據(jù)的人。v審訊追蹤很費(fèi)時(shí)間和空間,一般審訊追蹤很費(fèi)時(shí)間和空間,一般DBMSDBMS只作為一種可只作為一種可選的特性,可靈活地打開(kāi)或關(guān)閉審計(jì)功能。選的特性,可靈活地打開(kāi)或關(guān)閉審計(jì)功能。v審計(jì)功能一般用于安全性要求較高的部門(mén)。審計(jì)功能一般用于安全性要求較高的部門(mén)。 2021-12-21 116安全措施五:安全措施五:數(shù)據(jù)加密數(shù)據(jù)加密v對(duì)高度機(jī)密性數(shù)據(jù),通過(guò)采用數(shù)據(jù)加密技術(shù),以密碼形式存對(duì)
60、高度機(jī)密性數(shù)據(jù),通過(guò)采用數(shù)據(jù)加密技術(shù),以密碼形式存儲(chǔ)和傳輸,這樣即使數(shù)據(jù)被竊取,看到是無(wú)法辨識(shí)的二進(jìn)制儲(chǔ)和傳輸,這樣即使數(shù)據(jù)被竊取,看到是無(wú)法辨識(shí)的二進(jìn)制代碼。代碼。v用戶正常檢索數(shù)據(jù)時(shí),首先要提供密碼鑰匙,經(jīng)系統(tǒng)譯碼后,用戶正常檢索數(shù)據(jù)時(shí),首先要提供密碼鑰匙,經(jīng)系統(tǒng)譯碼后,才能得到可識(shí)別的數(shù)據(jù)。才能得到可識(shí)別的數(shù)據(jù)。v目前很多數(shù)據(jù)產(chǎn)品都提供了數(shù)據(jù)加密例行程序,可根據(jù)用戶目前很多數(shù)據(jù)產(chǎn)品都提供了數(shù)據(jù)加密例行程序,可根據(jù)用戶要求自動(dòng)對(duì)數(shù)據(jù)進(jìn)行加密處理,另外有一些數(shù)據(jù)庫(kù)產(chǎn)品雖本要求自動(dòng)對(duì)數(shù)據(jù)進(jìn)行加密處理,另外有一些數(shù)據(jù)庫(kù)產(chǎn)品雖本身未提供加密程序,但允許用戶用其他廠商的加密程序來(lái)加身未提供加密程序,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)農(nóng)業(yè)休閑觀光項(xiàng)目指南
- 建設(shè)工程可行性研究
- 營(yíng)口冷鏈物流公司
- 項(xiàng)目進(jìn)度管理與會(huì)議紀(jì)要實(shí)錄
- 垃圾分類示范城市
- 零售連鎖店數(shù)字化門(mén)店運(yùn)營(yíng)方案
- 中級(jí)養(yǎng)老護(hù)理練習(xí)試卷附答案
- 儲(chǔ)能系統(tǒng)和綜合能源系統(tǒng)解決方案分享
- 新能汽車產(chǎn)業(yè)發(fā)展政策及技術(shù)趨勢(shì)分析
- 重要項(xiàng)目決策會(huì)議紀(jì)要實(shí)錄
- 電影《白日夢(mèng)想家》課件
- 地鐵站安全運(yùn)行現(xiàn)狀評(píng)價(jià)報(bào)告
- 中石化供應(yīng)鏈VPN接入方案
- 無(wú)人機(jī)應(yīng)用與基礎(chǔ)操控入門(mén)課件
- 跨學(xué)科主題學(xué)習(xí)的設(shè)計(jì)
- 掌握說(shuō)明方法-2024年中考語(yǔ)文閱讀點(diǎn)撥及進(jìn)階訓(xùn)練(解析版)
- 孔雀東南飛課件幻燈片課件
- 四川省會(huì)計(jì)師事務(wù)所服務(wù)收費(fèi)標(biāo)準(zhǔn)
- 留置導(dǎo)尿法操作評(píng)分標(biāo)準(zhǔn)
- 休克的臨床表現(xiàn)與急救
- 2024年皖北衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)附答案
評(píng)論
0/150
提交評(píng)論