資源描述:
《數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第五章 數(shù)據(jù)ppt課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem第五章數(shù)據(jù)庫完整性渤海大學(xué)信息科學(xué)與工程學(xué)院CollegeofComputerScienceandEngineeringBohaiUniversitySpring2007概述什么是數(shù)據(jù)庫的完整性數(shù)據(jù)的正確性和相容性。防止不合語義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。例:學(xué)生的年齡必須是整數(shù),取值范圍為14--29;學(xué)生的性別只能是男或女;學(xué)生的學(xué)號(hào)一定是唯一的;學(xué)生所在的系必須是學(xué)校開設(shè)的系;數(shù)據(jù)庫是否具備完整性:關(guān)系到數(shù)據(jù)庫系統(tǒng)能否真實(shí)地反映現(xiàn)實(shí)世界。完整性與安全性的區(qū)別:完整性是防止數(shù)據(jù)庫中存在不
2、符合語義的數(shù)據(jù),防止錯(cuò)誤信息的輸入輸出,即所謂的“垃圾進(jìn)垃圾出”所造成的無效操作和錯(cuò)誤結(jié)果。安全性是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。二者的防范對(duì)象不同:完整性的防范對(duì)象是不合語義的數(shù)據(jù)。安全性的防范對(duì)象是非法用戶和非法存取。完整性控制機(jī)制DBMS必須提供完整性控制機(jī)制:1.完整性約束條件定義機(jī)制2.完整性檢查機(jī)制3.違約反應(yīng)完整性約束條件定義完整性約束條件:加在數(shù)據(jù)庫之上的語義約束條件。它們作為模式的一部分存入數(shù)據(jù)庫的數(shù)據(jù)字典中。完整性檢查:DBMS檢查數(shù)據(jù)是否滿足數(shù)據(jù)庫完整性約束條件的機(jī)制。違約處理:一般拒絕。完整性控制一、DBMS的完整性控制機(jī)
3、制二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn)三、參照完整性的實(shí)現(xiàn)一、DBMS的完整性控制機(jī)制1.定義功能一個(gè)完善的完整性控制機(jī)制應(yīng)該允許用戶定義各類完整性約束條件。定義表時(shí)定義的主碼、外碼等。一、DBMS的完整性控制機(jī)制2.檢查功能檢查用戶發(fā)出的操作請(qǐng)求是否違背了完整性約束條件。3.處理功能:如果用戶的操作請(qǐng)求違背了完整性約束條件,則采取一定措施來保證數(shù)據(jù)的完整性。一、DBMS的完整性控制機(jī)制對(duì)于檢查功能的兩種時(shí)機(jī):立即執(zhí)行的約束(Immediateconstraints)一條語句執(zhí)行完后立即檢查是否違背完整性約束。延遲執(zhí)行的約束(Deferredconstrains
4、ts)完整性檢查延遲到整個(gè)事務(wù)執(zhí)行結(jié)束后進(jìn)行。一、DBMS的完整性控制機(jī)制例:銀行數(shù)據(jù)庫中“借貸總金額應(yīng)平衡”的約束就應(yīng)該是延遲執(zhí)行的約束從賬號(hào)A轉(zhuǎn)一筆錢到賬號(hào)B為一個(gè)事務(wù),從賬號(hào)A轉(zhuǎn)出去錢后賬就不平了,必須等轉(zhuǎn)入賬號(hào)B后賬才能重新平衡,這時(shí)才能進(jìn)行完整性檢查。一、DBMS的完整性控制機(jī)制一條完整性規(guī)則可以用五元組表示:(D,O,A,C,P)D(Data)約束作用的數(shù)據(jù)對(duì)象;O(Operation)觸發(fā)完整性檢查的數(shù)據(jù)庫操作當(dāng)用戶發(fā)出什么操作請(qǐng)求時(shí)需要檢查該完整性規(guī)則是立即檢查還是延遲檢查;A(Assertion)數(shù)據(jù)對(duì)象必須滿足的斷言或語義約束這是規(guī)則
5、的主體;C(Condition)選擇A作用的數(shù)據(jù)對(duì)象值的謂詞;P(Procedure)違反完整性規(guī)則時(shí)觸發(fā)的過程。一、DBMS的完整性控制機(jī)制例1:在“學(xué)號(hào)不能為空”的約束中D約束作用的對(duì)象為Sno屬性O(shè)插入或修改Student元組時(shí)ASno不能為空C無(A可作用于所有記錄的Sno屬性)P拒絕執(zhí)行該操作一、DBMS的完整性控制機(jī)制例2:在“教授工資不得低于1000元”的約束中D約束作用的對(duì)象為工資Sal屬性O(shè)插入或修改職工元組時(shí)ASal不能小于1000C職稱=′教授′(A僅作用于職稱=‘教授’的記錄)P拒絕執(zhí)行該操作二、關(guān)系系統(tǒng)三類完整性的實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫
6、系統(tǒng)都提供了定義和檢查實(shí)體完整性、參照完整性和用戶定義的完整性的功能違反實(shí)體完整性規(guī)則和用戶定義的完整性規(guī)則的操作:一般是拒絕執(zhí)行違反參照完整性的操作:拒絕執(zhí)行接受這個(gè)操作,同時(shí)執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的狀態(tài)正確第五章數(shù)據(jù)庫完整性5.1實(shí)體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性約束命名子句*5.5域中的完整性限制5.6觸發(fā)器5.7小結(jié)5.1實(shí)體完整性5.1.1實(shí)體完整性的定義5.1.2實(shí)體完整性檢查和違約處理5.1.1實(shí)體完整性的定義在CREATETABLE語句中提供了PRIMARYKEY子句,供用戶在建表時(shí)指定關(guān)系的主碼列。在
7、列級(jí)使用PRIMARYKEY子句在表級(jí)使用PRIMARYKEY子句例1:在學(xué)生選課數(shù)據(jù)庫中,要定義Student表的Sno屬性為主碼方法1:CREATETABLEStudent(SnoNUMBER(8)PRIMARYKEY,SnameVARCHAR(20),SageNUMBER(20));方法2:CREATETABLEStudent(SnoNUMBER(8),SnameVARCHAR(20),SageNUMBER(20),PRIMARYKEY(SNO));方法3:CREATETABLEStudent(SnoNUMBER(8),SnameVARCHAR(2
8、0),SageNUMBER(20),CONSTRAINTPK_SNOPRIMAR