企業(yè)局域網(wǎng)的安全與運維Ⅱ數(shù)據(jù)完整性約束_第1頁
企業(yè)局域網(wǎng)的安全與運維Ⅱ數(shù)據(jù)完整性約束_第2頁
企業(yè)局域網(wǎng)的安全與運維Ⅱ數(shù)據(jù)完整性約束_第3頁
企業(yè)局域網(wǎng)的安全與運維Ⅱ數(shù)據(jù)完整性約束_第4頁
企業(yè)局域網(wǎng)的安全與運維Ⅱ數(shù)據(jù)完整性約束_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、企業(yè)局域網(wǎng)的安全與運企業(yè)局域網(wǎng)的安全與運維維2數(shù)據(jù)完整性數(shù)據(jù)完整性約束約束本節(jié)學(xué)習(xí)目標本節(jié)學(xué)習(xí)目標l時間:時間:2次課,次課,4學(xué)時;學(xué)時;l本節(jié)學(xué)習(xí)目標:本節(jié)學(xué)習(xí)目標:l知識點:知識點:l數(shù)據(jù)庫完整性的概念。數(shù)據(jù)庫完整性的概念。l主鍵、外鍵、默認值、檢查約束、唯一性約主鍵、外鍵、默認值、檢查約束、唯一性約束的概念;束的概念; 本節(jié)學(xué)習(xí)目標本節(jié)學(xué)習(xí)目標l技能要求:技能要求:l能夠創(chuàng)建和管理主鍵能夠創(chuàng)建和管理主鍵l能夠創(chuàng)建和管理外鍵;能夠創(chuàng)建和管理外鍵;l能夠創(chuàng)建管理檢查約束;能夠創(chuàng)建管理檢查約束;l能夠創(chuàng)建管理唯一性約束;能夠創(chuàng)建管理唯一性約束;l能夠創(chuàng)建管理非空約束和默認值約束能夠創(chuàng)建管理非

2、空約束和默認值約束l能夠測試各項約束的有效性;能夠測試各項約束的有效性;l能夠在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫關(guān)系圖能夠在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫關(guān)系圖 課程引入課程引入l演示:演示:l通過通過ssms向數(shù)據(jù)庫向數(shù)據(jù)庫s_c_t的的student表中執(zhí)表中執(zhí)行下列操作:行下列操作:l將學(xué)生的年齡寫入將學(xué)生的年齡寫入10000;l將學(xué)生的性別寫入將學(xué)生的性別寫入abc;l將兩個不同教師的身份證號碼寫成相同的數(shù)據(jù)將兩個不同教師的身份證號碼寫成相同的數(shù)據(jù)“111111111111111111”。思考思考l數(shù)據(jù)庫對不合理數(shù)據(jù)沒有任何限制?數(shù)據(jù)庫對不合理數(shù)據(jù)沒有任何限制?l這樣的話,數(shù)據(jù)庫中的數(shù)據(jù)還有意義嗎?這樣的話,數(shù)

3、據(jù)庫中的數(shù)據(jù)還有意義嗎?l通過哪些手段防止上述情況的發(fā)生?通過哪些手段防止上述情況的發(fā)生?l手段之一:約束手段之一:約束sql server的的數(shù)據(jù)完整性約束的類型數(shù)據(jù)完整性約束的類型l主鍵約束主鍵約束l外鍵約束外鍵約束l唯一性約束唯一性約束l檢查約束檢查約束l默認值默認值l空值約束空值約束數(shù)據(jù)庫完整性概述數(shù)據(jù)庫完整性概述l數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性l數(shù)據(jù)的正確性和相容性數(shù)據(jù)的正確性和相容性l數(shù)據(jù)的完整性和安全性是兩個不同概念數(shù)據(jù)的完整性和安全性是兩個不同概念l數(shù)據(jù)的完整性數(shù)據(jù)的完整性防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),也就是防止數(shù)據(jù)防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),也就是防止數(shù)據(jù)庫中存在不正

4、確的數(shù)據(jù)庫中存在不正確的數(shù)據(jù)防范對象:不合語義的、不正確的數(shù)據(jù)防范對象:不合語義的、不正確的數(shù)據(jù)l數(shù)據(jù)的安全性數(shù)據(jù)的安全性保護數(shù)據(jù)庫防止惡意的破壞和非法的存取保護數(shù)據(jù)庫防止惡意的破壞和非法的存取防范對象:非法用戶和非法操作防范對象:非法用戶和非法操作1、設(shè)置約束、設(shè)置約束主鍵約束主鍵約束 主鍵約束主鍵約束 :l主鍵能夠唯一地確定表中的每一條記錄,主鍵主鍵能夠唯一地確定表中的每一條記錄,主鍵不能取空值。不能取空值。l一個表應(yīng)該有一個一個表應(yīng)該有一個 primary key 約束約束 l一個表只能有一個一個表只能有一個 primary key 約束約束 主鍵約束違約處理主鍵約束違約處理l插入或?qū)χ?/p>

5、鍵列進行更新操作時,插入或?qū)χ麈I列進行更新操作時,dbmsdbms按照完整性規(guī)按照完整性規(guī)則自動進行檢查。包括:則自動進行檢查。包括:l1. 1. 檢查主鍵值是否唯一,如果不唯一則拒絕插入檢查主鍵值是否唯一,如果不唯一則拒絕插入或修改;或修改;l2. 2. 檢查主鍵的各個屬性是否為空,只要有一個為檢查主鍵的各個屬性是否為空,只要有一個為空就拒絕插入或修改;空就拒絕插入或修改;主鍵約束違約處理主鍵約束違約處理l檢查記錄中主鍵值是否唯一和為空的一種方法是進行檢查記錄中主鍵值是否唯一和為空的一種方法是進行全表掃描全表掃描演示演示l例例1 1 將將studentstudent表中的表中的snosno屬

6、性定義為主屬性定義為主鍵;鍵;l例例2 2將將scsc表中的表中的snosno,cnocno屬性組定義為主屬性組定義為主鍵(復(fù)合主鍵,鍵(復(fù)合主鍵,最多為最多為1616列列););2 2、唯一性約束(、唯一性約束(ukuk)l唯一性約束作用:指定一個或多個列的組合唯一性約束作用:指定一個或多個列的組合值具有唯一性,以防止在列中輸入重復(fù)的值。值具有唯一性,以防止在列中輸入重復(fù)的值。l使用唯一性約束的字段允許為空值;使用唯一性約束的字段允許為空值;l一個表中可以允許有多個唯一性約束;一個表中可以允許有多個唯一性約束;l唯一性約束用于強制在指定字段上創(chuàng)建一個唯一性約束用于強制在指定字段上創(chuàng)建一個唯一

7、性索引;唯一性索引;演示演示l例例4 4在教師表在教師表t t中的身份證號中的身份證號idnumidnum列上創(chuàng)列上創(chuàng)建唯一約束。建唯一約束。主鍵約束和唯一性約束的差別主鍵約束和唯一性約束的差別l唯一性約束所在的列允許空值,但是主鍵約束唯一性約束所在的列允許空值,但是主鍵約束所在的列不允許空值。所在的列不允許空值。l可以把唯一性約束放在一個或者多個列上,這可以把唯一性約束放在一個或者多個列上,這些列或列的組合必須有唯一的值。但是,唯一些列或列的組合必須有唯一的值。但是,唯一性約束所在的列并不是表的主鍵列。性約束所在的列并不是表的主鍵列。3、檢查約束(檢查約束(checkcheck)l作用:通過

8、一個或多個字段上的輸入值是否符作用:通過一個或多個字段上的輸入值是否符合設(shè)定的檢查條件來保證數(shù)據(jù)庫數(shù)據(jù)的完整性。合設(shè)定的檢查條件來保證數(shù)據(jù)庫數(shù)據(jù)的完整性。l一個表中可以定義多個檢查約束;一個表中可以定義多個檢查約束;l當(dāng)執(zhí)行當(dāng)執(zhí)行向數(shù)據(jù)庫中插入數(shù)據(jù)或更新數(shù)據(jù)時向數(shù)據(jù)庫中插入數(shù)據(jù)或更新數(shù)據(jù)時,檢,檢查約束將驗證數(shù)據(jù);查約束將驗證數(shù)據(jù);演示演示l例例5 5將表將表s s表的表的sexsex列的取值只允許為列的取值只允許為“男男”或或“女女”。l例例6 6將表將表scsc中的中的scorescore列數(shù)據(jù)的取值范圍設(shè)列數(shù)據(jù)的取值范圍設(shè)置為置為0-1000-100之間。之間。check約束總結(jié)約束總結(jié)

9、 1、check約束是在創(chuàng)建表時指定的。約束是在創(chuàng)建表時指定的。 2、在每個列上可使用多個、在每個列上可使用多個check約束。約束。 3、check約束只能應(yīng)用于它定義的列。約束只能應(yīng)用于它定義的列。4、默認約束默認約束l默認約束來指定列的默認值。向表中插入記錄默認約束來指定列的默認值。向表中插入記錄時,數(shù)據(jù)庫會在該列的對應(yīng)位置填入默認值。時,數(shù)據(jù)庫會在該列的對應(yīng)位置填入默認值。l每個字段只能定義一個默認約束;每個字段只能定義一個默認約束;l默認值必須與該列數(shù)據(jù)類型兼容。默認值必須與該列數(shù)據(jù)類型兼容。演示演示l例例7 7將學(xué)生表將學(xué)生表s s中的系別(中的系別(departmentdepar

10、tment)列)列的默認值設(shè)置為的默認值設(shè)置為“計算機系計算機系”。5、空值約束(空值約束(nullnull)l列可以接受空值,也可以拒絕空值。列可以接受空值,也可以拒絕空值。l在數(shù)據(jù)庫中,在數(shù)據(jù)庫中,null 是一個特殊值,表示未知值是一個特殊值,表示未知值的概念。的概念。lnull 不同于空字符或不同于空字符或 0。實際上,空字符是一。實際上,空字符是一個有效的字符,個有效的字符,0 是一個有效的數(shù)字。是一個有效的數(shù)字。null 只只是表示此值未知這一概念。是表示此值未知這一概念。null 也不同于零長也不同于零長度字符串。度字符串。 空值約束(空值約束(nullnull)l空值約束允許一

11、列或多列的值不為空??罩导s束允許一列或多列的值不為空。l空(空(null)標識未定義或未知的值。)標識未定義或未知的值。l默認情況下運行為空,如果要某列不接受空值,默認情況下運行為空,如果要某列不接受空值,則必須在該列上設(shè)置非空約束。則必須在該列上設(shè)置非空約束??罩导s束違約處理空值約束違約處理l當(dāng)插入數(shù)據(jù)給非空列保持為空時,將會出現(xiàn)一當(dāng)插入數(shù)據(jù)給非空列保持為空時,將會出現(xiàn)一個約束錯誤,表示不允許在該列中輸入空值,個約束錯誤,表示不允許在該列中輸入空值,否則不能插入下一條記錄,也不允許保存數(shù)據(jù)。否則不能插入下一條記錄,也不允許保存數(shù)據(jù)。l在某列上定義在某列上定義primary key約束,該列必

12、然遵約束,該列必然遵守守not null約束。約束。演示演示l例例8 8將表將表s s的編號(的編號(snosno)、姓名()、姓名(snsn)和)和性別(性別(sexsex)列設(shè)置為不允許為空;向表)列設(shè)置為不允許為空;向表s s中插中插入一條新的學(xué)生記錄,查看姓名和性別項為空入一條新的學(xué)生記錄,查看姓名和性別項為空時出現(xiàn)的提示時出現(xiàn)的提示。6、外鍵約束(、外鍵約束(fk)l通過創(chuàng)建外鍵約束可以實現(xiàn)表和表之間的通過創(chuàng)建外鍵約束可以實現(xiàn)表和表之間的依賴關(guān)系,實現(xiàn)數(shù)據(jù)的一致性。依賴關(guān)系,實現(xiàn)數(shù)據(jù)的一致性。 l外鍵約束定義一個列或多個列,這些列可外鍵約束定義一個列或多個列,這些列可以參考同一個表或

13、另外一個表中的以參考同一個表或另外一個表中的主鍵約主鍵約束列束列或或惟一性約束列惟一性約束列,唯一索引列唯一索引列。l主鍵所在的表叫主鍵所在的表叫主表主表,屬于一對多關(guān)系中,屬于一對多關(guān)系中的一;的一;l外鍵所在的表叫外鍵所在的表叫從表從表,屬于一對多關(guān)系中,屬于一對多關(guān)系中的多;的多;設(shè)置約束設(shè)置約束外鍵約束外鍵約束l主鍵和外鍵的字段名不一定相同,但是數(shù)據(jù)類主鍵和外鍵的字段名不一定相同,但是數(shù)據(jù)類型、字段長度必須嚴格匹配型、字段長度必須嚴格匹配。l一個表中最多可以有一個表中最多可以有31個外鍵約束;個外鍵約束;v子表不能引用不存在的鍵值。子表不能引用不存在的鍵值。v如果主表中的一行被一個外鍵

14、參考,那么該如果主表中的一行被一個外鍵參考,那么該行不能被刪除(除非定義了級聯(lián)刪除和觸發(fā)行不能被刪除(除非定義了級聯(lián)刪除和觸發(fā)器),主鍵值也不能修改。器),主鍵值也不能修改。外鍵約束違約處理外鍵約束違約處理可能破壞參照完整性的情況及違約處理被參照表(例如表被參照表(例如表s)參照表(例如參照表(例如sc)違約處理違約處理可能破壞參照完整性可能破壞參照完整性 插入記錄插入記錄拒絕拒絕可能破壞參照完整性可能破壞參照完整性 修改外鍵值修改外鍵值拒絕拒絕刪除記錄刪除記錄 可能破壞參照完整可能破壞參照完整性性拒絕拒絕修改主鍵值修改主鍵值 可能破壞參照完整可能破壞參照完整性性拒絕拒絕演示演示l例例3 3表

15、表scsc中一條記錄表示一個學(xué)生選修的中一條記錄表示一個學(xué)生選修的某門課程的成績,(某門課程的成績,(snosno,cnocno)是主鍵。)是主鍵。snosno,cnocno分別參照引用分別參照引用studentstudent表的主鍵和表的主鍵和coursecourse表表的主鍵。的主鍵。關(guān)系數(shù)據(jù)庫提供的三種完整性關(guān)系數(shù)據(jù)庫提供的三種完整性l實體完整性實體完整性l域完整性域完整性l參照完整性參照完整性關(guān)系數(shù)據(jù)庫的數(shù)據(jù)完整性關(guān)系數(shù)據(jù)庫的數(shù)據(jù)完整性 數(shù)據(jù)完整性就是指存儲在數(shù)據(jù)庫中的數(shù)據(jù)的一致數(shù)據(jù)完整性就是指存儲在數(shù)據(jù)庫中的數(shù)據(jù)的一致性和準確性。性和準確性。 在關(guān)系數(shù)據(jù)庫中,主要有以下幾種類型:在關(guān)

16、系數(shù)據(jù)庫中,主要有以下幾種類型:1、域完整性、域完整性: (列完整性),規(guī)定了給定列輸入(列完整性),規(guī)定了給定列輸入數(shù)據(jù)的有效性。數(shù)據(jù)的有效性。 例如,在例如,在“成績成績”列中,限制其取值范圍為列中,限制其取值范圍為0到到100,其他的取值無效。,其他的取值無效。 有效性檢查限制數(shù)據(jù)類型、或數(shù)據(jù)取值范圍,有效性檢查限制數(shù)據(jù)類型、或數(shù)據(jù)取值范圍,設(shè)定默認值、外鍵、規(guī)則()實現(xiàn)。設(shè)定默認值、外鍵、規(guī)則()實現(xiàn)。l2、實體完整性:(行完整性),要求表中所、實體完整性:(行完整性),要求表中所有的行唯一??赏ㄟ^設(shè)置主鍵約束(有的行唯一??赏ㄟ^設(shè)置主鍵約束()、惟一索引()、惟一索引()、標識列)、

17、標識列(identity column)等等多種方法等實現(xiàn)。多種方法等實現(xiàn)。3、參照完整性:涉及兩個或兩個以上表的數(shù)據(jù)的、參照完整性:涉及兩個或兩個以上表的數(shù)據(jù)的一致性維護。它可以通過主鍵一致性維護。它可以通過主鍵/外鍵值約束,外鍵值約束,觸發(fā)器()和存儲過程(觸發(fā)器()和存儲過程(),實現(xiàn)。),實現(xiàn)。約束的幾種主要類型的作用約束的幾種主要類型的作用完整性類型約 束 類 型描 述域完整性default(缺省)在使用insert語句插入數(shù)據(jù)時,如果某個列的值沒有明確提供,則將定義的缺省值插入到該列中check(檢查)指定某一個列中的可保存值的范圍實體完整性primary key(主鍵)每一行的惟一標識符,確保用戶不能輸入冗余值和確保創(chuàng)建索引,提高性能,不允許空值unique(惟一性)防止出現(xiàn)冗余值,并且確保創(chuàng)建索引,提高性能。允許空值參考完整

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論