數(shù)據(jù)庫系統(tǒng)原理第五章——完整性控制.ppt_第1頁
數(shù)據(jù)庫系統(tǒng)原理第五章——完整性控制.ppt_第2頁
數(shù)據(jù)庫系統(tǒng)原理第五章——完整性控制.ppt_第3頁
數(shù)據(jù)庫系統(tǒng)原理第五章——完整性控制.ppt_第4頁
數(shù)據(jù)庫系統(tǒng)原理第五章——完整性控制.ppt_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第5章 數(shù)據(jù)庫完整性,5.1 概述 1、定義 數(shù)據(jù)的正確性,有效性和相容性。 (防止不符合語義的數(shù)據(jù)的I/O) 2、功能 1)完整性要求定義; 2)監(jiān)督事務(wù)執(zhí)行,測試是否違反完整性限制條件; 3)若發(fā)生違反情況,則進行相應(yīng)處理(拒絕、報告、糾正)。 5.2 完整性約束條件 1、基本概念 定義 施加于DB中數(shù)據(jù)之上的語義限制條件 約束對象 列級、元組級、關(guān)系級,2, 約束對象狀態(tài) 靜態(tài):反映DB狀態(tài)合理性的約束。 動態(tài):反映DB狀態(tài)變遷的約束。 約束時機(Immediate constraints) (1)立即約束 一條語句執(zhí)行完后立即檢查。 (2)延遲約束(deferred constra

2、ints) 事務(wù)執(zhí)行結(jié)束后檢查。 轉(zhuǎn)帳,從A到B后,帳才能平,才能進行檢查。 2、靜態(tài)列級約束 對一個列的取值域的約束。 數(shù)據(jù)類型約束 類型、長度、單位、精度 如XM為C型,長8位;YL為I型,長3位。 數(shù)據(jù)格式約束 如工作證號前2位表示省,后3位表示縣,后4位表示單位順序號,后5位表示個人順序號。,3, 值域約束 CJ100,NL150,XB=男,女 空值約束 是否允許空值列。 如CJ可為空。 其它約束(如:列的排序、是否唯一等等) 3、靜態(tài)元組約束 對一個(僅一個)元組中各列值間聯(lián)系的約束。 如:總額單價 工齡年齡 4、靜態(tài)關(guān)系約束 對一個關(guān)系中若干元組之間或若干關(guān)系的聯(lián)系的約束。 實體完

3、整性約束; 參照完整性約束; 函數(shù)依賴約束; 統(tǒng)計約束; 如:職工最低工資不能低于本部門職工平均工資的50%。,4,5、動態(tài)列級約束 修改列定義或列值時的約束。 修改定義約束 修改定義時新老值間的約束。 如:將允許空值列改為不允許空值時,若該列值已有空值,則不可修改。 修改值約束 修改時新舊值間的約束。 如年齡不能修改得更小。 6、動態(tài)元組約束 修改元組時新舊值間的約束。 例如新工資不低于原工資+工齡*1.5。 7、動態(tài)關(guān)系約束 施加于關(guān)系上的前后狀態(tài)的約束 一致性 原子性,5,5.3 完整性控制 1、實體完整性(entity integrity) 對關(guān)系模式主屬性施加的完整性控制。 不允許空

4、,在關(guān)系中取值唯一 例: student (XH,XM,XB,YL)XH不能為空且唯一 course(KH,KM)KH不能為空且唯一 Sc(XH,KH,CJ) (XH,KH)不能為空且唯一 Create table student (XH,Char (6) NOT NULL,); 2、參照完整性(referential integrity) 對外碼施加的完整性控制。(回憶第二章定義) 參照關(guān)系:外碼所在關(guān)系,如SC 被參照關(guān)系:主碼(同時又是另一關(guān)系中的外碼)所在關(guān)系,如student,course。 外碼:sc中的XH,KH,6,1)空值情況 為空(SC中XH為空,表示無這個學(xué)生,或無學(xué)號學(xué)

5、生選修了課程,不合應(yīng)用語義) ,或; 對應(yīng)被參照關(guān)系中該元組存在; 是否可為空,據(jù)應(yīng)用語義確定。 DEPT(DH,DM,DD) EMPL(DH,EH,XM) EMPL中DH可為空,表示該職員還未分配到任何部門工作。 2)刪除被參照關(guān)系元組情況 捆綁刪除(cascades) 參照與被參照關(guān)系中相關(guān)者一起刪除。 被參照關(guān)系中外碼元組刪除 例如:刪除99001號學(xué)生(或者01號課程) 刪去student中XH=99001的元組 (刪去course中KH=01的元組) 則捆綁刪除SC中學(xué)號為99001(課號為01)的所有元組 參照關(guān)系中與被參照關(guān)系中碼值對應(yīng)元組刪除,7,可能層層牽連 如:若SC又是另

6、一參照關(guān)系的被參照關(guān)系,則可能又刪除之。 受限刪除(restricted) 參照關(guān)系沒有一個外碼與要刪除的被參照關(guān)系的主碼值相對應(yīng)時才執(zhí)行刪除。 例如:若SC中外碼值XH,無一個與主碼值(Student.XH, course.KH)對應(yīng)時才刪去student、course中相應(yīng)元組。 置空值刪除(nullifies/set null) 刪去被參照關(guān)系中元組; 參照關(guān)系中所有與被參照關(guān)系中已刪去的主碼值相等的外碼值置為空值。 如:刪去部門表中的某個部門,則職員表中原來屬于該部門的職員的所屬部門號置空。,8, 說明 上述三種,選擇哪一種實施,視應(yīng)用需求確定。 如:學(xué)籍管理中,學(xué)生畢業(yè)了,刪去選課及

7、學(xué)生信息,故需捆綁刪除(course不刪)student信息。 DBMS提供相應(yīng)選擇機制。 3)修改被參照關(guān)系主碼值情況 捆綁修改(cascades) 修改被參照關(guān)系中主碼值。 如修改student中的XH=99003改為XH=99020 同時修改參照關(guān)系中相等外碼值。 如:同時SC中所有99003改為99020 可能逐層牽連。,9, 受限修改(restricted) 僅當參照關(guān)系中沒有一個外碼值與被參照關(guān)系中某個元組主碼值相等時才可修改被參照關(guān)系中的該元組主碼值。 如:僅當SC中學(xué)生無99003時,才可修改student中XH=99003。 置空值修改(nullifies) 修改被參照關(guān)系中

8、的主碼值; 將參照關(guān)系中的與該主碼值相等的外碼置為空值。 說明 具體應(yīng)用中,根據(jù)應(yīng)用需求選擇上述方法執(zhí)行。 DBMS提供機制支持用戶選擇。,10,3、用戶定義完整性(integrity of user definition) 1)空值控制 對給定屬性施加不允許空值限制(NOT NULL) 2)單個屬性控制 為:(CJ is Null) OR (CJ BETWEEN 0 AND 100) 3)多屬性控制 如:XB=男 AND YL=0 AND GRADE=100);,11,例3:CREATE TABLE STUDENT (SNO INT PRIMARY KEY, SNAME CHAR(30) N

9、OT NULL, SSEX CHAR(2), SDEPT INT, CHECK (SSEX=女 OR SNAME NOT LIKE Ms.%); 例4:CREATE TABLE TEACHER (ENO INT, ENAME CHAR(30) NOT NULL, SAL INT, DEDUCT INT, CONSTRAINT C1 CHECK (SQL+DEDUCT=1000);,12,例5:ALTER TABLE TEACHER DROP CONSTRAINT C1; ALTER TABLE TEACHER ADD CONSTRAINT C2 CHECK (SAL+DEDUCT=2000 A

10、ND SAL=1000); 例6:域的使用 CREATE DOMAIN GenderDomain CHAR(2) CHECK (VALUE IN(男,女); 或者 CREATE DOMAIN GenderDomain CHAR(2) CONSTRAINT C3 CHECK (VALUE IN(男,女); ssex GenderDomain, 例7:ALTER DOMAIN GenderDomain DROP CONSTRAINT C3;,13,4、ORACLE完整性 1)實體完整性 CREATE TABLE student (XH NUMBER (8), XM VARCHAR(8), YL N

11、UMBER(3), Constraint PK-XH PRIMARY KEY (XH); 一旦定義了主碼,則DBMS自動進行完整性檢查: 主碼不能為空; 主碼值須唯一。,14,2)參照完整性 語句 FOREIGN KEY :指定外碼屬性 REFERENCES:指定外碼對應(yīng)主碼 ON DELETE CASCADE:指定捆綁刪除要求 例:CREATE TABLE SC (XH NUMBER (8),KH NUMBER (3), CJ NUMBER (3), CONSTRAINT FK_SCXH FOREIGN KEY (XH) REFERENCES student (XH) ON DELETE C

12、ASCADE, CONSTRAINT FK_SCKH FOREIGN KEY (KH) REFERENCES course (KH) ON DELETE CASCADE);,15, 說明: SC中外碼為XH,KH。 對應(yīng)student主碼為XH。 對應(yīng)course主碼為KH。 當修改student中XH時,先檢查SC中有無元組XH值與之相等,若有,則不能執(zhí)行該修改;當修改course中KH,先檢查SC中有無元組的KH值與之相等,若有,則不能執(zhí)行該修改。 當刪除student或course某元組時,則先在SC中找到相應(yīng)元組,進行捆綁刪除。 3)用戶定義完整性 列值非空(NOT NULL) 列值唯

13、一(UNIQUE) CREAE TABLE COURSE ( KH NUMBER (3), KM VARCHAR (20) CONSTRAINT U1 UNIQUE, XS NUMBER (2);,16,其中:CONSTRAINT U1 UNIQUE:KM唯一,約束名為U1。 列值范圍限制 例: XB VARCHAR(2) CONSTRAINT CNS_XB1 CHECK(XB IN(男,女); 例: GZ NUMBER(8.2) CONSTRAINT CNS_GZ1 CHECK(GZ1000.00); 例:CRETATE TRIGGER UPDATE-CJ BEFORE INSERT OR

14、UPDATE ON CJ FOR EACH ROW WHEN(:NEW.KH=001) AS BEGIN IF :NEW.CJ50 THEN :NEW.CJ :=50; ENDIF END,17,說明: 利用觸發(fā)器,當對SC中進入插入元組和修改CJ值時,若為001號課程,則CJ50時一律自動改為50分。 定義觸發(fā)器語句為CREATE OR REPLACE TRIGGER。 (先定義后使用) CREATE TRIGGER語句定義觸發(fā)器的約束條件。 一條完整性規(guī)則可以用一個五元組(D,O,A,C,P)來形式化地表示,其中: D: 數(shù)據(jù)對象Data O:引發(fā)動作地操作Operation A:數(shù)據(jù)對象必須滿足的斷言或語義約束Assertion C:選擇A作用的數(shù)據(jù)對象的謂詞Condition P:被觸發(fā)的過程Procedure 例如:教授的工資不得低于1000元。 D教師的工資,O修改或插入,A不低于1000元,C職稱為教授,P拒絕修改。,18,FOR EACH

溫馨提示

  • 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

提交評論