數(shù)據(jù)庫完整性_第1頁
數(shù)據(jù)庫完整性_第2頁
數(shù)據(jù)庫完整性_第3頁
數(shù)據(jù)庫完整性_第4頁
數(shù)據(jù)庫完整性_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章數(shù)據(jù)庫完整性AnIntroductiontoDatabaseSystem復習:完整性約束條件三類完整性:實體完整性參照完整性用戶自定義的完整性六種約束條件主鍵約束外鍵約束唯一性約束檢查約束默認值約束空值約束AnIntroductiontoDatabaseSystem數(shù)據(jù)完整性

數(shù)據(jù)的完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。完整性VS

安全性(兩個不同的概念)數(shù)據(jù)完整性是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),即防止數(shù)據(jù)庫中存在不正確的數(shù)據(jù)。防范的對象是不合語義的、不正確的數(shù)據(jù)。數(shù)據(jù)安全性是保護數(shù)據(jù)庫防止惡意的破壞和非法的存取。防范的對象是非法用戶和非法操作。AnIntroductiontoDatabaseSystem數(shù)據(jù)庫完整性

為維護數(shù)據(jù)庫的完整性,DBMS必須:1.提供定義完整性約束條件的機制2.提供完整性檢查的方法3.違約處理實體完整性參照完整性用戶自定義的完整性拒絕級聯(lián)設置為空值AnIntroductiontoDatabaseSystem第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性約束命名字句5.5觸發(fā)器5.6小結第一講AnIntroductiontoDatabaseSystem5.1實體完整性5.1.1實體完整性定義回憶定義?關系數(shù)據(jù)庫的實體完整性的定義,有兩種方式:①創(chuàng)建表時:PrimaryKey【單/多屬性構成主鍵問題】②修改表定義時:添加PrimaryKey約束具體實例參照:P152AnIntroductiontoDatabaseSystem5.1實體完整性5.1.2實體完整性檢查和違約處理當對關系定義主碼后,每當用戶程序?qū)颈硖砑佑涗浕蚋轮鞔a鍵值時,RDBMS將按照實體完整性規(guī)則自動檢查記錄的完整性:①主碼值是否唯一,如果不唯一則拒絕此次操作。②主碼的各個屬性(主屬性)是否為空,如果有一個為空則拒絕此次操作。并且現(xiàn)行的RDBMS會給出相應的錯誤提示。AnIntroductiontoDatabaseSystem5.1實體完整性5.1.2實體完整性檢查和違約處理核查記錄主碼值是否唯一的方法:全表掃描,即依次判斷表中的每一條記錄的主碼值是否與即將插入的記錄主碼值重復。(教材P153頁)全表掃描一般情況是十分耗時,尤其在數(shù)據(jù)記錄量較多的情況下。為了避免全表掃描,RDBMS核心一般都在主碼字段自動建立B+樹的聚簇索引,從而提高檢索效率!如何保證?回憶:RDBMS默認會為主碼上建立一個聚簇索引!AnIntroductiontoDatabaseSystem5.2參照完整性5.2.1參照完整性定義5.2.2參照完整性檢查和違約處理關系數(shù)據(jù)庫的參照完整性在創(chuàng)建表或修改表時,使用ForeignKey

短語定義哪些列為外鍵,用References短語指明這些外碼參照哪些表的主碼。示例:P154參照完整性定義完畢,該約束就將相關聯(lián)的兩個表中的相應的元組聯(lián)系起來了,因此為保證數(shù)據(jù)的有效性,必須對相關的更新操作(增、刪、改)進行完整性檢查?;貞浂x?AnIntroductiontoDatabaseSystem5.2參照完整性5.2.2參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(Student表)參照表(SC表)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級連刪除/設置為空值修改主碼值可能破壞參照完整性拒絕/級連修改/設置為空值如果為定義參照完整性違反策略,當違反參照完整性時,系統(tǒng)選擇默認策略;如果想讓系統(tǒng)采用其他策略則必須顯式說明。AnIntroductiontoDatabaseSystem5.2參照完整性5.2.2參照完整性檢查和違約處理參照完整性違約處理策略:1拒絕(NoAction)執(zhí)行該策略一般設置為各個RDBMS的默認策略。2級聯(lián)(Cascade)操作自動刪除或更新參照表的所有相關聯(lián)的記錄。3設置為空值主要涉及參照表中的相應字段是否允許空值的考慮。AnIntroductiontoDatabaseSystem5.2參照完整性舉例:定義成績表,并顯式設置其參照完整性違約策略。AnIntroductiontoDatabaseSystem5.3用戶定義的完整性用戶定義的完整性就是針對某一具體應用的數(shù)據(jù)必須滿足的語義要求。目前的RDBMS都提供了定義和檢查用戶自定義完整的機制,而不必由應用程序承擔。SQLServer中提供完整性機制常用的方法:唯一性約束(Unique)檢查(Check)約束:約束字段只涉及一個表時非常有效默認值約束(Default)空值約束(NotNull)存儲過程和觸發(fā)器:涉及多個表多個字段維護時非常有效AnIntroductiontoDatabaseSystem5.3用戶定義的完整性用戶自定義完整性約束條件的定義用戶自定義完整性約束條件檢查和違約處理說明:(1)如果約束涉及單個屬性列,可以定義在列級,也可定義在表級

(2)如果約束涉及多個屬性列,只能定義在表級拒絕執(zhí)行!AnIntroductiontoDatabaseSystem5.3用戶定義的完整性習題:1定義圖書信息表:Book

BookID:圖書編號、主鍵、Char(8)

BookName

圖書名稱、非空、nvarchar(20)

BookISBN

圖書ISBN號碼、唯一、varchar(18)

Price圖書單價、要求在0~200元之間、decimal(5,2)AnIntroductiontoDatabaseSystem5.3用戶定義的完整性習題:2定義讀者信息表:ReaderRID:讀者編號、主鍵、Char(6)

RName:讀者姓名、非空、nvarchar(10)

RSex:性別(只能取‘男’和‘女’)、nchar(1)

RCardNo:身份證編號(唯一且滿足公認的條件:性別為男,倒數(shù)第2位是單數(shù),否則相反)、char(18)AnIntroductiontoDatabaseSystem5.3用戶定義的完整性習題:3定義借閱信息表:BorrowRID參照讀者信息表的RID取值

BookID

參照圖書信息表的BookID取值

BDate

借閱日期、Datetime

RDate

歸還日期:不能在借閱日期之前假設允許續(xù)借圖書,試分析本表的主鍵,并完成主鍵、外鍵和用戶自定義完整性設置。AnIntroductiontoDatabaseSystem5.4完整性約束命名子句SQL在創(chuàng)建和修改表定義的語句中,提供了完整性約束命名子句Constraint,用來對完整性約束命名。修改表中完整性限制第三章數(shù)據(jù)定義部分:AlterTable

語句的Add/Drop

約束子句個人認為:對于:非空、默認值、唯一約束,這三種約束可直接定義對于:主鍵、外鍵、Check約束、為了便于維護,最好在創(chuàng)建約束時采用約束命名機制。AnIntroductiontoDatabaseSystem5.4完整性約束命名子句約束簡寫_表名_約束的列名約束的命名約定例子:

DF_TableB_age

FK_TableB_pno試說出它們表示的含義?AnIntroductiontoDatabaseSystem5.6觸發(fā)器轉(zhuǎn)入觸發(fā)器專題知識章節(jié)請首先學習SQL語言程序流程控制結構后AnIntroductiontoDatabaseSystem5.6SQL流程控制語句

IF…ELSE語句

While…Continue…Break

Begin…End--語句塊的開始和結束標志用戶在程序設計語言時,常常需要利用各種流程控制語句,改變計算機的執(zhí)行流程,以滿足程序設計的需要。AnIntroductiontoDatabaseSystem5.6SQL流程控制語句

IF…ELSE語句

在程序設計中,如果需要對給定的條件進行判斷,然后根據(jù)條件的真假選擇不同的執(zhí)行路徑時采用該語句。語法格式:

IF

條件表達式

{單個SQL語句或者Begin-End語句塊}[ELSE{單個SQL語句或者Begin-End語句塊}]提示:如果條件表達式中有Select語句,需要用小括號括起來TRUE/FALSEAnIntroductiontoDatabaseSystem5.6SQL流程控制語句

IF…ELSE語句例題:在學生表中查詢姓名為“王琳琳”的學生,如果存在,列示該學生的學號、姓名、性別、出生日期、所屬院系名稱等信息;如果不存在,則打印提示信息:“不存在姓名為王琳琳的學生!”。AnIntroductiontoDatabaseSystem5.6SQL流程控制語句

WHILE…CONTINUE…BREAK語句語法格式:WhileLogical_Expression_1 Begin

語句塊;

[IFLogical_Expression_2 Continue;][IFLogical_Expression_3 Break;] End退出循環(huán)體退出本次循環(huán)學號自動生成循環(huán)更新簡歷數(shù)據(jù)AnIntroductiontoDatabaseSystem5.6SQL流程控

溫馨提示

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

評論

0/150

提交評論