數(shù)據(jù)庫原理及應(yīng)用.ppt_第1頁
數(shù)據(jù)庫原理及應(yīng)用.ppt_第2頁
數(shù)據(jù)庫原理及應(yīng)用.ppt_第3頁
數(shù)據(jù)庫原理及應(yīng)用.ppt_第4頁
數(shù)據(jù)庫原理及應(yīng)用.ppt_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

An Introduction to Database System,數(shù)據(jù)庫原理及應(yīng)用,Principles and Applications of the Database,第6章 數(shù)據(jù)庫安全性和完整性 仲愷農(nóng)業(yè)工程學院 計算機科學與工程學院,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,本章導讀 本章主要介紹數(shù)據(jù)庫的安全性和完整性,包括數(shù)據(jù)庫安全性的定義,數(shù)據(jù)庫安全性控制采取的一些措施,數(shù)據(jù)庫完整性的定義,完整性約束條件的類型,完整性控制機制,并用SQL語句給出了如何描述授權(quán)、角色、建立視圖、約束以及觸發(fā)器的方式等。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,重點: 1安全性的基本概念 2完整性的基本概念 難點: 1域完整性控制方法 2實體完整性控制方法 3. 參照完整性控制方法,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,本章要點 安全性和完整性的基本概念 數(shù)據(jù)庫系統(tǒng)的6種安全性技術(shù) 域完整性控制方法 實體完整性控制方法 參照完整性控制方法,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,6.1 概述 6.2 數(shù)據(jù)庫的安全性 6.3 數(shù)據(jù)庫的完整性 6.4 SQL的完整性控制 本章小結(jié),仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.1 概述,數(shù)據(jù)庫的數(shù)據(jù)保護主要包括數(shù)據(jù)庫的安全性和完整性保護機制。,安全性:就是要保證數(shù)據(jù)庫中數(shù)據(jù)的安全,防止未授權(quán)用戶隨意修改數(shù)據(jù)庫中的數(shù)據(jù),確保數(shù)據(jù)的安全。,完整性:是數(shù)據(jù)庫的一個重要特征,也是保證數(shù)據(jù)庫中的數(shù)據(jù)切實有效、防止錯誤、實現(xiàn)商業(yè)規(guī)則的一種重要機制。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.1 概述,防范對象:,安全性的防范對象:非法用戶和非法操作。,完整性的防范對象:是不合法的語義數(shù)據(jù)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,6.1 概述 6.2 數(shù)據(jù)庫的安全性 6.3 數(shù)據(jù)庫的完整性 6.4 SQL的完整性控制 本章小結(jié),仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,安全性問題是計算機系統(tǒng)中普遍存在的一個問題,而在數(shù)據(jù)庫系統(tǒng)中顯得尤為突出。 原因:數(shù)據(jù)庫系統(tǒng)中大量數(shù)據(jù)集中存放,而且為許多最終用戶直接共享。數(shù)據(jù)庫系統(tǒng)建立在操作系統(tǒng)之上,而操作系統(tǒng)是計算機系統(tǒng)的核心,因此數(shù)據(jù)庫系統(tǒng)的安全性與計算機系統(tǒng)的安全性息息相關(guān)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,在一般計算機系統(tǒng)中,安全措施是一層一層設(shè)置的,下圖是常見的計算機系統(tǒng)安全模型。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,6.2.1 用戶標識與鑒別 6.2.2 存取控制 6.2.3 視圖 6.2.4 數(shù)據(jù)加密 6.2.5 跟蹤審計 6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.1 用戶標識與鑒別,用戶標識與鑒別是系統(tǒng)提供的最外層安全保護措施。 當用戶進入數(shù)據(jù)庫系統(tǒng)時,需要提供用戶的標識,系統(tǒng)根據(jù)標識鑒別此用戶是不是合法用戶: 對于合法的用戶,進一步開放數(shù)據(jù)庫的訪問權(quán)限; 對于非法用戶,則拒絕該用戶對數(shù)據(jù)庫進行存取操作。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.1 用戶標識與鑒別,用戶標識與鑒別的方法比較多,常用的有下幾種:,1輸入用戶名標識合法身份,2回答用戶口令標識身份,3通過回答隨機數(shù)的運算結(jié)果標識合法身份,4通過個人特征鑒別標識合法身份,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,6.2.1 用戶標識與鑒別 6.2.2 存取控制 6.2.3 視圖 6.2.4 數(shù)據(jù)加密 6.2.5 跟蹤審計 6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,數(shù)據(jù)庫安全性所關(guān)心的主要是DBMS的存取控制機制。存取控制是確保具有授權(quán)資格的用戶訪問數(shù)據(jù)庫的權(quán)限,同時使得所有未被授權(quán)的人員無法訪問數(shù)據(jù)庫的機制。,1存取控制機制的構(gòu)成部分,(1)定義用戶權(quán)限:用戶權(quán)限是指用戶對于數(shù)據(jù)對象能夠執(zhí)行的操作種類。進行用戶權(quán)限定義,系統(tǒng)必須提供有關(guān)用戶定義權(quán)限的語言。,(2)系統(tǒng)進行權(quán)限檢查:每當用戶發(fā)出存取數(shù)據(jù)庫的操作請求后,DBMS首先查找數(shù)據(jù)字典,進行合法權(quán)限檢查,如果用戶的操作請求沒有超出其數(shù)據(jù)操作權(quán)限,則準予執(zhí)行其數(shù)據(jù)操作;否則,拒絕其執(zhí)行此操作。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,2存取機制的類別,(1)自主存取控制 :在自主存取控制方法中,用戶對于不同的對象有不同的存取權(quán)限;不同的用戶對同一對象的存取權(quán)限也不同;用戶也可以將自己擁有的權(quán)限傳授給其他用戶。,(2)強制存取控制 :在強制存取控制中,每一個數(shù)據(jù)對象被標以一定的密級;每一個用戶也被授予某個級別的訪問許可證;對于任意一個對象,只有具有合法許可證的用戶才可以存取。與自主存取控制相比,強制存取控制比較嚴格。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,3. 自主訪問控制方法,(1)用戶分類與權(quán)限,對于一個數(shù)據(jù)庫,不同的用戶有不同的訪問要求和使用權(quán)限。 一般可以將數(shù)據(jù)庫的用戶分為四類:,數(shù)據(jù)庫管理員,數(shù)據(jù)庫對象的屬主,一般數(shù)據(jù)庫用戶,公共用戶,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,數(shù)據(jù)庫管理員 (Database Administrator,DBA) 擁有支配整個數(shù)據(jù)庫資源的特權(quán),對數(shù)據(jù)庫擁有最大的特權(quán),因而也對數(shù)據(jù)庫負有特別的責任。DBA特權(quán)命令包括給各個獨立的帳戶、用戶或者用戶組授予特權(quán)和回收特權(quán),以及把某個適當?shù)陌踩诸惣墑e指派給某個用戶帳戶。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,數(shù)據(jù)庫對象的屬主 是數(shù)據(jù)庫的創(chuàng)建者,他除了一般數(shù)據(jù)庫用戶擁有的權(quán)力外,還可以授予或收回其他用戶對其所創(chuàng)建的數(shù)據(jù)庫的存取權(quán)。,一般數(shù)據(jù)庫用戶 就是通過授權(quán)可對數(shù)據(jù)庫進行操作的用戶。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,公共用戶 是為了方便共享數(shù)據(jù)操作而設(shè)置的,它代表全體數(shù)據(jù)庫用戶,如果把某個數(shù)據(jù)對象的某項操作授權(quán)給公共用戶,則一個合法的數(shù)據(jù)庫用戶都能進行該項數(shù)據(jù)操作。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,用戶使用數(shù)據(jù)庫的方式稱為權(quán)限。使用數(shù)據(jù)庫的權(quán)限分為二類:訪問數(shù)據(jù)特權(quán)和修改數(shù)據(jù)庫模式的特權(quán)。,訪問數(shù)據(jù)特權(quán)包括: 讀數(shù)據(jù)權(quán)限、插入數(shù)據(jù)權(quán)限、修改數(shù)據(jù)權(quán)限和刪除數(shù)據(jù)權(quán)限。 修改數(shù)據(jù)庫模式的特權(quán)包括: 創(chuàng)建和刪除索引的索引權(quán)限,創(chuàng)建新表的資源權(quán)限,允許修改表結(jié)構(gòu)的修改權(quán)限,允許撤銷關(guān)系表的撤銷權(quán)限等。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,(2)SQL的數(shù)據(jù)控制功能,SQL對自主存取控制提供了支持,其DCL主要是GRANT(授權(quán))語句和REVOKE(收權(quán))語句。, 授權(quán),由于不同的用戶對數(shù)據(jù)庫具有不同的存取權(quán),因此為了保證用戶只能訪問他有權(quán)存取的數(shù)據(jù),必須對每個用戶授予不同的數(shù)據(jù)庫存取權(quán)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授 權(quán),在SQL中,授權(quán)語句有兩種:授予權(quán)限語句和授予角色語句。,一個角色是一組被命名的零個或多個特權(quán)。授權(quán)一個角色給一個用戶,則允許該用戶使用被授權(quán)的角色所擁有的每一個特權(quán)。用戶與角色之間存在多對多的聯(lián)系;一個用戶允許被授予多個角色使用,同一個角色的使用被授權(quán)予多個用戶。一個角色的使用也可以被授權(quán)予另一個角色。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予權(quán)限語句,語句基本形式為: GRANT 權(quán)限ON 數(shù)據(jù)對象TO受權(quán)者WITH GRANT OPTION 數(shù)據(jù)對象:=基表視圖屬性 受權(quán)者:= PUBLIC授權(quán)ID 語義:將某作用在指定操作對象上的操作權(quán)限,限授予指定的用戶。(即數(shù)據(jù)庫對象的訪問權(quán)限的管理),如果指定WITH GRANT OPTION子句,則獲得某種權(quán)限的用戶可以把這種權(quán)限在授予其他用戶。如沒有指定該子句,獲得授權(quán)的用戶將不能傳播權(quán)限(轉(zhuǎn)授)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予權(quán)限語句,【例6-1】在數(shù)據(jù)庫XSBOOK中,將表STUDENT的SELECT操作權(quán)限授予所有的用戶。 注意:PUBLIC是一個特殊的保留字,代替該數(shù)據(jù)庫系統(tǒng)的全體用戶。對于大部分可以公開的數(shù)據(jù),可以一次性地授權(quán)給PUBLIC,而不必對每個用戶逐個授權(quán)。,GRANT SELECT ON TABLE STUDENT TO PUBLIC;,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予權(quán)限語句,【例6-2】在數(shù)據(jù)庫XSBOOK中,將表STUDENT的借書證號、姓名字段的UPDATE權(quán)限授予給liu。 【例6-3】將對表STUDENT的所有操作特權(quán)授予liu。,GRANT UPDATE(借書證號,姓名) ON STUDENT TO liu;,GRANT ALL PRIVILEGES ON TABLE STUDENT TO liu;,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予權(quán)限語句,【例6-4】將對表STUDENT中借書證號和專業(yè)名的INSERT特權(quán)授予liu,并允許他將此特權(quán)轉(zhuǎn)授給其他用戶。,GRANT INSERT(借書證號,專業(yè)名) ON STUDENT TO liu WITH GRANT OPTION;,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予角色語句,該語句基本形式為(oracle) GRANT 角色ID,角色ID TO受權(quán)者 WITH ADMIN OPTION,該語句將一個或多個角色的使用授予,若有WITH ADMIN OPTION,則受權(quán)者可將此角色轉(zhuǎn)授給其他。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予角色語句,在下列語句中,Accounting_role,Import_role都是己建立的角色。 【例6-5】將角色Accounting _role和Import _role授予所有的用戶。,GRANT Accounting _role,Import_role TO PUBLIC;,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,授予角色語句,【例6-6】將角色Accounting _role授予用戶zhang,并允許他將此角色轉(zhuǎn)授給其他人。,GRANT Accounting _role TO zhang WITH ADMIN OPTION;,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,將用戶test加入至角色manager Exec sp_addrolemember manager,test,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,用戶 Jean 擁有表 Plan_Data。Jean 將表 Plan_Data 的 SELECT 權(quán)限授予 Accounting 角色(指定 WITH GRANT OPTION 子句)。用戶 Jill 是 Accounting 的成員,他要將表 Plan_Data 上的 SELECT 權(quán)限授予用戶 Jack,Jack 不是 Accounting 的成員。 因為對表 Plan_Data 用 GRANT 語句授予其他用戶 SELECT 權(quán)限的權(quán)限是授予 Accounting 角色而不是顯式地授予 Jill,不能因為已授予 Accounting 角色中成員該權(quán)限,而使 Jill 能夠授予表的權(quán)限。Jill 必須用 AS 子句來獲得 Accounting 角色的授予權(quán)限。 /* User Jean */ GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION /* User Jill */ GRANT SELECT ON Plan_Data TO Jack AS Accounting,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,當用戶將某些權(quán)限授給其他用戶后,有時還需要把權(quán)限收回。收權(quán)需要使用REVOKE語句。 收回權(quán)限的REVOKE語句: 收回角色的REVOKE語句:, 收回權(quán)限,REVOKE 權(quán)限ON 數(shù)據(jù)對象 FROM 受權(quán)者,受權(quán)者,REVOKE 角色IDFROM 受權(quán)者,受權(quán)者,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,【例6-7】將liu對STUDENT表的INSERT權(quán)限收回。,REVOKE INSERT ON STUDENT FROM liu,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,(3)自主存取控制的不足之處,自主存取控制能夠通過授權(quán)機制有效地控制用戶對敏感數(shù)據(jù)的存取,但也存在著一定的缺陷,其主要問題是系統(tǒng)對權(quán)限的授予狀況無法進行有效的控制,因而可能造成數(shù)據(jù)的無意泄漏。,但是,強制存取控制方法可以有效地解決這一問題。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,所謂MAC是指系統(tǒng)為保證更高程度的安全性,它不是用戶能直接感知或進行控制的。MAC適用于那些對數(shù)據(jù)有嚴格而固定密級分類的部門,例如軍事部門或政府部門。,4強制存取控制方法(MAC),在MAC中,DBMS所管理的全部實體被分為主體和客體兩大類。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,主體系統(tǒng)中的活動實體,既包括DBMS所管理的實際用戶,也包括代表用戶的各進程。,客體系統(tǒng)中的被動實體,是受主體操縱的,包括文件、基表、索引、視圖等等。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,當某一用戶(或一主體)以標記label注冊入系統(tǒng)時,系統(tǒng)要求他對任何客體的存取必須遵循如下規(guī)則: (1)僅當主體的許可證級別大于或等于客體的密級時,該主體才能讀取相應(yīng)的客體; (2)僅當主體的許可證級別等于客體的密級時,該主體才能寫相應(yīng)的客體。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.2 存取控制,一般強制存取控制采用以下幾種方法實現(xiàn):,(1)限制訪問控制,(2)過程控制,(3)系統(tǒng)限制,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,6.2.1 用戶標識與鑒別 6.2.2 存取控制 6.2.3 視圖 6.2.4 數(shù)據(jù)加密 6.2.5 跟蹤審計 6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.3 視圖,視圖技術(shù)是當前數(shù)據(jù)庫技術(shù)中保持數(shù)據(jù)庫安全性的重要手段之一。通過為不同的用戶定義不同的視圖,可以將要保密的數(shù)據(jù)對無權(quán)存取的用戶隱藏起來,從而自動地給數(shù)據(jù)提供一定程度的安全保護。例如,給某用戶定義了一個只讀視圖,并且這個視圖的數(shù)據(jù)來源于關(guān)系R,則此用戶只能讀R中的有關(guān)信息,數(shù)據(jù)庫中一切其他信息對他都是隱藏的。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.3 視圖,【例6-8】允許一個用戶查詢學生表STUDENT的記錄,但是只允許他查詢計算機專業(yè)學生的情況。,CREATE VIEW STUDENT_SUBJECT AS SELECT 借書證號,姓名,專業(yè)名,性別,出生時間,借書數(shù) FROM STUDENT WHERE 專業(yè)名計算機,使用這個視圖STUDENT_SUBJECT的用戶看到的只是基本表STUDENT的一個“水平子集”,或稱行子集。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,6.2.1 用戶標識與鑒別 6.2.2 存取控制 6.2.3 視圖 6.2.4 數(shù)據(jù)加密 6.2.5 跟蹤審計 6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.4 數(shù)據(jù)加密,數(shù)據(jù)加密技術(shù)是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲或者傳輸中失密的有效手段。 加密的基本思想是根據(jù)一定的算法將原始數(shù)據(jù)(明文)變換成不可直接識別的格式(密文),從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容。這樣可以保證只有掌握了密鑰的用戶才能訪問數(shù)據(jù),而且即使數(shù)據(jù)被非法地從數(shù)據(jù)庫中竊取,或者在數(shù)據(jù)傳輸過程中被截取,竊取者都無法知道密碼數(shù)據(jù)的含義。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.4 數(shù)據(jù)加密,數(shù)據(jù)加密的主要方法有兩種:,1替換方法 該方法使用密鑰(Encryption Key)將明文中的每一個字符轉(zhuǎn)換為密文中的字符。 2置換方法 該方法僅將明文的字符按不同的順序重新排列。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,6.2.1 用戶標識與鑒別 6.2.2 存取控制 6.2.3 視圖 6.2.4 數(shù)據(jù)加密 6.2.5 跟蹤審計 6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.5 跟蹤審計,跟蹤審計(Audit Trial)是一種監(jiān)視措施,數(shù)據(jù)庫運行中,DBMS跟蹤用戶對一些敏感數(shù)據(jù)的存取活動,把用戶對數(shù)據(jù)庫的操作自動記錄下來放入審計日志(Audit Log)中,有許多DBMS的跟蹤審計記錄文件與系統(tǒng)的運行日志合在一起。系統(tǒng)能利用這些審計跟蹤的信息,重現(xiàn)導致數(shù)據(jù)庫現(xiàn)狀的一系列事件。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.5 跟蹤審計,跟蹤審計的記錄一般包括以下內(nèi)容:請求(源文本)、操作類型(如修改、查詢等)、操作終端標識與操作者標識、操作日期和時間、操作所涉及的對象(表、視圖、記錄、屬性等)、數(shù)據(jù)的前映象和后映象。DBMS提供相應(yīng)的語句供施加和撤銷跟蹤審計之用。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2 數(shù)據(jù)庫的安全性,6.2.1 用戶標識與鑒別 6.2.2 存取控制 6.2.3 視圖 6.2.4 數(shù)據(jù)加密 6.2.5 跟蹤審計 6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,統(tǒng)計數(shù)據(jù)庫是一種特殊類型的數(shù)據(jù)庫,它和一般的數(shù)據(jù)庫相比,有很多共同點,但是也有許多獨特之處。 統(tǒng)計數(shù)據(jù)庫,它回答給用戶的只能是統(tǒng)計信息。如國家的人口統(tǒng)計數(shù)據(jù)庫、經(jīng)濟統(tǒng)計數(shù)據(jù)庫等。統(tǒng)計數(shù)據(jù)庫存儲了大量敏感的數(shù)據(jù),但只給用戶提供這些原始數(shù)據(jù)的統(tǒng)計數(shù)據(jù)(如平均值、總計等),而不允許用戶查看單個的原始數(shù)據(jù)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,用戶使用合法的統(tǒng)計查詢可以推斷出他不應(yīng)了解的數(shù)據(jù)。,例如,一個學生想要知道另一個學生A的成績,他可以通過查詢包含A在內(nèi)的一些學生的平均成績,然后對于上述學生集合P,他可用自己的學號取代A后得集合P的平均成績。通過這樣兩次查詢得到的平均成績的差和自己的成績,就可以推斷出學生A的成績。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.2.6 統(tǒng)計數(shù)據(jù)庫的安全,為了堵塞這類漏洞,必須對數(shù)據(jù)庫的訪問進行推斷控制?,F(xiàn)在常用的方法有數(shù)據(jù)擾動、查詢控制和歷史相關(guān)控制等。這些方法雖然都獲得了應(yīng)用,取得了很好的效果,但是迄今為止,統(tǒng)計數(shù)據(jù)庫的安全問題尚未徹底解決。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,6.1 概述 6.2 數(shù)據(jù)庫的安全性 6.3 數(shù)據(jù)庫的完整性 6.4 SQL的完整性控制 本章小結(jié),仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3 數(shù)據(jù)庫的完整性,。,數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,即為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出。,例如: 學生的學號一定是唯一的,學號的長度是13至15個字符串;學生的年齡是整數(shù),取值范圍為1145; 當一個用戶向數(shù)據(jù)庫插入一個新的學生記錄或修改一個學生的數(shù)據(jù)時必須滿足這些條件。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3 數(shù)據(jù)庫的完整性,數(shù)據(jù)庫的完整性保證了真實反映現(xiàn)實世界,凡是已經(jīng)失真的數(shù)據(jù)都可以說其完整性受到了破壞,這種情況下就不能再使用數(shù)據(jù)庫,否則可能造成嚴重的后果。,完整性受破壞的常見原因:,1錯誤的數(shù)據(jù),2錯誤的更新操作,3并發(fā)訪問,4各種硬件故障,5人為的破壞,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3 數(shù)據(jù)庫的完整性,6.3.1 完整性的語義約束 6.3.2 完整性語義檢查,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,。,完整性約束條件作用的對象可以是列、元組、關(guān)系三種。,列約束:主要是列類型、取值范圍、精度、排序等約束條件 。 元組約束:是元組中各個字段間的聯(lián)系的約束。 關(guān)系的約束:是若干元組間、關(guān)系集合上以及關(guān)系間的聯(lián)系的約束。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,完整性約束條件的類型可以分為兩大類型: 靜態(tài)約束和動態(tài)約束。,1靜態(tài)約束,靜態(tài)約束是指數(shù)據(jù)庫每一確定狀態(tài)時的數(shù)據(jù)對象所應(yīng)滿足的約束條件,它是反映數(shù)據(jù)庫狀態(tài)合理性的約束,這是最重要的一類完整性約束。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,根據(jù)約束作用的對象的不同,又可分為下面三種:,靜態(tài)列約束 對一個列的取值域等的說明或限制,這是最常見、最容易實現(xiàn)的一類完整性約束,它包括以下幾個方面:, 對數(shù)據(jù)類型的約束,例如,數(shù)據(jù)的類型、長度、單位、精度等。 對數(shù)據(jù)格式的約束,例如,學生的學號的格式中前四位表示入學年份,中間三位為院號+系號,后三位為班級號+順序編號。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束, 對取值范圍或取值集合的約束,例如,大學本科學生年齡范圍的取值范圍為1145。 對空值的約束,空值表示未定義或未知的值,與零值和空格不同。有的列允許空值,有的不允許,例如,規(guī)定學生的姓名不允許取空值;學號成績可以為空值。 其他約束,例如,關(guān)于列的排序說明、組合列等。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,(2) 靜態(tài)元組約束,一個元組是由若干列值組成的,靜態(tài)元組約束規(guī)定組成一個元組的各個列之間的約束關(guān)系。 例如,一個學生的科目成績列,規(guī)定每科成績?nèi)≈挡坏玫陀?,也不得高于100。,(3) 靜態(tài)關(guān)系約束,靜態(tài)關(guān)系約束反映了一個關(guān)系中各個元組之間或者若干關(guān)系之間存在的聯(lián)系或約束。它包括:,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束, 實體完整性約束。即關(guān)鍵字段的值不為空。 參照完整性約束。即一個關(guān)系的外碼的取值與另一個關(guān)系的關(guān)鍵字的值有關(guān)。 函數(shù)依賴約束。大部分函數(shù)依賴約束都在關(guān)系模式中定義。 統(tǒng)計約束。即某個字段值與一個關(guān)系多個元組的統(tǒng)計值之間的約束關(guān)系。例如對學生平均成績的約束等,這里的平均成績就是統(tǒng)計值。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,動態(tài)約束是指數(shù)據(jù)庫從一種狀態(tài)轉(zhuǎn)變?yōu)榱硪环N狀態(tài)時,新、舊值之間滿足的約束條件,它反映了數(shù)據(jù)庫狀態(tài)改變時應(yīng)遵守的約束。按照約束對象不同,它又分為下面三種。,1動態(tài)約束,(1) 動態(tài)列約束,(2) 動態(tài)元組約束,(3) 動態(tài)關(guān)系約束,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,動態(tài)列約束規(guī)定修改列定義或列值時應(yīng)滿足的約束條件,它包括: 修改列定義時的約束。例如,將允許空值的列改為不允許空值時,如果該列目前已存在空值,則拒絕這種修改。 修改列值時的約束。修改列值時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。例如,學生的年齡只能增長。,(1) 動態(tài)列約束,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.1 完整性的語義約束,動態(tài)元組約束是指修改某個元組的值時元組中的各個字段之間要滿足某種約束條件。例如,職工津貼不得高于個人基本工資的20%等。,(2) 動態(tài)元組約束,(3) 動態(tài)關(guān)系約束,動態(tài)關(guān)系約束是加在關(guān)系變化時的限制條件,例如,事務(wù)一致性、原子性等約束條件。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3 數(shù)據(jù)庫的完整性,6.3.1 完整性的語義約束 6.3.2 完整性語義檢查,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.3.2 完整性語義檢查,現(xiàn)代數(shù)據(jù)庫技術(shù)采用對數(shù)據(jù)完整性的語義約束和檢查來保護數(shù)據(jù)庫的完整性, 實現(xiàn)方式有兩種:一種是通過定義和使用完整性約束規(guī)則,另一種是通過觸發(fā)器和存儲過程來實現(xiàn)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,第6章 數(shù)據(jù)庫安全性和完整性,6.1 概述 6.2 數(shù)據(jù)庫的安全性 6.3 數(shù)據(jù)庫的完整性 6.4 SQL的完整性控制 本章小結(jié),仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4 SQL的完整性控制,SQL中的完整性約束主要分為三類:域完整性、實體完整性和參照完整性。但是,SQL尚不支持動態(tài)完整性約束。,6.4.1 域完整性 6.4.2 實體完整性 6.4.3 參照完整性,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,域完整性又稱為列完整性,指列數(shù)據(jù)輸入的有效性。實現(xiàn)域完整性的方法可通過定義相應(yīng)的約束、規(guī)則等方法實現(xiàn)。,1列約束 定義列約束規(guī)定某個屬性的值必須符合某種數(shù)據(jù)類型并且取自某個數(shù)據(jù)定義域。域完整性約束施加于單個數(shù)據(jù)上。,(1)長途電話號碼格式為:9999999999; (2)倉庫庫存量0; (3)圖書管理系統(tǒng)中允許讀者當前在借圖書量最多為20本。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,域完整性可以使用CHECK約束、NOT NULL約束、UNIQUE約束在表定義的時候?qū)崿F(xiàn)。,CHECK約束:是字段輸入時的驗證規(guī)則,表示一個字段的輸入內(nèi)容必須滿足CHECK約束的條件,若不滿足,則數(shù)據(jù)無法正常輸入。,NOT NULL約束:約束表示列值的非空性,此列不允許為空;,UNIQUE約束:表示列值唯一性。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,【例6-9】定義表STUDENT的同時,定義字段的非空性和借書數(shù)字段的約束條件。,CREATE TABLE STUDENT ( 借書證號 char(8) NOT NULL, 姓名 char(8) NOT NULL, 專業(yè)名 char(12) NOT NULL, 性別 bit NOT NULL, 借書數(shù) tinyint CHECK(借書數(shù)=0 and 借書數(shù)=20) NULL ),NOT NULL約束限定了借書證號、姓名、專用名、性別不能為空值;CHECK約束限定限定了借書數(shù)的取值范圍。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,【例6-10】建立一個貨物表GOODS,要求貨品編號Gno列取值唯一,貨品名稱Gname列不允許為空。,CREATE TABLE GOODS ( Gno char(7) UNIQUE, Gname char(8) NOT NULL, Nums int ),仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,2規(guī)則,規(guī)則對象的使用步驟如下: (1)定義規(guī)則對象 語法格式:,CREATE RULE rule AS condition_expression,參數(shù)含義:參數(shù)rule為定義的新規(guī)則名,規(guī)則名必須符合標識符規(guī)則;參數(shù)condition _expression為規(guī)則的條件表達式,該條件表達式可為WHERE子句中任何有效的表達式,但規(guī)則表達式中不能包含列或其他數(shù)據(jù)庫對象,可以包含不引用數(shù)據(jù)庫對象的內(nèi)置函數(shù)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,(2)將規(guī)則對象綁定到列或用戶自定義類型,規(guī)則對象的綁定,使用的是系統(tǒng)存儲過程sp_bindrule,語法格式如下:,sp_bindrule rulename = rule , objname = object_name , futureonly = futureonly_flag ,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,參數(shù)含義:參數(shù)rule為CREATE RULE語句創(chuàng)建的規(guī)則名,要用單引號括起來。參數(shù)object_name為綁定到規(guī)則的列或用戶定義的數(shù)據(jù)類型,如果object_name采用“表名.字段名”格式,則認為綁定到表的列,否則綁定到用戶定義的數(shù)據(jù)類型;參數(shù)futureonly_flag僅當將規(guī)則綁定到用戶定義的數(shù)據(jù)類型時才使用,如果futureonly_flag設(shè)置為futureonly,用戶定義數(shù)據(jù)類型的現(xiàn)有列不繼承新規(guī)則。如果futureonly_flag為NULL,當被綁定的數(shù)據(jù)類型當前無規(guī)則時,新規(guī)則將綁定到用戶定義數(shù)據(jù)類型的每一列。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,【例6-11】創(chuàng)建一個規(guī)則,并綁定到STUDENT表的借書證號字段。,CREATE RULE num_rule AS num like 1-61-61-9 1-9 1-9 1-9 0-9 0-9 0-9 GO EXEC sp_bindrule num_rule, STUDENT.借書證號,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,(3)規(guī)則對象的刪除,刪除規(guī)則對象前,首先應(yīng)使用系統(tǒng)存儲過程sp_unbindrule,解除被綁定對象與規(guī)則對象之間的綁定關(guān)系。 語法格式: sp_unbindrule object_name = object_name , futureonly = futureonly_flag ,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,在解除列或自定義類型與規(guī)則對象之間的綁定關(guān)系后,就可以刪除規(guī)則對象了。 語法格式: 參數(shù)含義:參數(shù)rule指定刪除的規(guī)則名,可以包含規(guī)則所有者名;參數(shù)n表示可以指定多個規(guī)則同時刪除。,DROP RULE rule,n,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,【例6-12】解除num_rule規(guī)則對象與STUDENT表的借書證號的綁定關(guān)系,然后刪除規(guī)則對象num_rule。,EXEC sp_unbindrule num_rule DROP RULE num_rule,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,3觸發(fā)器 觸發(fā)器就是一類靠事件驅(qū)動的特殊過程,一旦由某個用戶定義,任何用戶對該數(shù)據(jù)的增、刪、改操作均由服務(wù)器自動激活相應(yīng)的觸發(fā)器,在核心層進行集中的完整性控制。 一個觸發(fā)器應(yīng)包括下面兩個功能: (1)指明什么條件下觸發(fā)器被執(zhí)行。 (2)指明觸發(fā)器執(zhí)行什么動作。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,SQL觸發(fā)器定義的語法如下:,:=CREATE TRIGGER ON WITH ENCRYPTION /*說明是否采用加密方式*/ FOR| AFTER|INSTEAD OF /*定義觸發(fā)器的類型*/ AS IF UPDATE(column)AND|ORUPDATE(column) n | IF(COLUMNS_UPDATED()bitwise_operator updated_bitmask) /*兩個IF子句用于說明觸發(fā)器執(zhí)行的條件*/ Sql_statements /*T-SQL語句序列*/,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,【例6-13】在數(shù)據(jù)庫XSBOOK中創(chuàng)建一觸發(fā)器,當向BORROW表插入一記錄時,檢查該記錄的借書證號在STUDENT表是否存在,檢查圖書的ISBN號在BOOK表中是否存在,及圖書的庫存量是否大于0,若有一項為否,則不允許插入。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,CREATE TRIGGER jy_insert ON BORROW FOR INSERT AS IF EXISTS( select * from inserted a where a.借書證號 not in ( select b.借書證號 from STUDENT b) or a.ISBN not in(select c.ISBN from BOOK c) OR EXISTS(select * from book where 庫存量=0) BEGIN RAISERROR(違背數(shù)據(jù)一致性,16,1) ROLLBACK TRANSACTION END,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,ELSE BEGIN UPDATE STUDENT SET 借書數(shù)=借書數(shù)+1 WHERE STUDENT.借書證號 IN (select inserted.借書證號 from inserted) UPDATE BOOK SET 庫存量=庫存量-1 WHERE book.ISBN IN (select inserted.ISBN from inserted) END,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,inserted 邏輯表:當向表中插入數(shù)據(jù)時,INSERT觸發(fā)器觸發(fā)執(zhí)行,新的記錄插入到觸發(fā)器表和inserted表中。,觸發(fā)器中使用的特殊表,執(zhí)行觸發(fā)器時,系統(tǒng)創(chuàng)建了兩個特殊的邏輯表Inserted表和deleted表。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.1 域完整性,deleted邏輯表:用于保存已從表中刪除的記錄,當觸發(fā)一個DELETE觸發(fā)器時,被刪除的記錄存放到deleted邏輯表中。 修改一條記錄等于插入一新記錄,同時刪除舊記錄。當對定義了UPDATE觸發(fā)器的表記錄修改時,表中原記錄移動到DELETE表中,修改過的記錄插入到inserted表中。觸發(fā)器可檢查deleted表、inserted表及被修改的表。,觸發(fā)器中使用的特殊表,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4 SQL的完整性控制,6.4.1 域完整性 6.4.2 實體完整性 6.4.3 參照完整性,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.2 實體完整性,實體完整性又稱為行的完整性,要求表中有一個主鍵,其值不能為空且唯一地標識對應(yīng)的記錄。SQL在CREATE TABLE語句中提供PRIMARY KEY創(chuàng)建主碼列,實現(xiàn)數(shù)據(jù)的實體完整性。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.2 實體完整性,一個表只能有一個PRIMARY KEY約束,而且PRIMARY KEY約束中的列不能取空值。當為表定義PRIMARY KEY約束時,SQL為主鍵創(chuàng)建唯一索引,實現(xiàn)主鍵數(shù)據(jù)的唯一性,在查詢中,該索引可用來對數(shù)據(jù)進行快速訪問。如果PRIMARY KEY約束是由多列組合定義的,則某一列的值可以重復,但PRIMARY KEY約束定義中所有列的組合值必須唯一。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.2 實體完整性,【例6-14】在圖書管理系統(tǒng)里面,創(chuàng)建一個學生借閱表BORROW。,CREATE TABLE BORROW ( 借書證號 char(5), ISBN char(10), 借書時間 datetime, 應(yīng)還時間 datetime, PRIMARY KEY(借書證號,ISBN) ),用PRIMARY KEY約束定義了關(guān)系的主碼后,每當用戶程序?qū)χ鞔a列進行更新操作時,系統(tǒng)自動進行完整性檢查,凡操作使主碼值為空值或使主碼值在表中不唯一,系統(tǒng)拒絕此操作,從而保證了實體完整性。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4 SQL的完整性控制,6.4.1 域完整性 6.4.2 實體完整性 6.4.3 參照完整性,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,參照完整性是關(guān)系模式的另一種重要約束,又稱為引用完整性。參照完整性保證主表中的數(shù)據(jù)與從表中數(shù)據(jù)的一致性,通過定義從表中的外碼與主表中的主碼之間的對應(yīng)關(guān)系實現(xiàn)。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,在SQL中,有兩種方法用于說明一個外部關(guān)鍵字:,第一種方法: 如果外部關(guān)鍵字只有一個屬性,可以在它的屬性名和類型后面直接用“REFERENCES”說明它參照了某個被參照表的某些屬性(必須是主關(guān)鍵字),其格式為: REFERENCES (),另一種方法: 在CREATE TABLE語句的屬性列表后面增加一個或幾個外部關(guān)鍵字說明,其格式為: FOREIGN KEY REFERENCES (),仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,下面將詳細討論實現(xiàn)參照完整性要考慮的幾個問題。,1外碼的取值規(guī)則,【例6-15】 設(shè)有一個關(guān)系模式, 學生(Sno,Sname,Ssex,Subno) 其中,Sno是主關(guān)鍵字,專業(yè)號Subno是外部關(guān)鍵字,并參照了關(guān)系模式 專業(yè)(Subno,Subname) 中的Subno,這時可以直接說明“學生.Subno”參照了“專業(yè).Subno”,稱專業(yè)為被參照關(guān)系,學生為參照關(guān)系。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,在這個例子中,看一下學生實體中的Subno取值的限制。如果一個學生還沒有分配專業(yè),取值為空值。如果分配了專業(yè),那么必須是專業(yè)實體中的某個專業(yè),也就是其取值必須是專業(yè)表中存在的某個專業(yè)號,這就是參照完整性。因為“學生.Subno”必須參照“專業(yè).Subno”取值。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,取值規(guī)則,6.4.3 參照完整性,若屬性或?qū)傩越MF是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng),則對于R中的每個元組在F上的取值必須為: 或者取空值(F的每個屬性均為空值); 或者等于S中某個元組的主碼值。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,(1)拒絕插入,一般當參照關(guān)系插入元組,被參照關(guān)系的主碼字段存在相應(yīng)的值,則允許參照關(guān)系插入元組。而被參照關(guān)系如不存在相應(yīng)的元組,其主碼值與參照關(guān)系插入元組的外碼值不相同,這時可有以下策略:,2參照表中增加元組,僅當被參照關(guān)系中存在相應(yīng)的元組,其主碼值與參照關(guān)系插入元組的外碼值相同時,系統(tǒng)才執(zhí)行插入操作,否則拒絕此操作。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,(2)遞歸插入 首先向被參照關(guān)系中插入相應(yīng)的元組,其主碼值等于參照關(guān)系插入元組的外碼值,然后向參照關(guān)系插入元組。 例如對于上面的情況,系統(tǒng)將首先向?qū)I(yè)關(guān)系插入Subno=10的元組,然后再向?qū)W生表插入(981601,張麗,0,10)元組。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,3參照表中修改一個元組的外碼,當參照關(guān)系修改某元組中外碼值,被參照關(guān)系主碼值與參照關(guān)系修改后元組的外碼值相同,則允許參照關(guān)系修改元組。而若被參照關(guān)系如不存在相應(yīng)的外碼值,則拒絕修改。如例6-15中,將學生表的某個“專業(yè)號.Subno”的值修改為專業(yè)表中不存在的某個非空值,則被拒絕修改。,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,4被參照表中刪除一個元組 當在被參考表中刪除一個元組,如果參考關(guān)系的外碼沒有對應(yīng)值,則可以順利刪除此元組。但是如果參考關(guān)系存在若干元組,其外碼值與被參考關(guān)系刪除元組的主碼值相同,可以有三種不同的策略:,(1)拒絕刪除,(2)級聯(lián)刪除,(3)置空操作,仲愷農(nóng)業(yè)工程學院,計算機科學與工程學院,6.4.3 參照完整性,(1)拒絕刪除 仍以

溫馨提示

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

評論

0/150

提交評論