《數(shù)據(jù)庫完整性》PPT課件.ppt_第1頁
《數(shù)據(jù)庫完整性》PPT課件.ppt_第2頁
《數(shù)據(jù)庫完整性》PPT課件.ppt_第3頁
《數(shù)據(jù)庫完整性》PPT課件.ppt_第4頁
《數(shù)據(jù)庫完整性》PPT課件.ppt_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章數(shù)據(jù)庫完整性,教學(xué)目的:掌握三種完整性規(guī)則的控制方法,學(xué)會使用默認(rèn)對象和規(guī)則對象來實現(xiàn)完整性,掌握和理解觸發(fā)器和存儲過程的使用方法。重點和難點:觸發(fā)器的使用:多媒體教學(xué)學(xué)時:4門理論課,2門計算機課,5.1實體完整性,5.2參照完整性,5.3自定義完整性,5.4默認(rèn)對象和規(guī)則對象,5.5觸發(fā)器,5.6存儲過程的使用,主要內(nèi)容,數(shù)據(jù)庫完整性是指數(shù)據(jù)的正確性和兼容性。數(shù)據(jù)完整性和安全性是數(shù)據(jù)的兩個不同概念的完整性:防止數(shù)據(jù)不符合數(shù)據(jù)庫中的語義,即防止數(shù)據(jù)庫中的數(shù)據(jù)不正確。它的預(yù)防目標(biāo)是:沒有語義和不正確的數(shù)據(jù)。數(shù)據(jù)安全:保護數(shù)據(jù)庫免受惡意破壞和非法訪問。它的預(yù)防目標(biāo)是:非法用戶和非法操作。為

2、了維護數(shù)據(jù)庫的完整性,數(shù)據(jù)庫管理系統(tǒng)必須:提供定義完整性約束的機制,提供檢查完整性的方法,并處理違反契約的情況,這是由5.1實體完整性、5.1.1實體完整性和CREATE TABLE中的主鍵定義的。有兩種解釋方法:列級約束定義為表級約束,創(chuàng)建表學(xué)生(snochar (9)主鍵,Sname CHAR(20)非空,Ssex CHAR(2),sage slim,Sdept CHAR(20);創(chuàng)建表格學(xué)生(Sno CHAR(9),Sdept CHAR(20),主鍵(Sno);描述:對于由多個屬性組成的代碼,只有一種描述方法,即定義表級約束。5.1.2實體完整性檢查和默認(rèn)處理,當(dāng)插入或更新主代碼列時,R

3、DBMS會根據(jù)實體完整性規(guī)則自動進行檢查。包括檢查主代碼值是否唯一,如果不是唯一的,則拒絕插入或修改,只要主代碼的每個屬性為空,就拒絕插入或修改主代碼的每個屬性,檢查記錄中的主代碼值是否唯一的一種方法是掃描整個表,索引,5.2.1引用完整性定義,定義CREATE TABLE中的哪些列是外鍵,并指出這些外鍵引用了哪些表,5.2引用完整性。Sno必須是我們學(xué)校的學(xué)生,cno必須是我們學(xué)校已經(jīng)開設(shè)的課程。創(chuàng)建表SC (Sno CHAR(9)不為空,Cno CHAR(4)不為空,等級小整數(shù),主鍵(Sno,Cno),外鍵(Sno)參考學(xué)生(Sno),外鍵(Cno)參考課程(Cno);5.2.2參考完整性

4、檢查和默認(rèn)處理,可能損壞參考完整性和默認(rèn)處理的情況,執(zhí)行默認(rèn)策略的無操作級聯(lián)操作設(shè)置為空(設(shè)置為空),示例:說明了參考完整性默認(rèn)處理示例創(chuàng)建表sc2(學(xué)生編號字符(4),課程代碼字符(3),等級間檢查(0到100之間的等級),主鍵(學(xué)生編號,課程代碼), 外鍵引用學(xué)生在“刪除級聯(lián)”/*級聯(lián)刪除sc表中的相應(yīng)元組*/在“更新級聯(lián)”時,/*在“級聯(lián)”中更新sc表中的相應(yīng)元組*/外鍵(課程代碼)引用課程(課程代碼)在“刪除無操作”/*刪除課程表中的元組時拒絕刪除導(dǎo)致與SC表不一致*/在“更新級聯(lián)”時/*在“課程表”中更新cno時在“級聯(lián)”中更新SC表中的相應(yīng)元組*/);5.3用戶定義的完整性,這是特

5、定應(yīng)用程序的數(shù)據(jù)必須滿足的語義要求。關(guān)系數(shù)據(jù)庫管理系統(tǒng)提供它,而不是應(yīng)用程序。有兩類:屬性約束條件的定義,元組約束條件的定義,屬性約束條件的定義,創(chuàng)建表時檢查列值是否滿足布爾表達式(檢查),屬性約束條件的檢查和默認(rèn)處理,以及插入元組或修改屬性值時通過RDBMS檢查屬性約束。,創(chuàng)建表學(xué)生(snoint主鍵,sname char (8)唯一,ssex char (2)默認(rèn)男性,sage int檢查(sage=14),rxrqdatetime默認(rèn)getdate(),5.3.3元組約束的定義。創(chuàng)建表時,可以使用CHECK短語來定義元組的約束,即元組級別的限制。與屬性值限制相比,元組級限制可以設(shè)置不同屬

6、性之間值的相互約束條件。當(dāng)學(xué)生的性別為男性時,其姓名不能以ms. Create table學(xué)生(s name char (8)不為空、Ssex CHAR(2)、PRIMARY KEY (Sno)、CHECK (Ssex=女性或Sname不像ms %)/*定義元組中Sname和Ssex屬性值之間的約束*/);性別為女性的元組可以通過此檢查,因為Ssex=女性已建立;當(dāng)性別是男性時,如果你想通過檢查,名字不能以女士開頭。5.3.4檢查元組上的約束條件,并處理默認(rèn)值。當(dāng)插入元組或修改屬性值時,RDBMS檢查屬性上的約束條件是否滿足。如果不是,則操作被拒絕。在SQL server中,還可以通過數(shù)據(jù)庫對

7、象(如默認(rèn)值、規(guī)則和觸發(fā)器)來保證數(shù)據(jù)的完整性。5.4默認(rèn)對象和規(guī)則對象,5.4.1默認(rèn)對象在SQL server中,默認(rèn)對象是SQL Server中的一種數(shù)據(jù)庫對象,類似于默認(rèn)約束。默認(rèn)對象和默認(rèn)值之間的區(qū)別和關(guān)系是什么?聯(lián)系人:默認(rèn)對象與默認(rèn)值具有相同的功能。區(qū)別:默認(rèn)值約束是在創(chuàng)建表或改變表語句定義表結(jié)構(gòu)時定義的。它與表的定義一起存儲,并隨著表的刪除而刪除。默認(rèn)對象需要由CREATE DEFAUL語句定義,該語句作為數(shù)據(jù)庫對象單獨存儲,因此可以應(yīng)用多次。刪除表時不能刪除默認(rèn)對象,但必須使用DROP DEFAULT語句刪除它。默認(rèn)對象描述如下:創(chuàng)建默認(rèn)對象、應(yīng)用默認(rèn)對象、刪除默認(rèn)對象、創(chuàng)建

8、默認(rèn)對象以及創(chuàng)建默認(rèn)數(shù)據(jù)庫對象的語句格式:創(chuàng)建默認(rèn)所有者。默認(rèn)名稱為,默認(rèn)名稱:默認(rèn)對象名稱常量表達式:默認(rèn)對象值,例如:創(chuàng)建默認(rèn)性別為男性;2.綁定并應(yīng)用默認(rèn)對象;創(chuàng)建默認(rèn)對象后,必須使用系統(tǒng)存儲過程sp_bindefault將其綁定到列或用戶定義的數(shù)據(jù)類型。語句格式:sp _ bindefaultdefame、objname、futureonlydefame :是關(guān)聯(lián)的默認(rèn)對象名;Objname:是與默認(rèn)對象關(guān)聯(lián)的列名或用戶定義的數(shù)據(jù)類型名。如果objname的格式是“表名”。列名”,它意味著它是一個列名;否則,objname參數(shù)指定的數(shù)據(jù)類型是用戶定義的。未來:僅用于用戶定義的數(shù)據(jù)類型。

9、并且只適用于未來的價值,不影響現(xiàn)有的價值。例如:將默認(rèn)對象性別綁定到教師表的性別字段和學(xué)生表的ssex字段。性別sp_bindefault sex,student.ssex,注意:關(guān)聯(lián)默認(rèn)對象時,它不能與時間戳數(shù)據(jù)類型列或具有IDENTITY屬性的列關(guān)聯(lián),也不能與具有默認(rèn)值約束的列關(guān)聯(lián)。要刪除默認(rèn)對象,必須首先刪除默認(rèn)對象與指定列或用戶定義的數(shù)據(jù)類型之間的關(guān)聯(lián),然后刪除默認(rèn)對象。默認(rèn)對象與相應(yīng)對象解除關(guān)聯(lián)的格式:sp_unbindefault objname,futureonly objname:是與默認(rèn)對象關(guān)聯(lián)的列名或用戶定義的數(shù)據(jù)類型名。未來:僅用于用戶定義的數(shù)據(jù)類型。僅適用于未來的默認(rèn)值

10、,不影響現(xiàn)有的默認(rèn)值。例如:解除性和教師的關(guān)系。性別專欄。SP _ unbindiefaultteacher。性別與學(xué)生無關(guān)。在解除默認(rèn)對象的關(guān)聯(lián)后,該對象仍然存在于當(dāng)前數(shù)據(jù)庫中,因此您可以執(zhí)行DROP DEFAULT語句來刪除它。刪除默認(rèn)對象的語句格式:default _ name,降級語句可以同時刪除多個默認(rèn)對象。例如,刪除默認(rèn)對象性別刪除默認(rèn)性別,以及5 . 4 . 2 SQL server中的規(guī)則對象,它是綁定到字段或用戶定義的數(shù)據(jù)類型的數(shù)據(jù)庫對象,并指定字段可以接受哪些數(shù)據(jù)值。具有與CHECK約束相同的功能。一個字段可以有多個檢查約束,但只能應(yīng)用一個規(guī)則。規(guī)則作為單獨的對象創(chuàng)建,然后

11、綁定到字段。創(chuàng)建規(guī)則、應(yīng)用規(guī)則和刪除規(guī)則。首先,創(chuàng)建規(guī)則。在T_SQL中,創(chuàng)建規(guī)則的語句格式是:創(chuàng)建規(guī)則所有者。rule_name as condition _ expression,其中rule _ name是規(guī)則對象的名稱。條件表達式:規(guī)則定義的條件。條件表達式表達式可以與所有有效WHERE子句指定的條件相同。它可以使用局部變量來表示在INSERT語句或UPDATE語句中輸入的數(shù)值。AS子句的變量名必須以關(guān)聯(lián)的列名或用戶定義的數(shù)據(jù)類型開頭,并且與其相同。示例1:創(chuàng)建規(guī)則對象,并從集合中限制教師的職稱(助教、講師、副教授、教授):創(chuàng)建規(guī)則zc_rule作為zc in(助教、講師、副教授、教授

12、);2.綁定并應(yīng)用規(guī)則。創(chuàng)建規(guī)則對象后,必須使用系統(tǒng)存儲過程sp_bindrule將其綁定到列或用戶定義的數(shù)據(jù)類型。語句格式:sp _ binderulerulename,Objname,futureonly描述:rulename:是規(guī)則對象的名稱;objname:是與規(guī)則關(guān)聯(lián)的表的列名或用戶定義的數(shù)據(jù)類型名。如果objname的格式為表名,則列名描述為列名,否則將被視為用戶定義的數(shù)據(jù)類型名。未來:僅用于用戶定義的數(shù)據(jù)類型。并且只適用于未來的價值,不影響現(xiàn)有的價值。示例:用正確的標(biāo)題集值綁定教師表的標(biāo)題列。ZC規(guī)則,老師。標(biāo)題:3 .駁回并刪除規(guī)則。要刪除規(guī)則,必須首先取消規(guī)則與指定列或用戶定

13、義數(shù)據(jù)類型的關(guān)聯(lián)。當(dāng)規(guī)則與多個列或用戶定義的數(shù)據(jù)類型相關(guān)聯(lián)時,應(yīng)使用sp_unbindrule逐個釋放它。將規(guī)則與相應(yīng)對象解除關(guān)聯(lián)的格式:sp _ unbindruleobjname、futureonly objname :關(guān)聯(lián)列名或用戶定義的數(shù)據(jù)類型名。未來:僅用于將規(guī)則與用戶定義的數(shù)據(jù)類型分離。并且僅適用于將來的值,不影響現(xiàn)有數(shù)據(jù)類型列和規(guī)則之間的關(guān)聯(lián)值。例如,取消教師的關(guān)聯(lián)。規(guī)則zc_rule中的標(biāo)題列。Sp _ unbindrule教師。標(biāo)題,刪除規(guī)則的語句格式:DROP RULE所有者。一個DROP語句可以同時刪除多個規(guī)則對象。例如,刪除規(guī)則ZC規(guī)則:刪除規(guī)則ZC規(guī)則,5.5 TRI

14、GGER,一種特殊類型的存儲過程,可以確保數(shù)據(jù)的完整性。與約束相似,但比約束更靈活,它可以實現(xiàn)比外鍵和檢查約束更復(fù)雜的檢查和操作,并具有更復(fù)雜和強大的數(shù)據(jù)控制能力。創(chuàng)建觸發(fā)器時,它作為數(shù)據(jù)庫對象存儲。當(dāng)事件發(fā)生時,觸發(fā)器被觸發(fā),觸發(fā)器中定義的功能將由數(shù)據(jù)庫管理系統(tǒng)自動執(zhí)行。也就是說,只有當(dāng)表中的數(shù)據(jù)被修改(添加、刪除或更改)時,SQL Server才會自動執(zhí)行相應(yīng)的觸發(fā)器。SQL Server中的觸發(fā)器可以分為三種類型:插入觸發(fā)器、更新觸發(fā)器和刪除觸發(fā)器。1。建立觸發(fā)器的語句格式,在表名|視圖名上創(chuàng)建觸發(fā)器觸發(fā)器名稱,加密為insert,updata,delete,加密為:此選項加密觸發(fā)器的定義文本,以防止未經(jīng)授權(quán)的用戶查看或修改它,INSERT,UPDATA,DELETE:描述觸發(fā)觸發(fā)器的事件。定義語句允許定義多個觸發(fā)器事件,用逗號分隔,第二個只能插入和更新。SQL操作語句:指定觸發(fā)觸發(fā)器時完成的操作操作。在這個語句中可以指定多個觸發(fā)器操作,它們應(yīng)該被分組到帶有BEGINEND的語句塊中。,示例:在學(xué)生上創(chuàng)建trigger xs以插入為打印歡迎新學(xué)生加入,使用加密,如何激活trigger?2.可以在觸發(fā)器中使用的特殊表。當(dāng)使用觸發(fā)器時,SQL Serve

溫馨提示

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

評論

0/150

提交評論